#include <CigiSymbolCircleDefV3_3.h>
Inheritance diagram for CigiSymbolCircleDefV3_3:
Public Member Functions | |
CigiSymbolCircleDefV3_3 (void) | |
virtual | ~CigiSymbolCircleDefV3_3 (void) |
CigiSymbolCircleDefV3_3 (const CigiSymbolCircleDefV3_3 &BaseIn) | |
CigiSymbolCircleDefV3_3 & | operator= (const CigiSymbolCircleDefV3_3 &BaseIn) |
virtual int | Pack (CigiBasePacket *Base, Cigi_uint8 *Buff, void *Spec) const |
virtual int | Unpack (Cigi_uint8 *Buff, bool Swap, void *Spec) |
virtual CigiBaseCircleSymbolData * | AddCircle (void) |
virtual int | RemoveCircle (int CircleIndex, bool bndchk=true) |
Definition at line 51 of file CigiSymbolCircleDefV3_3.h.
CigiSymbolCircleDefV3_3::CigiSymbolCircleDefV3_3 | ( | void | ) |
General Constructor
Definition at line 59 of file CigiSymbolCircleDefV3_3.cpp.
References CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_ID_V3_3, CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_SIZE_V3_3, CigiBaseSymbolCircleDef::DrawingStyle, CigiBaseSymbolCircleDef::Line, CigiBaseSymbolCircleDef::LineWidth, CigiBasePacket::MinorVersion, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseSymbolCircleDef::StipplePattern, CigiBaseSymbolCircleDef::StipplePatternLen, CigiBaseSymbolCircleDef::SymbolID, CigiBaseVariableSizePckt::VariableDataSize, and CigiBasePacket::Version.
00060 { 00061 PacketID = CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_ID_V3_3; 00062 PacketSize = CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_SIZE_V3_3; 00063 Version = 3; 00064 MinorVersion = 3; 00065 VariableDataSize = 0; 00066 00067 SymbolID = 0; 00068 DrawingStyle = Line; 00069 StipplePattern = 0; 00070 LineWidth = 0.0f; 00071 StipplePatternLen = 0.0f; 00072 00073 }
CigiSymbolCircleDefV3_3::~CigiSymbolCircleDefV3_3 | ( | void | ) | [virtual] |
CigiSymbolCircleDefV3_3::CigiSymbolCircleDefV3_3 | ( | const CigiSymbolCircleDefV3_3 & | BaseIn | ) |
Copy Constructor
Definition at line 85 of file CigiSymbolCircleDefV3_3.cpp.
References CIGI_CIRCLE_SYMBOL_DATA_SIZE_V3_3, CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_ID_V3_3, CigiBaseSymbolCircleDef::Circles, CigiBaseSymbolCircleDef::DrawingStyle, CigiBaseSymbolCircleDef::LineWidth, CigiBasePacket::MinorVersion, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseSymbolCircleDef::StipplePattern, CigiBaseSymbolCircleDef::StipplePatternLen, CigiBaseSymbolCircleDef::SymbolID, CigiBaseVariableSizePckt::VariableDataSize, and CigiBasePacket::Version.
00086 : CigiBaseSymbolCircleDef((CigiBaseSymbolCircleDef &)BaseIn) 00087 { 00088 PacketID = CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_ID_V3_3; 00089 PacketSize = CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_ID_V3_3; 00090 Version = 3; 00091 MinorVersion = 3; 00092 00093 VariableDataSize = 0; 00094 00095 SymbolID = BaseIn.SymbolID; 00096 DrawingStyle = BaseIn.DrawingStyle; 00097 StipplePattern = BaseIn.StipplePattern; 00098 LineWidth = BaseIn.LineWidth; 00099 StipplePatternLen = BaseIn.StipplePatternLen; 00100 00101 CigiCircleSymbolDataV3_3 *NewCircle = NULL; 00102 CigiCircleSymbolDataV3_3 *pCircle; 00103 vector<CigiBaseCircleSymbolData *>::const_iterator iCircle; 00104 for(iCircle=BaseIn.Circles.begin();iCircle!=BaseIn.Circles.end();iCircle++) 00105 { 00106 pCircle = (CigiCircleSymbolDataV3_3 *)*iCircle; 00107 if(pCircle != NULL) 00108 { 00109 NewCircle = new CigiCircleSymbolDataV3_3; 00110 *NewCircle = *pCircle; 00111 Circles.push_back((CigiBaseCircleSymbolData *)NewCircle); 00112 VariableDataSize += CIGI_CIRCLE_SYMBOL_DATA_SIZE_V3_3; 00113 } 00114 } 00115 }
CigiBaseCircleSymbolData * CigiSymbolCircleDefV3_3::AddCircle | ( | void | ) | [virtual] |
A virtual Create Circle function. This will create a circle object and insert a pointer to the created circle object into the Circle Vector.
Implements CigiBaseSymbolCircleDef.
Definition at line 285 of file CigiSymbolCircleDefV3_3.cpp.
References CIGI_CIRCLE_SYMBOL_DATA_SIZE_V3_3, CigiBaseSymbolCircleDef::Circles, and CigiBaseVariableSizePckt::VariableDataSize.
00286 { 00287 CigiCircleSymbolDataV3_3 *NewCircle = NULL; 00288 int Cnt = Circles.size(); 00289 00290 if(Cnt < 10) 00291 { 00292 NewCircle = new CigiCircleSymbolDataV3_3; 00293 Circles.push_back((CigiBaseCircleSymbolData *)NewCircle); 00294 VariableDataSize += CIGI_CIRCLE_SYMBOL_DATA_SIZE_V3_3; 00295 } 00296 00297 return((CigiBaseCircleSymbolData *)NewCircle); 00298 }
CigiSymbolCircleDefV3_3 & CigiSymbolCircleDefV3_3::operator= | ( | const CigiSymbolCircleDefV3_3 & | BaseIn | ) |
Assignment operator
Definition at line 120 of file CigiSymbolCircleDefV3_3.cpp.
References CIGI_CIRCLE_SYMBOL_DATA_SIZE_V3_3, CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_ID_V3_3, CigiBaseSymbolCircleDef::Circles, CigiBaseSymbolCircleDef::DrawingStyle, CigiBaseSymbolCircleDef::LineWidth, CigiBasePacket::MinorVersion, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseSymbolCircleDef::StipplePattern, CigiBaseSymbolCircleDef::StipplePatternLen, CigiBaseSymbolCircleDef::SymbolID, CigiBaseVariableSizePckt::VariableDataSize, and CigiBasePacket::Version.
00121 { 00122 PacketID = CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_ID_V3_3; 00123 PacketSize = CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_ID_V3_3; 00124 Version = 3; 00125 MinorVersion = 3; 00126 00127 CigiBaseCircleSymbolData *pbCircle; 00128 vector<CigiBaseCircleSymbolData *>::iterator ibCircle; 00129 for(ibCircle=Circles.begin();ibCircle!=Circles.end();ibCircle++) 00130 { 00131 pbCircle = *ibCircle; 00132 if(pbCircle != NULL) 00133 delete pbCircle; 00134 } 00135 Circles.clear(); 00136 VariableDataSize = 0; 00137 00138 SymbolID = BaseIn.SymbolID; 00139 DrawingStyle = BaseIn.DrawingStyle; 00140 StipplePattern = BaseIn.StipplePattern; 00141 LineWidth = BaseIn.LineWidth; 00142 StipplePatternLen = BaseIn.StipplePatternLen; 00143 00144 CigiCircleSymbolDataV3_3 *NewCircle = NULL; 00145 CigiCircleSymbolDataV3_3 *pCircle; 00146 vector<CigiBaseCircleSymbolData *>::const_iterator iCircle; 00147 for(iCircle=BaseIn.Circles.begin();iCircle!=BaseIn.Circles.end();iCircle++) 00148 { 00149 pCircle = (CigiCircleSymbolDataV3_3 *)*iCircle; 00150 if(pCircle != NULL) 00151 { 00152 NewCircle = new CigiCircleSymbolDataV3_3; 00153 *NewCircle = *pCircle; 00154 Circles.push_back((CigiBaseCircleSymbolData *)NewCircle); 00155 VariableDataSize += CIGI_CIRCLE_SYMBOL_DATA_SIZE_V3_3; 00156 } 00157 } 00158 00159 return(*this); 00160 }
int CigiSymbolCircleDefV3_3::Pack | ( | CigiBasePacket * | Base, | |
Cigi_uint8 * | Buff, | |||
void * | Spec | |||
) | const [virtual] |
A virtual Pack function.
Base | - A pointer to the instance of the packet to be packed. (Downcast to CigiBasePacket) | |
Buff | - A pointer to the current pack point. | |
Spec | - A pointer to special data. |
Implements CigiBaseSymbolCircleDef.
Definition at line 171 of file CigiSymbolCircleDefV3_3.cpp.
References PackPointerUnion::c, CigiBaseSymbolCircleDef::Circles, CigiBaseSymbolCircleDef::DrawingStyle, PackPointerUnion::f, CigiBaseSymbolCircleDef::LineWidth, CigiCircleSymbolDataV3_3::Pack(), CigiBasePacket::PacketID, CigiBasePacket::PacketSize, PackPointerUnion::s, CigiBaseSymbolCircleDef::StipplePattern, CigiBaseSymbolCircleDef::StipplePatternLen, CigiBaseSymbolCircleDef::SymbolID, and CigiBaseVariableSizePckt::VariableDataSize.
00172 { 00173 PackPointer CDta; 00174 00175 CigiSymbolCircleDefV3_3 * Data = 00176 ( CigiSymbolCircleDefV3_3 *)Base; 00177 00178 CDta.c = Buff; 00179 00180 *CDta.c++ = PacketID; 00181 *CDta.c++ = (PacketSize + Data->VariableDataSize); 00182 00183 *CDta.s++ = Data->SymbolID; 00184 00185 *CDta.c++ = (Data->DrawingStyle != 0) ? 1 : 0; 00186 00187 *CDta.c++ = 0; 00188 00189 *CDta.s++ = Data->StipplePattern; 00190 *CDta.f++ = Data->LineWidth; 00191 *CDta.f++ = Data->StipplePatternLen; 00192 00193 int Cnt; 00194 CigiCircleSymbolDataV3_3 *pCircle; 00195 vector<CigiBaseCircleSymbolData *>::iterator iCircle; 00196 for(iCircle=Data->Circles.begin();iCircle!=Data->Circles.end();iCircle++) 00197 { 00198 pCircle = (CigiCircleSymbolDataV3_3 *)*iCircle; 00199 if(pCircle != NULL) 00200 { 00201 Cnt = pCircle->Pack((CigiBaseCircleSymbolData *)pCircle,CDta.c); 00202 CDta.c += Cnt; 00203 } 00204 } 00205 00206 return(PacketSize + Data->VariableDataSize); 00207 00208 }
int CigiSymbolCircleDefV3_3::RemoveCircle | ( | int | CircleIndex, | |
bool | bndchk = true | |||
) | [virtual] |
A virtual Remove Circle function. This will remove a Circle object from the Circle Vector.
CircleIndex | - Specifies the index of the desired circle. | |
bndchk | - Enables (true) or disables (false) bounds checking. |
Implements CigiBaseSymbolCircleDef.
Definition at line 303 of file CigiSymbolCircleDefV3_3.cpp.
References CIGI_CIRCLE_SYMBOL_DATA_SIZE_V3_3, CIGI_ERROR_VALUE_OUT_OF_RANGE, CIGI_SUCCESS, CigiBaseSymbolCircleDef::Circles, and CigiBaseVariableSizePckt::VariableDataSize.
00304 { 00305 int stat = CIGI_SUCCESS; 00306 00307 int Cnt = Circles.size(); 00308 00309 if((CircleIndex >= 0) && (CircleIndex < Cnt)) 00310 { 00311 vector<CigiBaseCircleSymbolData *>::iterator iCircle = Circles.begin(); 00312 00313 iCircle += CircleIndex; 00314 00315 CigiCircleSymbolDataV3_3 *pCircle = 00316 (CigiCircleSymbolDataV3_3 *)*iCircle; 00317 if(pCircle != NULL) 00318 delete pCircle; 00319 00320 Circles.erase(iCircle); 00321 00322 VariableDataSize -= CIGI_CIRCLE_SYMBOL_DATA_SIZE_V3_3; 00323 if(VariableDataSize < 0) 00324 VariableDataSize = 0; 00325 00326 } 00327 else 00328 { 00329 #ifndef CIGI_NO_BND_CHK 00330 if(bndchk) 00331 { 00332 #ifndef CIGI_NO_EXCEPT 00333 throw CigiValueOutOfRangeException("CircleIndex", (int)CircleIndex,0,Cnt); 00334 #endif 00335 stat = CIGI_ERROR_VALUE_OUT_OF_RANGE; 00336 } 00337 #endif 00338 } 00339 00340 return(stat); 00341 }
int CigiSymbolCircleDefV3_3::Unpack | ( | Cigi_uint8 * | Buff, | |
bool | Swap, | |||
void * | Spec | |||
) | [virtual] |
A virtual Unpack function.
Buff | - A pointer to the current pack point. | |
Swap | - N/A for V1 & V2 | |
Spec | - A pointer to special data. |
Implements CigiBaseSymbolCircleDef.
Definition at line 213 of file CigiSymbolCircleDefV3_3.cpp.
References PackPointerUnion::c, CIGI_CIRCLE_SYMBOL_DATA_SIZE_V3_3, CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_SIZE_V3_3, CigiSwap2(), CigiSwap4(), CigiBaseSymbolCircleDef::Circles, CigiBaseSymbolCircleDef::DrawingStyle, PackPointerUnion::f, CigiBaseSymbolCircleDef::Fill, CigiBaseSymbolCircleDef::Line, CigiBaseSymbolCircleDef::LineWidth, CigiBasePacket::PacketSize, PackPointerUnion::s, CigiBaseSymbolCircleDef::StipplePattern, CigiBaseSymbolCircleDef::StipplePatternLen, CigiBaseSymbolCircleDef::SymbolID, CigiBaseCircleSymbolData::Unpack(), and CigiBaseVariableSizePckt::VariableDataSize.
00214 { 00215 PackPointer CDta; 00216 unsigned char HDta = 0; 00217 00218 CDta.c = Buff; 00219 00220 // Clear the current Circle Vector 00221 CigiBaseCircleSymbolData *pbCircle; 00222 vector<CigiBaseCircleSymbolData *>::iterator ibCircle; 00223 for(ibCircle=Circles.begin();ibCircle!=Circles.end();ibCircle++) 00224 { 00225 pbCircle = *ibCircle; 00226 if(pbCircle != NULL) 00227 delete pbCircle; 00228 } 00229 Circles.clear(); 00230 VariableDataSize = 0; 00231 00232 CDta.c++; // Step over packet id 00233 00234 // Determine variable data size; 00235 int PcktRemain = *CDta.c++; 00236 PcktRemain -= CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_SIZE_V3_3; 00237 VariableDataSize = PcktRemain; 00238 00239 if(!Swap) 00240 { 00241 SymbolID = *CDta.s++; 00242 HDta = *CDta.c++; 00243 CDta.c++; 00244 StipplePattern = *CDta.s++; 00245 LineWidth = *CDta.f++; 00246 StipplePatternLen = *CDta.f++; 00247 } 00248 else 00249 { 00250 CigiSwap2(&SymbolID, CDta.s++); 00251 HDta = *CDta.c++; 00252 CDta.c++; 00253 CigiSwap2(&StipplePattern, CDta.s++); 00254 CigiSwap4(&LineWidth, CDta.f++); 00255 CigiSwap4(&StipplePatternLen, CDta.f++); 00256 } 00257 00258 DrawingStyle = (HDta != 0) ? Fill : Line ; 00259 00260 // Unpack Circles 00261 int cnt = 0; 00262 CigiCircleSymbolDataV3_3 *pCircle; 00263 while(PcktRemain >= CIGI_CIRCLE_SYMBOL_DATA_SIZE_V3_3) 00264 { 00265 pCircle = new CigiCircleSymbolDataV3_3; 00266 Circles.push_back((CigiBaseCircleSymbolData *)pCircle); 00267 cnt = pCircle->Unpack(CDta.c,Swap); 00268 PcktRemain -= cnt; 00269 CDta.c += cnt; 00270 } 00271 00272 return(PacketSize + VariableDataSize); 00273 00274 }