#include <CigiSymbolLineDefV3_3.h>
Inheritance diagram for CigiSymbolLineDefV3_3:
Public Member Functions | |
CigiSymbolLineDefV3_3 (void) | |
virtual | ~CigiSymbolLineDefV3_3 (void) |
CigiSymbolLineDefV3_3 (const CigiSymbolLineDefV3_3 &BaseIn) | |
CigiSymbolLineDefV3_3 & | operator= (const CigiSymbolLineDefV3_3 &BaseIn) |
virtual int | Pack (CigiBasePacket *Base, Cigi_uint8 *Buff, void *Spec) const |
virtual int | Unpack (Cigi_uint8 *Buff, bool Swap, void *Spec) |
virtual CigiBaseVertexSymbolData * | AddVertex (void) |
virtual int | RemoveVertex (int VertexIndex, bool bndchk=true) |
Definition at line 51 of file CigiSymbolLineDefV3_3.h.
CigiSymbolLineDefV3_3::CigiSymbolLineDefV3_3 | ( | void | ) |
General Constructor
Definition at line 56 of file CigiSymbolLineDefV3_3.cpp.
References CIGI_SYMBOL_LINE_DEFINITION_PACKET_ID_V3_3, CIGI_SYMBOL_LINE_DEFINITION_PACKET_SIZE_V3_3, CigiBaseSymbolLineDef::LineWidth, CigiBasePacket::MinorVersion, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseSymbolLineDef::Points, CigiBaseSymbolLineDef::Primitive, CigiBaseSymbolLineDef::StipplePattern, CigiBaseSymbolLineDef::StipplePatternLen, CigiBaseSymbolLineDef::SymbolID, CigiBaseVariableSizePckt::VariableDataSize, and CigiBasePacket::Version.
00057 { 00058 PacketID = CIGI_SYMBOL_LINE_DEFINITION_PACKET_ID_V3_3; 00059 PacketSize = CIGI_SYMBOL_LINE_DEFINITION_PACKET_SIZE_V3_3; 00060 Version = 3; 00061 MinorVersion = 3; 00062 VariableDataSize = 0; 00063 00064 SymbolID = 0; 00065 Primitive = Points; 00066 StipplePattern = 0; 00067 LineWidth = 0.0f; 00068 StipplePatternLen = 0.0f; 00069 00070 }
CigiSymbolLineDefV3_3::~CigiSymbolLineDefV3_3 | ( | void | ) | [virtual] |
CigiSymbolLineDefV3_3::CigiSymbolLineDefV3_3 | ( | const CigiSymbolLineDefV3_3 & | BaseIn | ) |
Copy Constructor
Definition at line 82 of file CigiSymbolLineDefV3_3.cpp.
References CIGI_SYMBOL_LINE_DEFINITION_PACKET_ID_V3_3, CIGI_VERTEX_SYMBOL_DATA_SIZE_V3_3, CigiBaseSymbolLineDef::LineWidth, CigiBasePacket::MinorVersion, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseSymbolLineDef::Primitive, CigiBaseSymbolLineDef::StipplePattern, CigiBaseSymbolLineDef::StipplePatternLen, CigiBaseSymbolLineDef::SymbolID, CigiBaseVariableSizePckt::VariableDataSize, CigiBasePacket::Version, and CigiBaseSymbolLineDef::Vertices.
00083 : CigiBaseSymbolLineDef((CigiBaseSymbolLineDef &)BaseIn) 00084 { 00085 PacketID = CIGI_SYMBOL_LINE_DEFINITION_PACKET_ID_V3_3; 00086 PacketSize = CIGI_SYMBOL_LINE_DEFINITION_PACKET_ID_V3_3; 00087 Version = 3; 00088 MinorVersion = 3; 00089 00090 VariableDataSize = 0; 00091 00092 SymbolID = BaseIn.SymbolID; 00093 Primitive = BaseIn.Primitive; 00094 StipplePattern = BaseIn.StipplePattern; 00095 LineWidth = BaseIn.LineWidth; 00096 StipplePatternLen = BaseIn.StipplePatternLen; 00097 00098 CigiVertexSymbolDataV3_3 *NewVertex = NULL; 00099 CigiVertexSymbolDataV3_3 *pVtx; 00100 vector<CigiBaseVertexSymbolData *>::const_iterator iVtx; 00101 for(iVtx=BaseIn.Vertices.begin();iVtx!=BaseIn.Vertices.end();iVtx++) 00102 { 00103 pVtx = (CigiVertexSymbolDataV3_3 *)*iVtx; 00104 if(pVtx != NULL) 00105 { 00106 NewVertex = new CigiVertexSymbolDataV3_3; 00107 *NewVertex = *pVtx; 00108 Vertices.push_back((CigiBaseVertexSymbolData *)NewVertex); 00109 VariableDataSize += CIGI_VERTEX_SYMBOL_DATA_SIZE_V3_3; 00110 } 00111 } 00112 }
CigiBaseVertexSymbolData * CigiSymbolLineDefV3_3::AddVertex | ( | void | ) | [virtual] |
A virtual Create Vertex function. This will create a Vertex object and insert a pointer to that created vertex into the Vertex Vector.
Implements CigiBaseSymbolLineDef.
Definition at line 282 of file CigiSymbolLineDefV3_3.cpp.
References CIGI_VERTEX_SYMBOL_DATA_SIZE_V3_3, CigiBaseVariableSizePckt::VariableDataSize, and CigiBaseSymbolLineDef::Vertices.
00283 { 00284 CigiVertexSymbolDataV3_3 *NewVertex = NULL; 00285 int Cnt = Vertices.size(); 00286 00287 if(Cnt < 29) 00288 { 00289 NewVertex = new CigiVertexSymbolDataV3_3; 00290 Vertices.push_back((CigiBaseVertexSymbolData *)NewVertex); 00291 VariableDataSize += CIGI_VERTEX_SYMBOL_DATA_SIZE_V3_3; 00292 } 00293 00294 return((CigiBaseVertexSymbolData *)NewVertex); 00295 }
CigiSymbolLineDefV3_3 & CigiSymbolLineDefV3_3::operator= | ( | const CigiSymbolLineDefV3_3 & | BaseIn | ) |
Assignment operator
Definition at line 117 of file CigiSymbolLineDefV3_3.cpp.
References CIGI_SYMBOL_LINE_DEFINITION_PACKET_ID_V3_3, CIGI_VERTEX_SYMBOL_DATA_SIZE_V3_3, CigiBaseSymbolLineDef::LineWidth, CigiBasePacket::MinorVersion, CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseSymbolLineDef::Primitive, CigiBaseSymbolLineDef::StipplePattern, CigiBaseSymbolLineDef::StipplePatternLen, CigiBaseSymbolLineDef::SymbolID, CigiBaseVariableSizePckt::VariableDataSize, CigiBasePacket::Version, and CigiBaseSymbolLineDef::Vertices.
00118 { 00119 PacketID = CIGI_SYMBOL_LINE_DEFINITION_PACKET_ID_V3_3; 00120 PacketSize = CIGI_SYMBOL_LINE_DEFINITION_PACKET_ID_V3_3; 00121 Version = 3; 00122 MinorVersion = 3; 00123 00124 CigiBaseVertexSymbolData *pbVertex; 00125 vector<CigiBaseVertexSymbolData *>::iterator ibVertex; 00126 for(ibVertex=Vertices.begin();ibVertex!=Vertices.end();ibVertex++) 00127 { 00128 pbVertex = *ibVertex; 00129 if(pbVertex != NULL) 00130 delete pbVertex; 00131 } 00132 Vertices.clear(); 00133 VariableDataSize = 0; 00134 00135 SymbolID = BaseIn.SymbolID; 00136 Primitive = BaseIn.Primitive; 00137 StipplePattern = BaseIn.StipplePattern; 00138 LineWidth = BaseIn.LineWidth; 00139 StipplePatternLen = BaseIn.StipplePatternLen; 00140 00141 CigiVertexSymbolDataV3_3 *NewVertex = NULL; 00142 CigiVertexSymbolDataV3_3 *pVtx; 00143 vector<CigiBaseVertexSymbolData *>::const_iterator iVtx; 00144 for(iVtx=BaseIn.Vertices.begin();iVtx!=BaseIn.Vertices.end();iVtx++) 00145 { 00146 pVtx = (CigiVertexSymbolDataV3_3 *)*iVtx; 00147 if(pVtx != NULL) 00148 { 00149 NewVertex = new CigiVertexSymbolDataV3_3; 00150 *NewVertex = *pVtx; 00151 Vertices.push_back((CigiBaseVertexSymbolData *)NewVertex); 00152 VariableDataSize += CIGI_VERTEX_SYMBOL_DATA_SIZE_V3_3; 00153 } 00154 } 00155 00156 return(*this); 00157 }
int CigiSymbolLineDefV3_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 CigiBaseSymbolLineDef.
Definition at line 168 of file CigiSymbolLineDefV3_3.cpp.
References PackPointerUnion::c, PackPointerUnion::f, CigiBaseSymbolLineDef::LineWidth, CigiVertexSymbolDataV3_3::Pack(), CigiBasePacket::PacketID, CigiBasePacket::PacketSize, CigiBaseSymbolLineDef::Primitive, PackPointerUnion::s, CigiBaseSymbolLineDef::StipplePattern, CigiBaseSymbolLineDef::StipplePatternLen, CigiBaseSymbolLineDef::SymbolID, CigiBaseVariableSizePckt::VariableDataSize, and CigiBaseSymbolLineDef::Vertices.
00169 { 00170 PackPointer CDta; 00171 00172 CigiSymbolLineDefV3_3 * Data = 00173 ( CigiSymbolLineDefV3_3 *)Base; 00174 00175 CDta.c = Buff; 00176 00177 *CDta.c++ = PacketID; 00178 *CDta.c++ = (PacketSize + Data->VariableDataSize); 00179 00180 *CDta.s++ = Data->SymbolID; 00181 00182 *CDta.c++ = (Cigi_uint8)(Data->Primitive & 0x0f); 00183 00184 *CDta.c++ = 0; 00185 00186 *CDta.s++ = Data->StipplePattern; 00187 *CDta.f++ = Data->LineWidth; 00188 *CDta.f++ = Data->StipplePatternLen; 00189 00190 int Cnt; 00191 CigiVertexSymbolDataV3_3 *pVtx; 00192 vector<CigiBaseVertexSymbolData *>::iterator iVtx; 00193 for(iVtx=Data->Vertices.begin();iVtx!=Data->Vertices.end();iVtx++) 00194 { 00195 pVtx = (CigiVertexSymbolDataV3_3 *)*iVtx; 00196 if(pVtx != NULL) 00197 { 00198 Cnt = pVtx->Pack((CigiBaseVertexSymbolData *)pVtx,CDta.c); 00199 CDta.c += Cnt; 00200 } 00201 } 00202 00203 return(PacketSize + Data->VariableDataSize); 00204 00205 }
int CigiSymbolLineDefV3_3::RemoveVertex | ( | int | VertexIndex, | |
bool | bndchk = true | |||
) | [virtual] |
A virtual Remove Vertex function. This will remove a Vertex object from the Vertex Vector.
VertexIndex | - Specifies the index of the desired vertex | |
bndchk | - Enables (true) or disables (false) bounds checking. |
Implements CigiBaseSymbolLineDef.
Definition at line 300 of file CigiSymbolLineDefV3_3.cpp.
References CIGI_ERROR_VALUE_OUT_OF_RANGE, CIGI_SUCCESS, CIGI_VERTEX_SYMBOL_DATA_SIZE_V3_3, CigiBaseVariableSizePckt::VariableDataSize, and CigiBaseSymbolLineDef::Vertices.
00301 { 00302 int stat = CIGI_SUCCESS; 00303 00304 int Cnt = Vertices.size(); 00305 00306 if((VertexIndex >= 0) && (VertexIndex < Cnt)) 00307 { 00308 vector<CigiBaseVertexSymbolData *>::iterator iVtx = Vertices.begin(); 00309 00310 iVtx += VertexIndex; 00311 00312 CigiVertexSymbolDataV3_3 *pVtx = 00313 (CigiVertexSymbolDataV3_3 *)*iVtx; 00314 if(pVtx != NULL) 00315 delete pVtx; 00316 00317 Vertices.erase(iVtx); 00318 00319 VariableDataSize -= CIGI_VERTEX_SYMBOL_DATA_SIZE_V3_3; 00320 if(VariableDataSize < 0) 00321 VariableDataSize = 0; 00322 00323 } 00324 else 00325 { 00326 #ifndef CIGI_NO_BND_CHK 00327 if(bndchk) 00328 { 00329 #ifndef CIGI_NO_EXCEPT 00330 throw CigiValueOutOfRangeException("VertexIndex", (int)VertexIndex,0,Cnt); 00331 #endif 00332 stat = CIGI_ERROR_VALUE_OUT_OF_RANGE; 00333 } 00334 #endif 00335 } 00336 00337 return(stat); 00338 }
int CigiSymbolLineDefV3_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 CigiBaseSymbolLineDef.
Definition at line 210 of file CigiSymbolLineDefV3_3.cpp.
References PackPointerUnion::c, CIGI_SYMBOL_LINE_DEFINITION_PACKET_SIZE_V3_3, CIGI_VERTEX_SYMBOL_DATA_SIZE_V3_3, CigiSwap2(), CigiSwap4(), PackPointerUnion::f, CigiBaseSymbolLineDef::LineWidth, CigiBasePacket::PacketSize, CigiBaseSymbolLineDef::Primitive, PackPointerUnion::s, CigiBaseSymbolLineDef::StipplePattern, CigiBaseSymbolLineDef::StipplePatternLen, CigiBaseSymbolLineDef::SymbolID, CigiBaseVertexSymbolData::Unpack(), CigiBaseVariableSizePckt::VariableDataSize, and CigiBaseSymbolLineDef::Vertices.
00211 { 00212 PackPointer CDta; 00213 unsigned char HDta = 0; 00214 00215 CDta.c = Buff; 00216 00217 // Clear the current Vertex Vector 00218 CigiBaseVertexSymbolData *pbVtx; 00219 vector<CigiBaseVertexSymbolData *>::iterator ibVtx; 00220 for(ibVtx=Vertices.begin();ibVtx!=Vertices.end();ibVtx++) 00221 { 00222 pbVtx = *ibVtx; 00223 if(pbVtx != NULL) 00224 delete pbVtx; 00225 } 00226 Vertices.clear(); 00227 VariableDataSize = 0; 00228 00229 CDta.c++; // Step over packet id 00230 00231 // Determine variable data size; 00232 int PcktRemain = *CDta.c++; 00233 PcktRemain -= CIGI_SYMBOL_LINE_DEFINITION_PACKET_SIZE_V3_3; 00234 VariableDataSize = PcktRemain; 00235 00236 if(!Swap) 00237 { 00238 SymbolID = *CDta.s++; 00239 HDta = *CDta.c++; 00240 CDta.c++; 00241 StipplePattern = *CDta.s++; 00242 LineWidth = *CDta.f++; 00243 StipplePatternLen = *CDta.f++; 00244 } 00245 else 00246 { 00247 CigiSwap2(&SymbolID, CDta.s++); 00248 HDta = *CDta.c++; 00249 CDta.c++; 00250 CigiSwap2(&StipplePattern, CDta.s++); 00251 CigiSwap4(&LineWidth, CDta.f++); 00252 CigiSwap4(&StipplePatternLen, CDta.f++); 00253 } 00254 00255 Primitive = (PrimitiveGrp)(HDta & 0x0f); 00256 00257 // Unpack Vertices 00258 int cnt = 0; 00259 CigiVertexSymbolDataV3_3 *pVtx; 00260 while(PcktRemain >= CIGI_VERTEX_SYMBOL_DATA_SIZE_V3_3) 00261 { 00262 pVtx = new CigiVertexSymbolDataV3_3; 00263 Vertices.push_back((CigiBaseVertexSymbolData *)pVtx); 00264 cnt = pVtx->Unpack(CDta.c,Swap); 00265 PcktRemain -= cnt; 00266 CDta.c += cnt; 00267 } 00268 00269 return(PacketSize + VariableDataSize); 00270 00271 }