00001
00039 #if !defined(_CIGI_BASE_SYMBOL_CIRCLE_DEF_INCLUDED_)
00040 #define _CIGI_BASE_SYMBOL_CIRCLE_DEF_INCLUDED_
00041
00042
00043 #include "CigiBaseVariableSizePckt.h"
00044 #include "CigiBaseCircleSymbolData.h"
00045 #include <vector>
00046
00047
00048
00049
00050
00051
00052 #define CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_ID_V3_3 31
00053 #define CIGI_SYMBOL_CIRCLE_DEFINITION_PACKET_SIZE_V3_3 16
00054
00055
00056 class CigiSymbolCircleDefV3_3;
00057
00058
00059
00062 class CIGI_SPEC CigiBaseSymbolCircleDef :
00063 public CigiBaseVariableSizePckt
00064 {
00065
00066 friend class CigiSymbolCircleDefV3_3;
00067
00068 public:
00069
00070
00071
00075 enum DrawingStyleGrp
00076 {
00077 Line=0,
00078 Fill=1
00079 };
00080
00081
00082
00083
00084
00087 CigiBaseSymbolCircleDef(void);
00088
00089
00092 virtual ~CigiBaseSymbolCircleDef(void);
00093
00094
00097 CigiBaseSymbolCircleDef(const CigiBaseSymbolCircleDef &BaseIn);
00098
00099
00102 CigiBaseSymbolCircleDef & operator=(const CigiBaseSymbolCircleDef &BaseIn);
00103
00104
00105
00106
00107
00118 virtual int Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const=0;
00119
00120
00130 virtual int Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec) =0;
00131
00132
00140 virtual int GetTruePacketSize(CigiBaseVariableSizePckt &refPacket)
00141 { return(PacketSize + refPacket.GetVariableDataSize()); }
00142
00143
00155 virtual int GetCnvt(CigiVersionID &CnvtVersion,
00156 CigiCnvtInfoType::Type &CnvtInfo);
00157
00158
00159
00160
00161
00162
00163
00164
00171 int SetSymbolID(const Cigi_uint16 SymbolIDIn, bool bndchk=true)
00172 {
00173 SymbolID = SymbolIDIn;
00174 return(CIGI_SUCCESS);
00175 }
00176
00177
00181 Cigi_uint16 GetSymbolID(void) const { return(SymbolID); }
00182
00183
00184
00185
00186
00194 int SetDrawingStyle(const DrawingStyleGrp DrawingStyleIn, bool bndchk=true);
00195
00196
00200 DrawingStyleGrp GetDrawingStyle(void) const { return(DrawingStyle); }
00201
00202
00203
00204
00205
00213 int SetStipplePattern(const Cigi_uint16 StipplePatternIn, bool bndchk=true)
00214 {
00215 StipplePattern = StipplePatternIn;
00216 return(CIGI_SUCCESS);
00217 }
00218
00219
00223 Cigi_uint16 GetStipplePattern(void) const { return(StipplePattern); }
00224
00225
00226
00227
00228
00236 int SetLineWidth(const float LineWidthIn, bool bndchk=true);
00237
00238
00243 float GetLineWidth(void) const { return(LineWidth); }
00244
00245
00246
00247
00248
00257 int SetStipplePatternLen(const float StipplePatternLenIn, bool bndchk=true);
00258
00259
00265 float GetStipplePatternLen(void) const { return(StipplePatternLen); }
00266
00267
00268
00269
00270
00274 int GetCircleCount(void);
00275
00276
00286 virtual CigiBaseCircleSymbolData * AddCircle(void) =0;
00287
00288
00299 virtual int RemoveCircle(int CircleIndex, bool bndchk=true) =0;
00300
00301
00308 CigiBaseCircleSymbolData * GetCircle(int CircleIndex, bool bndchk=true);
00309
00310
00313 void ClearCircles(void);
00314
00315
00316
00317 protected:
00318
00319
00320
00321
00325 Cigi_uint16 SymbolID;
00326
00327
00333 DrawingStyleGrp DrawingStyle;
00334
00335
00339 Cigi_uint16 StipplePattern;
00340
00341
00345 float LineWidth;
00346
00347
00352 float StipplePatternLen;
00353
00354
00358 std::vector<CigiBaseCircleSymbolData *> Circles;
00359
00360
00361 };
00362
00363
00364
00365 #endif // #if !defined(_CIGI_BASE_SYMBOL_CIRCLE_DEF_INCLUDED_)
00366