////////////////////////////////////////////////////////////////////////////// //文件: Gxf格式回写类 //主要功能: // 转换GeoMap Gxf的明码格式 // // ///////////////////////////////////////////////////////////////////////////// #pragma once #include ".\geomapbase.h" #include namespace NFormatReader { namespace NGeoMapReader { class GXFElementCollection; class CGeoMapGxfWriter : public CGeoMapBase { public: CGeoMapGxfWriter(void); virtual ~CGeoMapGxfWriter(void); public: list elementList; public: BOOL WriteGxf(const char * const outFilePath); // 文件路径 int WritePaper(GxfMap * paper); // 纸张大小 int WriteMap(GxfMap * map); // 映射关心 int WriteProjection(GMProjection * projection); // 投影计算 int WriteTransform(GxfTransform * transform); // 比例转换 int WriteLayer(GxfLayer * layer); // 层 int WriteText(GxfText * text); // 文本/文字 int WriteSymbol(GxfSymbol * symbol); // 符号 int WriteRect(GxfRect * rect); // 矩形框 int WriteBmp(GxfBmp * bmp, BYTE* pBmpBuffer); // 位图 int WriteMeta(GxfMeta * bmp, BYTE* pBmpBuffer); // 源文件 int WriteLog(GxfLog * log, BYTE* pBmpBuffer); // 测井曲线 int WriteSeissection(GxfSeisSection * section,BYTE * pBmpBuffer);// 地震剖面 int WritePolygon(GxfPolygon * polygon, DPoint* pt); // 面 int WritePolyline(GMPolyline * polyline, DPoint * pt); // 多边形线 int WriteContour(GxfIsoline * contour, DPoint * pt); // 等值线 int WriteFault(GMFault * fault, DPoint * pt); // 断层 int WriteRoundRect(GxfRect* rectangle); // 圆角矩形 int WritePie(GxfPie * pie); // 饼形图 int WriteEllipse(GxfPie * ellipse); // 椭圆 int WriteSeisLine(GxfSeisLine * seisline, DPoint3 * dt); // 地震测线 int WriteFrame(GxfFrame * frame); // 图框 int WriteLegend(GxfLegend* legend); // 图例 int WriteTown(GxfReside * town); // 地名 int WriteScale(GxfScale * scale); // 刻度 int WriteWell(GxfWell * well); // 井位 int WriteElement(); // 回写图元函数 public: int AddPaperElement(GxfMap * paper); // 填充纸张 int AddMapElement(GxfMap * map); // 填充映射 int AddProjectionElement(GMProjection * projection); // 填充投影 int AddTransformElement(GxfTransform * transform); // 填充转换 int AddLayerElement(GxfLayer * layer); // 填充层 int AddTextElement(GxfText * text); // 填充文本 int AddSymbolElement(GxfSymbol * symbol); // 填充符号 int AddRectElement(GxfRect * rect); // 填充矩形 int AddBmpElement(GxfBmp * bmp,BYTE * pBmpBuffer); // 填充位图 int AddMetaElement(GxfMeta * meta,BYTE * pMetaBuffer); // 填充元文件 int AddLogElement(GxfLog * log,BYTE * pLogBuffer); // 填充测井曲线 int AddSeissectionElement(GxfSeisSection * section,BYTE * pSectionBuffer);// 填充地震剖面 int AddPolygonElement(GxfPolygon * polygon,DPoint * pDt); // 填充多边形 int AddPolylineElement(GMPolyline * polyline,DPoint * pDt); // 填充折线 int AddContourElement(GxfIsoline * contour,DPoint * pDt); // 填充等值线 int AddFaultElement(GMFault * fault,DPoint * pDt); // 填充断层 int AddRoundRectElement(GxfRect * roundRect); // 填充圆角矩形 int AddPieElement(GxfPie * pie); // 填充饼图 int AddEllipseElement(GxfPie * ellipse); // 填充椭圆 int AddSeisLineElement(GxfSeisLine * seisline,DPoint3 * pDp3); // 填充测线 int AddFrameElement(GxfFrame * frame); // 填充图框 int AddLegendElement(GxfLegend * legend); // 填充图例框 int AddTownElement(GxfReside * town); // 填充地名 int AddScaleElement(GxfScale * scale); // 填充刻度 int AddWellElement(GxfWell * well); // 填充井位 protected: char floatStr[1024]{}; char * ConvertColorToHex(GColor clor,char * buf); // 颜色转十六进制 char * IntToFloat(int i); // Int 转 Float char * FTS(double &v); // Float 转 string char * IntToString(int i); // Int 转 string int WriteStringElem(const char * str, int isMar = 1); // string写 int WriteName(const char* str, int isMar = 0); // 写名称 int WriteSymbolID(int nID, int isMar = 0); // 写符号ID FILE *m_file = nullptr; }; class GXFElementCollection { public: char *elementName = nullptr; // 图元名称 void * pEleBody = nullptr; // 图元属性体 IPoint * pt = nullptr; // 图元数据体 DPoint * dt = nullptr; // 图元数据体 DPoint3 * dp3 = nullptr; // 图元数据体 double * labelData = nullptr; // 图元标注点数据 BYTE* pBmpBuffer = nullptr; // 图元数据体 }; }; }; using namespace NGeoMapReader;