CigiSymbolCtrlV3_3.cpp

Go to the documentation of this file.
00001 
00043 #define _EXPORT_CCL_
00044 
00045 
00046 #include "CigiSymbolCtrlV3_3.h"
00047 #include "CigiSwapping.h"
00048 #include "CigiExceptions.h"
00049 
00050 
00051 
00052 // ====================================================================
00053 // Construction/Destruction
00054 // ====================================================================
00055 
00056 // ================================================
00057 // CigiBaseEntityCtrl
00058 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00059 CigiSymbolCtrlV3_3::CigiSymbolCtrlV3_3(void)
00060 {
00061    PacketID = CIGI_SYMBOL_CONTROL_PACKET_ID_V3_3;
00062    PacketSize = CIGI_SYMBOL_CONTROL_PACKET_SIZE_V3_3;
00063    Version = 3;
00064    MinorVersion = 3;
00065 
00066    SymbolID = 0;
00067    SymbolState = CigiBaseSymbolCtrl::Hidden;
00068    AttachState = CigiBaseSymbolCtrl::Detach;
00069    FlashCtrl = CigiBaseSymbolCtrl::Continue;
00070    InheritColor = CigiBaseSymbolCtrl::NotInherit;
00071    ParentSymbolID = 0;
00072    SurfaceID = 0;
00073    Layer = 0;
00074    FlashDutyCycle = 0;
00075    FlashPeriod = 0.0;
00076    UPosition = 0.0;
00077    VPosition = 0.0;
00078    Rotation = 0.0;
00079    Red = 0;
00080    Green = 0;
00081    Blue = 0;
00082    Alpha = 0;
00083    ScaleU = 0.0;
00084    ScaleV = 0.0;
00085 
00086 }
00087 
00088 // ================================================
00089 // ~CigiBaseEntityCtrl
00090 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00091 CigiSymbolCtrlV3_3::~CigiSymbolCtrlV3_3(void)
00092 {
00093 }
00094 
00095 
00096 
00097 // ====================================================================
00098 // Pack and Unpack
00099 // ====================================================================
00100 
00101 // ================================================
00102 // Pack
00103 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00104 int CigiSymbolCtrlV3_3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00105 {
00106    PackPointer CDta;
00107 
00108    CigiSymbolCtrlV3_3 * Data =
00109       ( CigiSymbolCtrlV3_3 *)Base;
00110 
00111    CDta.c = Buff;
00112 
00113    *CDta.c++ = PacketID;
00114    *CDta.c++ = PacketSize;
00115 
00116    *CDta.s++ = Data->SymbolID;
00117 
00118    unsigned char HDta = 0;
00119    HDta |= (Data->SymbolState & 0x03);
00120    HDta |= ((Data->AttachState << 2) & 0x04);
00121    HDta |= ((Data->FlashCtrl << 3) & 0x08);
00122    HDta |= ((Data->InheritColor << 4) & 0x10);
00123    *CDta.c++ = HDta;
00124 
00125    *CDta.c++ = 0;
00126 
00127    *CDta.s++ = Data->ParentSymbolID;
00128    *CDta.s++ = Data->SurfaceID;
00129    *CDta.c++ = Data->Layer;
00130    *CDta.c++ = Data->FlashDutyCycle;
00131    *CDta.f++ = Data->FlashPeriod;
00132    *CDta.f++ = Data->UPosition;
00133    *CDta.f++ = Data->VPosition;
00134    *CDta.f++ = Data->Rotation;
00135    *CDta.c++ = Data->Red;
00136    *CDta.c++ = Data->Green;
00137    *CDta.c++ = Data->Blue;
00138    *CDta.c++ = Data->Alpha;
00139    *CDta.f++ = Data->ScaleU;
00140    *CDta.f++ = Data->ScaleV;
00141 
00142 
00143    return(PacketSize);
00144 
00145 }
00146 
00147 // ================================================
00148 // Unpack
00149 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
00150 int CigiSymbolCtrlV3_3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00151 {
00152    PackPointer CDta;
00153    unsigned char HDta = 0;
00154 
00155    CDta.c = Buff;
00156 
00157    CDta.c += 2;  // Step over packet id and size
00158 
00159    if(!Swap)
00160    {
00161 
00162       SymbolID = *CDta.s++;
00163 
00164       HDta = *CDta.c++;
00165 
00166       CDta.c++;
00167 
00168       ParentSymbolID = *CDta.s++;
00169       SurfaceID = *CDta.s++;
00170       Layer = *CDta.c++;
00171       FlashDutyCycle = *CDta.c++;
00172       FlashPeriod = *CDta.f++;
00173       UPosition = *CDta.f++;
00174       VPosition = *CDta.f++;
00175       Rotation = *CDta.f++;
00176       Red = *CDta.c++;
00177       Green = *CDta.c++;
00178       Blue = *CDta.c++;
00179       Alpha = *CDta.c++;
00180       ScaleU = *CDta.f++;
00181       ScaleV = *CDta.f++;
00182 
00183    }
00184    else
00185    {
00186 
00187       CigiSwap2(&SymbolID, CDta.s++);
00188 
00189       HDta = *CDta.c++;
00190 
00191       CDta.c++;
00192 
00193       CigiSwap2(&ParentSymbolID, CDta.s++);
00194       CigiSwap2(&SurfaceID, CDta.s++);
00195       Layer = *CDta.c++;
00196       FlashDutyCycle = *CDta.c++;
00197       CigiSwap4(&FlashPeriod, CDta.f++);
00198       CigiSwap4(&UPosition, CDta.f++);
00199       CigiSwap4(&VPosition, CDta.f++);
00200       CigiSwap4(&Rotation, CDta.f++);
00201       Red = *CDta.c++;
00202       Green = *CDta.c++;
00203       Blue = *CDta.c++;
00204       Alpha = *CDta.c++;
00205       CigiSwap4(&ScaleU, CDta.f++);
00206       CigiSwap4(&ScaleV, CDta.f++);
00207 
00208    }
00209 
00210    SymbolState = (SymbolStateGrp)(HDta & 0x03);
00211    AttachState = (AttachStateGrp)((HDta >> 2) & 0x01);
00212    FlashCtrl = (FlashCtrlGrp)((HDta >> 3) & 0x01);
00213    InheritColor = (InheritColorGrp)((HDta >> 4) & 0x01);
00214 
00215    return(PacketSize);
00216 
00217 }
00218 
00219 
00220 
00221 

Generated on Wed Apr 29 08:59:59 2009 for CCL by  doxygen 1.4.7