📄 mitab.h
字号:
GInt32 m_nComprOrgY; public: TABFeature(OGRFeatureDefn *poDefnIn ); virtual ~TABFeature(); virtual TABFeature *CloneTABFeature(OGRFeatureDefn *pNewDefn = NULL); virtual TABFeatureClass GetFeatureClass() { return TABFCNoGeomFeature; }; virtual int GetMapInfoType() { return m_nMapInfoType; }; virtual int ValidateMapInfoType(TABMAPFile *poMapFile = NULL) {m_nMapInfoType=TAB_GEOM_NONE; return m_nMapInfoType;}; GBool IsRecordDeleted() { return m_bDeletedFlag; }; void SetRecordDeleted(GBool bDeleted) { m_bDeletedFlag=bDeleted; }; /*----------------------------------------------------------------- * TAB Support *----------------------------------------------------------------*/ virtual int ReadRecordFromDATFile(TABDATFile *poDATFile); virtual int ReadGeometryFromMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int WriteRecordToDATFile(TABDATFile *poDATFile, TABINDFile *poINDFile, int *panIndexNo); virtual int WriteGeometryToMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); GBool ValidateCoordType(TABMAPFile * poMapFile); /*----------------------------------------------------------------- * Mid/Mif Support *----------------------------------------------------------------*/ virtual int ReadRecordFromMIDFile(MIDDATAFile *fp); virtual int ReadGeometryFromMIFFile(MIDDATAFile *fp); virtual int WriteRecordToMIDFile(MIDDATAFile *fp); virtual int WriteGeometryToMIFFile(MIDDATAFile *fp); void ReadMIFParameters(MIDDATAFile *fp); void WriteMIFParameters(MIDDATAFile *fp); /*----------------------------------------------------------------- *----------------------------------------------------------------*/ void SetMBR(double dXMin, double dYMin, double dXMax, double dYMax); void GetMBR(double &dXMin, double &dYMin, double &dXMax, double &dYMax); virtual void DumpMID(FILE *fpOut = NULL); virtual void DumpMIF(FILE *fpOut = NULL);};/*--------------------------------------------------------------------- * class TABPoint * * Feature class to handle old style MapInfo point symbols: * * TAB_GEOM_SYMBOL_C 0x01 * TAB_GEOM_SYMBOL 0x02 * * Feature geometry will be a OGRPoint * * The symbol number is in the range [31..67], with 31=None and corresponds * to one of the 35 predefined "Old MapInfo Symbols" * * NOTE: This class is also used as a base class for the other point * symbol types TABFontPoint and TABCustomPoint. *--------------------------------------------------------------------*/class TABPoint: public TABFeature, public ITABFeatureSymbol{ public: TABPoint(OGRFeatureDefn *poDefnIn); virtual ~TABPoint(); virtual TABFeatureClass GetFeatureClass() { return TABFCPoint; }; virtual int ValidateMapInfoType(TABMAPFile *poMapFile = NULL); virtual TABFeature *CloneTABFeature(OGRFeatureDefn *poNewDefn = NULL ); double GetX(); double GetY(); virtual int ReadGeometryFromMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int WriteGeometryToMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int ReadGeometryFromMIFFile(MIDDATAFile *fp); virtual int WriteGeometryToMIFFile(MIDDATAFile *fp); virtual const char *GetStyleString(); virtual void DumpMIF(FILE *fpOut = NULL);};/*--------------------------------------------------------------------- * class TABFontPoint * * Feature class to handle MapInfo Font Point Symbol types: * * TAB_GEOM_FONTSYMBOL_C 0x28 * TAB_GEOM_FONTSYMBOL 0x29 * * Feature geometry will be a OGRPoint * * The symbol number refers to a character code in the specified Windows * Font (e.g. "Windings"). *--------------------------------------------------------------------*/class TABFontPoint: public TABPoint, public ITABFeatureFont{ protected: double m_dAngle; GInt16 m_nFontStyle; // Bold/shadow/halo/etc. public: TABFontPoint(OGRFeatureDefn *poDefnIn); virtual ~TABFontPoint(); virtual TABFeatureClass GetFeatureClass() { return TABFCFontPoint; }; virtual TABFeature *CloneTABFeature(OGRFeatureDefn *poNewDefn = NULL ); virtual int ReadGeometryFromMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int WriteGeometryToMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int ReadGeometryFromMIFFile(MIDDATAFile *fp); virtual int WriteGeometryToMIFFile(MIDDATAFile *fp); virtual const char *GetStyleString(); GBool QueryFontStyle(TABFontStyle eStyleToQuery); void ToggleFontStyle(TABFontStyle eStyleToToggle, GBool bStatus); int GetFontStyleMIFValue(); void SetFontStyleMIFValue(int nStyle); int GetFontStyleTABValue() {return m_nFontStyle;}; void SetFontStyleTABValue(int nStyle){m_nFontStyle=(GInt16)nStyle;}; // GetSymbolAngle(): Return angle in degrees counterclockwise double GetSymbolAngle() {return m_dAngle;}; void SetSymbolAngle(double dAngle);};/*--------------------------------------------------------------------- * class TABCustomPoint * * Feature class to handle MapInfo Custom Point Symbol (Bitmap) types: * * TAB_GEOM_CUSTOMSYMBOL_C 0x2b * TAB_GEOM_CUSTOMSYMBOL 0x2c * * Feature geometry will be a OGRPoint * * The symbol name is the name of a BMP file stored in the "CustSymb" * directory (e.g. "arrow.BMP"). The symbol number has no meaning for * this symbol type. *--------------------------------------------------------------------*/class TABCustomPoint: public TABPoint, public ITABFeatureFont{ protected: GByte m_nCustomStyle; // Show BG/Apply Color public: GByte m_nUnknown_; public: TABCustomPoint(OGRFeatureDefn *poDefnIn); virtual ~TABCustomPoint(); virtual TABFeatureClass GetFeatureClass() { return TABFCCustomPoint; }; virtual TABFeature *CloneTABFeature(OGRFeatureDefn *poNewDefn = NULL ); virtual int ReadGeometryFromMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int WriteGeometryToMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int ReadGeometryFromMIFFile(MIDDATAFile *fp); virtual int WriteGeometryToMIFFile(MIDDATAFile *fp); virtual const char *GetStyleString(); const char *GetSymbolNameRef() { return GetFontNameRef(); }; void SetSymbolName(const char *pszName) {SetFontName(pszName);}; GByte GetCustomSymbolStyle() {return m_nCustomStyle;} void SetCustomSymbolStyle(GByte nStyle) {m_nCustomStyle = nStyle;}};/*--------------------------------------------------------------------- * class TABPolyline * * Feature class to handle the various MapInfo line types: * * TAB_GEOM_LINE_C 0x04 * TAB_GEOM_LINE 0x05 * TAB_GEOM_PLINE_C 0x07 * TAB_GEOM_PLINE 0x08 * TAB_GEOM_MULTIPLINE_C 0x25 * TAB_GEOM_MULTIPLINE 0x26 * TAB_GEOM_V450_MULTIPLINE_C 0x31 * TAB_GEOM_V450_MULTIPLINE 0x32 * * Feature geometry can be either a OGRLineString or a OGRMultiLineString *--------------------------------------------------------------------*/class TABPolyline: public TABFeature, public ITABFeaturePen{ private: GBool m_bCenterIsSet; double m_dCenterX, m_dCenterY; public: TABPolyline(OGRFeatureDefn *poDefnIn); virtual ~TABPolyline(); virtual TABFeatureClass GetFeatureClass() { return TABFCPolyline; }; virtual int ValidateMapInfoType(TABMAPFile *poMapFile = NULL); virtual TABFeature *CloneTABFeature(OGRFeatureDefn *poNewDefn = NULL ); /* 2 methods to simplify access to rings in a multiple polyline */ int GetNumParts(); OGRLineString *GetPartRef(int nPartIndex); virtual int ReadGeometryFromMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int WriteGeometryToMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int ReadGeometryFromMIFFile(MIDDATAFile *fp); virtual int WriteGeometryToMIFFile(MIDDATAFile *fp); virtual const char *GetStyleString(); virtual void DumpMIF(FILE *fpOut = NULL); int GetCenter(double &dX, double &dY); void SetCenter(double dX, double dY); // MapInfo-specific attributes... made available through public vars // for now. GBool m_bSmooth;};/*--------------------------------------------------------------------- * class TABRegion * * Feature class to handle the MapInfo region types: * * TAB_GEOM_REGION_C 0x0d * TAB_GEOM_REGION 0x0e * TAB_GEOM_V450_REGION_C 0x2e * TAB_GEOM_V450_REGION 0x2f * * Feature geometry will be returned as OGRPolygon (with a single ring) * or OGRMultiPolygon (for multiple rings). * * REGIONs with multiple rings are returned as OGRMultiPolygon instead of * as OGRPolygons since OGRPolygons require that the first ring be the * outer ring, and the other all be inner rings, but this is not guaranteed * inside MapInfo files. However, when writing features, OGRPolygons with * multiple rings will be accepted without problem. *--------------------------------------------------------------------*/class TABRegion: public TABFeature, public ITABFeaturePen, public ITABFeatureBrush{ GBool m_bSmooth; private: GBool m_bCenterIsSet; double m_dCenterX, m_dCenterY; int ComputeNumRings(TABMAPCoordSecHdr **ppasSecHdrs, TABMAPFile *poMAPFile); int AppendSecHdrs(OGRPolygon *poPolygon, TABMAPCoordSecHdr * &pasSecHdrs, TABMAPFile *poMAPFile, int &iLastRing); public: TABRegion(OGRFeatureDefn *poDefnIn); virtual ~TABRegion(); virtual TABFeatureClass GetFeatureClass() { return TABFCRegion; }; virtual int ValidateMapInfoType(TABMAPFile *poMapFile = NULL); virtual TABFeature *CloneTABFeature(OGRFeatureDefn *poNewDefn = NULL ); /* 2 methods to make the REGION's geometry look like a single collection * of OGRLinearRings */ int GetNumRings(); OGRLinearRing *GetRingRef(int nRequestedRingIndex); GBool IsInteriorRing(int nRequestedRingIndex); virtual int ReadGeometryFromMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int WriteGeometryToMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int ReadGeometryFromMIFFile(MIDDATAFile *fp); virtual int WriteGeometryToMIFFile(MIDDATAFile *fp); virtual const char *GetStyleString(); virtual void DumpMIF(FILE *fpOut = NULL); int GetCenter(double &dX, double &dY); void SetCenter(double dX, double dY);};/*--------------------------------------------------------------------- * class TABRectangle * * Feature class to handle the MapInfo rectangle types: * * TAB_GEOM_RECT_C 0x13 * TAB_GEOM_RECT 0x14 * TAB_GEOM_ROUNDRECT_C 0x16 * TAB_GEOM_ROUNDRECT 0x17 * * A rectangle is defined by the coords of its 2 opposite corners (the MBR) * Its corners can optionaly be rounded, in which case a X and Y rounding * radius will be defined. * * Feature geometry will be OGRPolygon *--------------------------------------------------------------------*/class TABRectangle: public TABFeature, public ITABFeaturePen, public ITABFeatureBrush{ public: TABRectangle(OGRFeatureDefn *poDefnIn); virtual ~TABRectangle(); virtual TABFeatureClass GetFeatureClass() { return TABFCRectangle; }; virtual int ValidateMapInfoType(TABMAPFile *poMapFile = NULL); virtual TABFeature *CloneTABFeature(OGRFeatureDefn *poNewDefn = NULL ); virtual int ReadGeometryFromMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int WriteGeometryToMAPFile(TABMAPFile *poMapFile, TABMAPObjHdr *); virtual int ReadGeometryFromMIFFile(MIDDATAFile *fp); virtual int WriteGeometryToMIFFile(MIDDATAFile *fp); virtual const char *GetStyleString(); virtual void DumpMIF(FILE *fpOut = NULL); // MapInfo-specific attributes... made available through public vars
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -