| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef DRW_OBJECTS_H |
| | #define DRW_OBJECTS_H |
| |
|
| |
|
| | #include <string> |
| | #include <vector> |
| | #include <map> |
| | #include "drw_base.h" |
| |
|
| | class DRW_Textstyle; |
| | class DRW_Block_Record; |
| | class dxfReader; |
| | class dxfWriter; |
| | class dwgBuffer; |
| |
|
| | namespace DRW { |
| |
|
| | |
| | enum TTYPE { |
| | UNKNOWNT, |
| | LTYPE, |
| | LAYER, |
| | STYLE, |
| | DIMSTYLE, |
| | VPORT, |
| | BLOCK_RECORD, |
| | APPID, |
| | IMAGEDEF, |
| | PLOTSETTINGS |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | } |
| |
|
| | #define SETOBJFRIENDS friend class dxfRW; \ |
| | friend class dwgReader; |
| |
|
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | class DRW_TableEntry : public DRW_ParseableEntity{ |
| | public: |
| |
|
| | DRW_TableEntry() {} |
| |
|
| | virtual~DRW_TableEntry() { |
| | for (std::vector<DRW_Variant*>::iterator it = extData.begin(); it != extData.end(); ++it) { |
| | delete *it; |
| | } |
| |
|
| | extData.clear(); |
| | } |
| |
|
| | DRW_TableEntry(const DRW_TableEntry& e) : |
| | tType {e.tType}, |
| | handle {e.handle}, |
| | parentHandle {e.parentHandle}, |
| | name {e.name}, |
| | flags {e.flags}, |
| | xDictFlag {e.xDictFlag}, |
| | numReactors {e.numReactors}, |
| | curr {nullptr} { |
| | for (std::vector<DRW_Variant *>::const_iterator it = e.extData.begin(); it != e.extData.end(); ++it) { |
| | DRW_Variant *src = *it; |
| | DRW_Variant *dst = new DRW_Variant( *src); |
| | extData.push_back( dst); |
| | if (src == e.curr) { |
| | curr = dst; |
| | } |
| | } |
| | } |
| | virtual DRW_TableEntry* newInstance() {return nullptr;} |
| |
|
| | void reset() { |
| | flags = 0; |
| | for (std::vector<DRW_Variant*>::iterator it = extData.begin(); it != extData.end(); ++it) { |
| | delete *it; |
| | } |
| | extData.clear(); |
| | curr = nullptr; |
| | } |
| |
|
| | bool parseCode(int code, dxfReader *reader) override; |
| |
|
| | protected: |
| |
|
| | virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0) = 0; |
| | bool parseDwg(DRW::Version version, dwgBuffer *buf, dwgBuffer* strBuf, duint32 bs=0); |
| |
|
| | public: |
| | enum DRW::TTYPE tType {DRW::UNKNOWNT}; |
| | duint32 handle {0}; |
| | int parentHandle {0}; |
| | UTF8STRING name; |
| | int flags {0}; |
| | std::vector<DRW_Variant*> extData; |
| |
|
| | |
| | protected: |
| | dint16 oType {0}; |
| | duint8 xDictFlag {0}; |
| | dint32 numReactors {0}; |
| | duint32 objSize {0}; |
| |
|
| | private: |
| | DRW_Variant* curr {nullptr}; |
| | }; |
| |
|
| | class DRW_ParsingContext; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | class DRW_Dimstyle : public DRW_TableEntry { |
| | SETOBJFRIENDS |
| | public: |
| | DRW_Dimstyle() { reset();} |
| | ~DRW_Dimstyle() override; |
| |
|
| |
|
| | void reset(){ |
| | tType = DRW::DIMSTYLE; |
| | dimasz = dimtxt = dimexe = 0.18; |
| | dimexo = 0.0625; |
| | dimgap = dimcen = 0.09; |
| | dimtxsty = "Standard"; |
| | dimscale = dimlfac = dimtfac = dimfxl = 1.0; |
| | dimdli = 0.38; |
| | dimrnd = dimdle = dimtp = dimtm = dimtsz = dimtvp = 0.0; |
| | dimaltf = 25.4; |
| | dimtol = dimlim = dimse1 = dimse2 = dimtad = dimzin = 0; |
| | dimtoh = dimtolj = 1; |
| | dimalt = dimtofl = dimsah = dimtix = dimsoxd = dimfxlon = 0; |
| | dimaltd = dimunit = dimaltu = dimalttd = dimlunit = 2; |
| | dimclrd = dimclre = dimclrt = dimjust = dimupt = 0; |
| | dimazin = dimaltz = dimaltttz = dimtzin = dimfrac = 0; |
| | dimtih = dimadec = dimaunit = dimsd1 = dimsd2 = dimtmove = 0; |
| | dimaltrnd = 0.0; |
| | dimdec = dimtdec = 4; |
| | dimfit = dimatfit = 3; |
| | dimdsep = '.'; |
| | dimlwd = dimlwe = -2; |
| | DRW_TableEntry::reset(); |
| | } |
| |
|
| | class ValueHolder { |
| | public: |
| | bool has() {return m_var != nullptr;} |
| | UTF8STRING sval(){return m_var->c_str();} |
| | double dval() {return m_var->d_val();} |
| | int ival() {return m_var->i_val();} |
| | void update(DRW_Variant* var) {m_var = var;} |
| | private: |
| | DRW_Variant* m_var{nullptr}; |
| | }; |
| |
|
| | DRW_TableEntry* newInstance() override {return new DRW_Dimstyle();} |
| |
|
| | bool parseCode(int code, dxfReader *reader) override; |
| | DRW_Variant* get(const std::string& key) const; |
| | bool get(const std::string& key, ValueHolder& holder) const; |
| | bool get(const std::string& key, double& var) const; |
| | bool get(const std::string& key, int& var) const; |
| | bool get(const std::string& key, UTF8STRING& var) const; |
| |
|
| | void add(const std::string& key, int code, int value); |
| | void add(const std::string& key, int code, double value); |
| | void add(const std::string& key, int code, UTF8STRING value); |
| |
|
| | std::unordered_map<std::string,DRW_Variant*> vars; |
| |
|
| | |
| | |
| | |
| | UTF8STRING dimpost; |
| | UTF8STRING dimapost; |
| | |
| | UTF8STRING dimblk; |
| | UTF8STRING dimblk1; |
| | UTF8STRING dimblk2; |
| | double dimscale; |
| | double dimasz; |
| | double dimexo; |
| | double dimdli; |
| | double dimexe; |
| | double dimrnd; |
| | double dimdle; |
| | double dimtp; |
| | double dimtm; |
| | double dimfxl; |
| | double dimtxt; |
| | double dimcen; |
| | double dimtsz; |
| | double dimaltf; |
| | double dimlfac; |
| | double dimtvp; |
| | double dimtfac; |
| | double dimgap; |
| | double dimaltrnd; |
| | int dimtol; |
| | int dimlim; |
| | int dimtih; |
| | int dimtoh; |
| | int dimse1; |
| | int dimse2; |
| |
|
| | |
| | |
| | |
| | int dimltext1; |
| | int dimltext2; |
| | int dimltype; |
| |
|
| | int dimtfillclr; |
| | int dimtfill; |
| | int dimtxtdirection; |
| |
|
| | double mleaderscale; |
| |
|
| | int dimtad; |
| | int dimzin; |
| | int dimazin; |
| | int dimalt; |
| | int dimaltd; |
| | int dimtofl; |
| | int dimsah; |
| | int dimtix; |
| | int dimsoxd; |
| | int dimclrd; |
| | int dimclre; |
| | int dimclrt; |
| | int dimadec; |
| | int dimunit; |
| | int dimdec; |
| | int dimtdec; |
| | int dimaltu; |
| | int dimalttd; |
| | int dimaunit; |
| | int dimfrac; |
| | int dimlunit; |
| | int dimdsep; |
| | int dimtmove; |
| | int dimjust; |
| | int dimsd1; |
| | int dimsd2; |
| | int dimtolj; |
| | int dimtzin; |
| | int dimaltz; |
| | int dimaltttz; |
| | int dimfit; |
| | int dimupt; |
| | int dimatfit; |
| | int dimfxlon; |
| | UTF8STRING dimtxsty; |
| | UTF8STRING dimldrblk; |
| | int dimlwd; |
| | int dimlwe; |
| | int dymarcsym; |
| |
|
| | protected: |
| | void resolveBlockRecordNameByHandle(DRW_ParsingContext& ctx,const std::string& unresolvedKey, |
| | const std::string &resolvedKey, int code); |
| | void resolveTextStyleNameByHandle(DRW_ParsingContext& ctx, const std::string& unresolvedKey, |
| | const std::string& resolvedKey, int code); |
| | void resolveLineTypeNameByHandle(DRW_ParsingContext& ctx, const std::string& unresolvedKey, |
| | const std::string& resolvedKey, int code); |
| | bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0) override; |
| | bool resolveRefs(DRW_ParsingContext& ctx); |
| | }; |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | class DRW_LType : public DRW_TableEntry { |
| | SETOBJFRIENDS |
| | public: |
| | DRW_LType() { reset();} |
| | ~DRW_LType() override = default; |
| |
|
| | void reset(){ |
| | tType = DRW::LTYPE; |
| | desc = ""; |
| | size = 0; |
| | length = 0.0; |
| | pathIdx = 0; |
| | DRW_TableEntry::reset(); |
| | } |
| |
|
| | DRW_TableEntry* newInstance() override; |
| |
|
| | void updateValues(const UTF8STRING &lTypeName, const UTF8STRING <Description, int ltSize, double ltLength, const std::vector<double> <Path) { |
| | reset(); |
| | name = lTypeName; |
| | desc = ltDescription; |
| | size = ltSize; |
| | length = ltLength; |
| | path.clear(); |
| |
|
| | for (auto it:ltPath) { |
| | path.push_back(it); |
| | } |
| | } |
| | protected: |
| | bool parseCode(int code, dxfReader *reader) override; |
| | bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0) override; |
| | void update(); |
| |
|
| | public: |
| | UTF8STRING desc; |
| | |
| | int size; |
| | double length; |
| | |
| | std::vector<double> path; |
| | private: |
| | int pathIdx; |
| | }; |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | class DRW_Layer : public DRW_TableEntry { |
| | SETOBJFRIENDS |
| | public: |
| | DRW_Layer() { reset();} |
| | ~DRW_Layer() override = default; |
| |
|
| | void reset() { |
| | tType = DRW::LAYER; |
| | lineType = "CONTINUOUS"; |
| | color = 7; |
| | plotF = true; |
| | lWeight = DRW_LW_Conv::widthDefault; |
| | color24 = -1; |
| | DRW_TableEntry::reset(); |
| | } |
| |
|
| | protected: |
| | bool parseCode(int code, dxfReader *reader) override; |
| | bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0) override; |
| |
|
| | public: |
| | UTF8STRING lineType; |
| | int color; |
| | int color24; |
| | bool plotF; |
| | enum DRW_LW_Conv::lineWidth lWeight; |
| | std::string handlePlotS; |
| | std::string handleMaterialS; |
| | |
| | dwgHandle lTypeH; |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | class DRW_Block_Record : public DRW_TableEntry { |
| | SETOBJFRIENDS |
| | public: |
| | DRW_Block_Record() { reset();} |
| | ~DRW_Block_Record() override = default; |
| |
|
| | void reset() { |
| | tType = DRW::BLOCK_RECORD; |
| | flags = 0; |
| | firstEH = lastEH = DRW::NoHandle; |
| | DRW_TableEntry::reset(); |
| | } |
| |
|
| | DRW_TableEntry* newInstance() override; |
| | bool parseCode(int code, dxfReader* reader) override {return DRW_TableEntry::parseCode(code,reader);} |
| | protected: |
| | bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0) override; |
| |
|
| | public: |
| | |
| | int insUnits; |
| | DRW_Coord basePoint; |
| | protected: |
| | |
| | private: |
| | duint32 block; |
| | duint32 endBlock; |
| | duint32 firstEH; |
| | duint32 lastEH; |
| | std::vector<duint32>entMap; |
| | |
| | |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | class DRW_Textstyle : public DRW_TableEntry { |
| | SETOBJFRIENDS |
| | public: |
| | DRW_Textstyle() { reset();} |
| | ~DRW_Textstyle() override = default; |
| |
|
| | void reset(){ |
| | tType = DRW::STYLE; |
| | height = oblique = 0.0; |
| | width = lastHeight = 1.0; |
| | font="txt"; |
| | genFlag = 0; |
| | fontFamily = 0; |
| | DRW_TableEntry::reset(); |
| | } |
| |
|
| | protected: |
| | bool parseCode(int code, dxfReader *reader) override; |
| | bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0) override; |
| |
|
| | public: |
| | double height; |
| | double width; |
| | double oblique; |
| | int genFlag; |
| | double lastHeight; |
| | UTF8STRING font; |
| | UTF8STRING bigFont; |
| | int fontFamily; |
| | }; |
| |
|
| | class DRW_UCS:public DRW_TableEntry{ |
| | SETOBJFRIENDS |
| | public: |
| | DRW_Coord origin; |
| | DRW_Coord xAxisDirection; |
| | DRW_Coord yAxisDirection; |
| | DRW_Coord orthoOrigin; |
| | double elevation; |
| | int orthoType; |
| |
|
| | DRW_UCS() { reset();} |
| | ~DRW_UCS() override = default; |
| |
|
| | void reset(){ |
| | origin.x = origin.y = origin.z = 0.0; |
| | xAxisDirection.x = xAxisDirection.y = xAxisDirection.z = 0.0; |
| | yAxisDirection.x = yAxisDirection.y = yAxisDirection.z = 0.0; |
| | orthoOrigin.x = orthoOrigin.y = orthoOrigin.z = 0.0; |
| | elevation = 0.0; |
| | orthoType = 0.0; |
| | } |
| | protected: |
| | bool parseCode(int code, dxfReader *reader) override; |
| | bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0) override; |
| | }; |
| |
|
| |
|
| | class DRW_View:public DRW_TableEntry{ |
| | SETOBJFRIENDS |
| | public: |
| | DRW_View() { reset();} |
| | ~DRW_View() override = default; |
| |
|
| | void reset(){ |
| | size.x = size.y = size.z = 0.0; |
| | center.x = center.y = center.z = 0.0; |
| | viewDirectionFromTarget.x = viewDirectionFromTarget.y = viewDirectionFromTarget.z = 0.0; |
| | targetPoint.x = targetPoint.y = targetPoint.z = 0.0; |
| | lensLen = 0.0; |
| | frontClippingPlaneOffset = 0.0; |
| | backClippingPlaneOffset = 0.0; |
| | twistAngle = 0.0; |
| | viewMode = 0; |
| | renderMode = 0; |
| | hasUCS = false; |
| | cameraPlottable = false; |
| |
|
| | ucsOrigin.x = ucsOrigin.y = ucsOrigin.z = 0.0; |
| | ucsXAxis.x = ucsXAxis.y = ucsXAxis.z = 0.0; |
| | ucsYAxis.x = ucsYAxis.y = ucsYAxis.z = 0.0; |
| | ucsOrthoType = 1; |
| | ucsElevation = 0.0; |
| | namedUCS_ID = 0; |
| | baseUCS_ID = 0; |
| | DRW_TableEntry::reset(); |
| | } |
| |
|
| | protected: |
| | bool parseCode(int code, dxfReader *reader) override; |
| | bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0) override; |
| |
|
| | public: |
| | DRW_Coord size; |
| | DRW_Coord center; |
| | DRW_Coord viewDirectionFromTarget; |
| | DRW_Coord targetPoint; |
| | double lensLen; |
| | double frontClippingPlaneOffset; |
| | double backClippingPlaneOffset; |
| | double twistAngle; |
| | int viewMode; |
| | unsigned int renderMode; |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | bool hasUCS; |
| | bool cameraPlottable; |
| |
|
| | DRW_Coord ucsOrigin; |
| | DRW_Coord ucsXAxis; |
| | DRW_Coord ucsYAxis; |
| | int ucsOrthoType; |
| | double ucsElevation; |
| | |
| | duint32 namedUCS_ID; |
| | duint32 baseUCS_ID; |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | class DRW_Vport : public DRW_TableEntry { |
| | SETOBJFRIENDS |
| | public: |
| | DRW_Vport() { reset();} |
| | ~DRW_Vport() override = default; |
| |
|
| | void reset(){ |
| | tType = DRW::VPORT; |
| | UpperRight.x = UpperRight.y = 1.0; |
| | snapSpacing.x = snapSpacing.y = 10.0; |
| | gridSpacing = snapSpacing; |
| | center.x = 0.651828; |
| | center.y = -0.16; |
| | viewDir.z = 1; |
| | height = 5.13732; |
| | ratio = 2.4426877; |
| | lensHeight = 50; |
| | frontClip = backClip = snapAngle = twistAngle = 0.0; |
| | viewMode = snap = grid = snapStyle = snapIsopair = 0; |
| | fastZoom = 1; |
| | circleZoom = 100; |
| | ucsIcon = 3; |
| | gridBehavior = 7; |
| | DRW_TableEntry::reset(); |
| | } |
| |
|
| | protected: |
| | bool parseCode(int code, dxfReader *reader) override; |
| | bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0) override; |
| |
|
| | public: |
| | DRW_Coord lowerLeft; |
| | DRW_Coord UpperRight; |
| | DRW_Coord center; |
| | DRW_Coord snapBase; |
| | DRW_Coord snapSpacing; |
| | DRW_Coord gridSpacing; |
| | DRW_Coord viewDir; |
| | DRW_Coord viewTarget; |
| | double height; |
| | double ratio; |
| | double lensHeight; |
| | double frontClip; |
| | double backClip; |
| | double snapAngle; |
| | double twistAngle; |
| | int viewMode; |
| | int circleZoom; |
| | int fastZoom; |
| | int ucsIcon; |
| | int snap; |
| | int grid; |
| | int snapStyle; |
| | int snapIsopair; |
| | int gridBehavior; |
| | |
| | |
| | |
| | |
| | |
| | |
| | }; |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | class DRW_ImageDef : public DRW_TableEntry { |
| | SETOBJFRIENDS |
| | public: |
| | DRW_ImageDef() { |
| | reset(); |
| | } |
| |
|
| | ~DRW_ImageDef() override = default; |
| |
|
| | void reset(){ |
| | tType = DRW::IMAGEDEF; |
| | imgVersion = 0; |
| | DRW_TableEntry::reset(); |
| | } |
| |
|
| | protected: |
| | bool parseCode(int code, dxfReader *reader) override; |
| | bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0) override; |
| |
|
| | public: |
| | |
| | UTF8STRING name; |
| | int imgVersion; |
| | double u; |
| | double v; |
| | double up; |
| | double vp; |
| | int loaded; |
| | int resolution; |
| |
|
| | std::map<std::string,std::string> reactors; |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | class DRW_PlotSettings : public DRW_TableEntry { |
| | SETOBJFRIENDS |
| | public: |
| | DRW_PlotSettings() { |
| | reset(); |
| | } |
| |
|
| | ~DRW_PlotSettings() override = default; |
| |
|
| | void reset(){ |
| | tType = DRW::PLOTSETTINGS; |
| | marginLeft = 0.0; |
| | marginBottom = 0.0; |
| | marginRight = 0.0; |
| | marginTop = 0.0; |
| | DRW_TableEntry::reset(); |
| | } |
| |
|
| | protected: |
| | bool parseCode(int code, dxfReader *reader) override; |
| | bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0) override; |
| |
|
| | public: |
| | UTF8STRING plotViewName; |
| | double marginLeft; |
| | double marginBottom; |
| | double marginRight; |
| | double marginTop; |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | class DRW_AppId : public DRW_TableEntry { |
| | SETOBJFRIENDS |
| | public: |
| | DRW_AppId() { reset();} |
| | ~DRW_AppId() override = default; |
| |
|
| | void reset(){ |
| | tType = DRW::APPID; |
| | flags = 0; |
| | name = ""; |
| | } |
| |
|
| | protected: |
| | bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0) override; |
| | }; |
| |
|
| | class DRW_ParsingContext { |
| | public: |
| | DRW_ParsingContext() = default; |
| | ~DRW_ParsingContext(); |
| |
|
| | std::string resolveBlockRecordName(int handle); |
| | std::string resolveLineTypeName(int handle); |
| | std::string resolveTextStyleName(int handle); |
| |
|
| | std::unordered_map<duint32, DRW_LType*> lineTypeMap; |
| | std::unordered_map<duint32, DRW_Block_Record*> blockRecordMap; |
| | std::unordered_map<duint32, DRW_Textstyle*> textStyles; |
| | }; |
| |
|
| | class DRW_WritingContext { |
| | public: |
| | DRW_WritingContext() = default; |
| | ~DRW_WritingContext(); |
| | std::vector<std::pair<std::string, int>> lineTypesMap; |
| | std::unordered_map<std::string,int> blockMap; |
| | std::unordered_map<std::string,int> textStyleMap; |
| | }; |
| |
|
| |
|
| | namespace DRW { |
| |
|
| | |
| | |
| | |
| | const unsigned char dxfColors[][3] = { |
| | { 0, 0, 0}, |
| | {255, 0, 0}, |
| | {255,255, 0}, |
| | { 0,255, 0}, |
| | { 0,255,255}, |
| | { 0, 0,255}, |
| | {255, 0,255}, |
| | { 0, 0, 0}, |
| | {128,128,128}, |
| | {192,192,192}, |
| | {255, 0, 0}, |
| | {255,127,127}, |
| | {204, 0, 0}, |
| | {204,102,102}, |
| | {153, 0, 0}, |
| | {153, 76, 76}, |
| | {127, 0, 0}, |
| | {127, 63, 63}, |
| | { 76, 0, 0}, |
| | { 76, 38, 38}, |
| | {255, 63, 0}, |
| | {255,159,127}, |
| | {204, 51, 0}, |
| | {204,127,102}, |
| | {153, 38, 0}, |
| | {153, 95, 76}, |
| | {127, 31, 0}, |
| | {127, 79, 63}, |
| | { 76, 19, 0}, |
| | { 76, 47, 38}, |
| | {255,127, 0}, |
| | {255,191,127}, |
| | {204,102, 0}, |
| | {204,153,102}, |
| | {153, 76, 0}, |
| | {153,114, 76}, |
| | {127, 63, 0}, |
| | {127, 95, 63}, |
| | { 76, 38, 0}, |
| | { 76, 57, 38}, |
| | {255,191, 0}, |
| | {255,223,127}, |
| | {204,153, 0}, |
| | {204,178,102}, |
| | {153,114, 0}, |
| | {153,133, 76}, |
| | {127, 95, 0}, |
| | {127,111, 63}, |
| | { 76, 57, 0}, |
| | { 76, 66, 38}, |
| | {255,255, 0}, |
| | {255,255,127}, |
| | {204,204, 0}, |
| | {204,204,102}, |
| | {153,153, 0}, |
| | {153,153, 76}, |
| | {127,127, 0}, |
| | {127,127, 63}, |
| | { 76, 76, 0}, |
| | { 76, 76, 38}, |
| | {191,255, 0}, |
| | {223,255,127}, |
| | {153,204, 0}, |
| | {178,204,102}, |
| | {114,153, 0}, |
| | {133,153, 76}, |
| | { 95,127, 0}, |
| | {111,127, 63}, |
| | { 57, 76, 0}, |
| | { 66, 76, 38}, |
| | {127,255, 0}, |
| | {191,255,127}, |
| | {102,204, 0}, |
| | {153,204,102}, |
| | { 76,153, 0}, |
| | {114,153, 76}, |
| | { 63,127, 0}, |
| | { 95,127, 63}, |
| | { 38, 76, 0}, |
| | { 57, 76, 38}, |
| | { 63,255, 0}, |
| | {159,255,127}, |
| | { 51,204, 0}, |
| | {127,204,102}, |
| | { 38,153, 0}, |
| | { 95,153, 76}, |
| | { 31,127, 0}, |
| | { 79,127, 63}, |
| | { 19, 76, 0}, |
| | { 47, 76, 38}, |
| | { 0,255, 0}, |
| | {127,255,127}, |
| | { 0,204, 0}, |
| | {102,204,102}, |
| | { 0,153, 0}, |
| | { 76,153, 76}, |
| | { 0,127, 0}, |
| | { 63,127, 63}, |
| | { 0, 76, 0}, |
| | { 38, 76, 38}, |
| | { 0,255, 63}, |
| | {127,255,159}, |
| | { 0,204, 51}, |
| | {102,204,127}, |
| | { 0,153, 38}, |
| | { 76,153, 95}, |
| | { 0,127, 31}, |
| | { 63,127, 79}, |
| | { 0, 76, 19}, |
| | { 38, 76, 47}, |
| | { 0,255,127}, |
| | {127,255,191}, |
| | { 0,204,102}, |
| | {102,204,153}, |
| | { 0,153, 76}, |
| | { 76,153,114}, |
| | { 0,127, 63}, |
| | { 63,127, 95}, |
| | { 0, 76, 38}, |
| | { 38, 76, 57}, |
| | { 0,255,191}, |
| | {127,255,223}, |
| | { 0,204,153}, |
| | {102,204,178}, |
| | { 0,153,114}, |
| | { 76,153,133}, |
| | { 0,127, 95}, |
| | { 63,127,111}, |
| | { 0, 76, 57}, |
| | { 38, 76, 66}, |
| | { 0,255,255}, |
| | {127,255,255}, |
| | { 0,204,204}, |
| | {102,204,204}, |
| | { 0,153,153}, |
| | { 76,153,153}, |
| | { 0,127,127}, |
| | { 63,127,127}, |
| | { 0, 76, 76}, |
| | { 38, 76, 76}, |
| | { 0,191,255}, |
| | {127,223,255}, |
| | { 0,153,204}, |
| | {102,178,204}, |
| | { 0,114,153}, |
| | { 76,133,153}, |
| | { 0, 95,127}, |
| | { 63,111,127}, |
| | { 0, 57, 76}, |
| | { 38, 66, 76}, |
| | { 0,127,255}, |
| | {127,191,255}, |
| | { 0,102,204}, |
| | {102,153,204}, |
| | { 0, 76,153}, |
| | { 76,114,153}, |
| | { 0, 63,127}, |
| | { 63, 95,127}, |
| | { 0, 38, 76}, |
| | { 38, 57, 76}, |
| | { 0, 66,255}, |
| | {127,159,255}, |
| | { 0, 51,204}, |
| | {102,127,204}, |
| | { 0, 38,153}, |
| | { 76, 95,153}, |
| | { 0, 31,127}, |
| | { 63, 79,127}, |
| | { 0, 19, 76}, |
| | { 38, 47, 76}, |
| | { 0, 0,255}, |
| | {127,127,255}, |
| | { 0, 0,204}, |
| | {102,102,204}, |
| | { 0, 0,153}, |
| | { 76, 76,153}, |
| | { 0, 0,127}, |
| | { 63, 63,127}, |
| | { 0, 0, 76}, |
| | { 38, 38, 76}, |
| | { 63, 0,255}, |
| | {159,127,255}, |
| | { 50, 0,204}, |
| | {127,102,204}, |
| | { 38, 0,153}, |
| | { 95, 76,153}, |
| | { 31, 0,127}, |
| | { 79, 63,127}, |
| | { 19, 0, 76}, |
| | { 47, 38, 76}, |
| | {127, 0,255}, |
| | {191,127,255}, |
| | {102, 0,204}, |
| | {153,102,204}, |
| | { 76, 0,153}, |
| | {114, 76,153}, |
| | { 63, 0,127}, |
| | { 95, 63,127}, |
| | { 38, 0, 76}, |
| | { 57, 38, 76}, |
| | {191, 0,255}, |
| | {223,127,255}, |
| | {153, 0,204}, |
| | {178,102,204}, |
| | {114, 0,153}, |
| | {133, 76,153}, |
| | { 95, 0,127}, |
| | {111, 63,127}, |
| | { 57, 0, 76}, |
| | { 66, 38, 76}, |
| | {255, 0,255}, |
| | {255,127,255}, |
| | {204, 0,204}, |
| | {204,102,204}, |
| | {153, 0,153}, |
| | {153, 76,153}, |
| | {127, 0,127}, |
| | {127, 63,127}, |
| | { 76, 0, 76}, |
| | { 76, 38, 76}, |
| | {255, 0,191}, |
| | {255,127,223}, |
| | {204, 0,153}, |
| | {204,102,178}, |
| | {153, 0,114}, |
| | {153, 76,133}, |
| | {127, 0, 95}, |
| | {127, 63, 11}, |
| | { 76, 0, 57}, |
| | { 76, 38, 66}, |
| | {255, 0,127}, |
| | {255,127,191}, |
| | {204, 0,102}, |
| | {204,102,153}, |
| | {153, 0, 76}, |
| | {153, 76,114}, |
| | {127, 0, 63}, |
| | {127, 63, 95}, |
| | { 76, 0, 38}, |
| | { 76, 38, 57}, |
| | {255, 0, 63}, |
| | {255,127,159}, |
| | {204, 0, 51}, |
| | {204,102,127}, |
| | {153, 0, 38}, |
| | {153, 76, 95}, |
| | {127, 0, 31}, |
| | {127, 63, 79}, |
| | { 76, 0, 19}, |
| | { 76, 38, 47}, |
| | { 51, 51, 51}, |
| | { 91, 91, 91}, |
| | {132,132,132}, |
| | {173,173,173}, |
| | {214,214,214}, |
| | {255,255,255} |
| | }; |
| |
|
| | } |
| |
|
| | #endif |
| |
|