You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1744 lines
48 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//////////////////////////////////////////////////////////////////////////////
//文件: 格式转换类
//主要功能:
// 转换GeoMap3.2的GDB格式
//
//程序编写: 2009-8-04
//
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "GeoMapDataType.h"
namespace NFormatReader
{
namespace NGeoMapReader
{
/***********************************************
// Geomap 3.2 图形文件(GDB)结构定义
// 注意设置结构成员对齐方式为1字节
// 目前支持的文件格式版本为3.2/3.3/3.51/3.6
//***********************************************/
#pragma pack(1)
// Geomap 3.2 图元标识
enum GMElementID
{
eSymbol = 3, // 符号
eText, // 文本
eLegend, // 图例框
eScale, // 比例尺
eAxis, // 刻度轴
eCompass, // 方向标
eWell, // 井位
eReside = 10, // 地名
eFrame = 12, // 图框
eGrid, // 网格
eRect = 15, // 矩形
eRoundRect, // 圆角矩形
ePie, // 饼/椭圆
eLine, // 线段矩形
eBmp, // 位图(BMP)
eMetafile, // 元文件(WMF/EMF)
eOle = 21, // OLE图元
eTriagonal = 23, // 三角图(23)
eGraphy, // 统计图(24)
ePolyline = 26, // 折线
eIsoline, // 等值线
eFault, // 断层线
ePoly, // 多边形(面)
eSeisSection, // 地震剖面(30)
eSeisLine, // 地震测线(31)
eSeisArea, // 地震工区(32)
eLithology, // 岩性剖面(33)
eLog, // 测井曲线(34)
eWellText, // 井旁文字(35)
eWellLog, // 井旁曲线(36)
eWellMarker = 37, // 井旁标记(37)
eCompound = 45, // 组合图元
eCustomArrow1= 47, // 自定义图元:单向箭头
eCustomLabel, // 自定义图元:矩形标注
eCustomPentagon, // 自定义图元:五边形
eCustomPentacle, // 自定义图元:五角星
eCustomCube, // 自定义图元:立方体
eCustomHexagon, // 自定义图元:六边型
eCustomCrisscross, // 自定义图元:十字型
eCustomArrow2, // 自定义图元:双向箭头
eCustomCoattail, // 自定义图元:燕尾箭头
eOilWaterCol = 63, // 油水柱子
eDataCross, // 数据十字
eString, // 文字(多行、带上下标)
};
//最初投影参数GMProjection与图件信息GMMapInfo定义在了一块为了统一分开进行定义
//GMFileHead中的与GMLayerHead中的投影参数及图件信息定义完全相同
struct GMProjection
{
int earthType; // 椭球体类型 (椭球体索引号)
int t21i1;
double axisLong; // 椭球体长轴
double AxisShort; // 椭球体短轴
int projType; // 投影类型 (投影方式索引号)
int t22i1;
double centerMeridian; // 中央子午线(弧度,下同) (中央经线)
double latOrig; // 原点纬度
double exPand1; // 扩展1
double latFirst; // 第一纬线 (割线1)
double exPand2; // 扩展2
double latSecond; // 第二纬线 (割线2)
double exPand3; // 扩展3
double scaleFactor; // 比例因子
double offsetEast; // 东偏移
double offsetNorth; // 北偏移
int bandType; // 分带方法(0:六度带,1:三度带,2:不分带)
int band; // 带号
DRect lonlat; // 经纬度范围
int coordType; // 坐标类型 0-用户坐标 1-经纬度坐标 2-大地坐标
int coordUnit; // 坐标单位 = 0 单位(毫米) = 1 单位(米)
};
//映射信息
struct GMMapInfo
{
int t31i1;
int t32i1;
int t33i1;
int t34i1;
double t41d1;
double t42d1;
int t51i1;
IRect user; // 用户/大地坐标范围
IRect paper; // 图件在图纸上的坐标范围(左、上、右、下),图件左下角为(0,0)点,右上角(宽度,高度)单位为mm
double factor; // 当前缩放比例
double xScale; // X方向比例
double yScale; // Y方向比例
int t61i4[4];
};
// Geomap 3.2 文件头结构(0x1000=4096字节)
struct GMFileHead
{
char magic[20]; // (Geomap v3.20 Map)
char t1c10[10]; // (0)
char t2c32[32]; // 北京侏罗纪技术发展有限责任公司
char t3c46[46]; // Geomap软件开发组 1Geomap软件开发组 1998.8
char t4c12[12]; // 打开输出文件
char t5c392[392];
int layerStart; // 图层索引的开始位置(0x0200)
char mapName[80]; // 图件名称
char t6c504[504];
int t7i1;
int t8i1;
char t9c1490[1490];
::byte secrecyLevel; // 安全级别(密级)(0x0a26)
::byte t10c1;
char t10c166[166];
int dispLevel; // 显示级别(0x0ace)
char unit[60]; // 绘图单位
char worker[30]; // 绘图人员
char scale[30]; // 原图比例
char date[24]; // 绘图日期
char desc[80]; // 备注说明
int paperWidth; // 图件宽度(毫米:MM下同
int paperHeight; // 图件高度
GColor bkColor; // 图件背景颜色(RGB)
GMProjection projection; //投影参数
GMMapInfo mapInfo; //图件信息
int t71i205[205];
short t81s1;
};
// 图层数据索引表
struct GMLayerIndex
{
int pos; // 位置偏移量(相对文件开始位置)
int len; // 字节长度
};
// 图层头结构(2048字节)
struct GMLayerHead
{
int layerEnd; // 图层结束位置
char magic[20]; // Geomap v3.00 Layer
char t1c42[42]; // 北京侏罗纪北京侏罗纪技术发展有限责任公司
char t2c46[46]; // Geomap软件开发组 1Geomap软件开发组 1998.8
char t3c12[12]; // 0x203ED6D00A0A0000D4DACDBC
char t4c388[388];
int t7i1;
char layerType[8]; // 图层类型 (0x200+4)
short t8s1;
char layerSort[8]; // 图层类别
int layerShow; // 图层是否显示
int readOnly; // 图层是否只读
int layerCoord; // 图层是否按坐标叠合
int equalScale; // 图层是否等比缩放
int layerLevel; // 图层级别
double t10[6];
GMProjection projection; //投影参数
GMMapInfo mapInfo; //图件信息
int nameLen; // 图层名称字符串长度
char nameStr[80]; // 图层名称
char t71c1094[1094]; // 剩余字节(0)
//int layerEnd; // 图层结束位置
//char magic[20]; // Geomap v3.00 Layer
//char t1c42[42]; // 北京侏罗纪北京侏罗纪技术发展有限责任公司
//char t2c46[46]; // Geomap软件开发组 1Geomap软件开发组 1998.8
//char t3c12[12]; // 0x203ED6D00A0A0000D4DACDBC
//char t4c388[388];
//int t7i1;
//char layerType[8]; // 图层类型 (0x200+4)
//short t8s1;
//char layerSort[8]; // 图层类别
//int layerShow; // 图层是否显示
//int readOnly; // 图层是否只读
//int layerCoord; // 图层是否按坐标叠合
//int t9i1;
//int layerLevel; // 图层级别
//double t10[6];
//int earthType; // 椭球体类型
//int t21i1;
//double axisLong; // 椭球体长轴
//double axisShort; // 椭球体短轴
//int projType; // 投影类型
//int t22i1;
//double centerMeridian;// 中央子午线(弧度,下同)
//double latOrig; // 原点纬度
//double t23d1;
//double latFirst; // 第一纬线
//double t24d1;
//double latSecond; // 第二纬线
//double t25d1;
//double prjScale; // 比例因子
//double offsetEast; // 东偏移
//double offsetNorth; // 北偏移
//int bandType; // 分带方法(0:六度带,1:三度带,2:不分带)
//int band; // 带号
//DRect lonlat; // 经纬度范围
//int coordType; //坐标类型 0-用户坐标 1-经纬度坐标 2-大地坐标
//int coordUnit; //coord_unit = 0 单位(毫米) = 1 单位(米)
//int t31i1;
//int t32i1;
//int t33i1;
//int t34i1;
//double t41d1;
//double t42d1;
//int t51i1;
//IRect user; // 大地坐标(投影后坐标)范围
//IRect paper; // 图层在图纸上的坐标范围(左、上、右、下)(右边距=图纸宽度-右位置,顶边距=图纸高度-顶位置)
//double factor; // 当前缩放比例
//double xScale; // X方向比例
//double yScale; // Y方向比例
//int t61i4[4];
//int nameLen; // 图层名称字符串长度
//char nameStr[80]; // 图层名称
//char t71c1094[1094]; // 剩余字节(0)
};
// 图层集 总图层
struct GMLayerTotal
{
int nLayerCount; // 图层总数
GMLayerHead head; // 每个图层结构
};
// 图元基本数据结构
struct GMBase
{
// 基本数据
int t1i1;
short t2s2;
int t3i3[3];
int angle; // 图元旋转角度
int t4i5[5];
IRect bbox; // 图元MBR
short moveable; // 是否允许移动
};
// 符号
struct GMSymbol
{
GMBase base; // 基本数据
// 专有数据
IPoint coordinate; // 中心坐标
int width,height; // 符号大小
int symbol; // 符号ID
GColor color; // 符号颜色(单色模式时使用)
GColor bkcolor; // 背景颜色
short transparence; // 是否透明
GColor fillColor; // +GM30(表示3.30以后版本增加的内容,以下类似) 填充颜色(彩色模式时使用)
short t1s1; // +GM35 ?
short colorMode; // +GM30 颜色模式(0:单色,1:彩色,2:设计颜色)
float widthScale; // +GM36 笔宽系数
int version; // 版本号------------------------------------------后添加
};
// Richedit字体结构
//(CHARFORMAT原始结构对齐方式为4字节这里为单字节,因此增加2字节)
//struct CharFormat
//{
// UINT cbSize;
// DWORD dwMask;
// DWORD dwEffects;
// LONG yHeight;
// LONG yOffset;
// COLORREF crTextColor;
// BYTE bCharSet;
// BYTE bPitchAndFamily;
// char szFaceName[32];
// short makeHappy; // 增加2字节对齐
//};
#define CharFormat CHARFORMAT
// 文本字符串结构
struct GMRichTextStr
{
int t0i1; // 屏幕分辨率?(=768)
CharFormat cf; // 字体
int t1i1; // 字体大小比例分母
int t2i1;
int t3i1;
::byte len; // 字符串长度
char str[100]; // 变长字符串 char[len]
};
// 文本行结构
struct GMRichTextLine
{
int t0i1;
int align; // 文字对齐方式
CharFormat cf; // 字符字体结构
int nStr; // 字符串数
GMRichTextStr * textStr;//nStr个GMRichTextStr对象------------------------后添加
// int tt; // 未知(=768),需要跳过
};
// 文本
struct GMRichText
{
GMBase base; // 基本数据
// 专有数据
IRect rect; // 文字范围
short drawBk; // 是否绘制背景颜色;
short t1s1;
GColor bkColor; // 背景颜色
int EditWidth; // 编辑宽度
int x; // 位置X
int y; // 位置X
int width; // 宽度
int height; // 高度
int angle; // 角度
int t37i1; // 背景色
int t38i1; // 透明
int t39i1; // 保留
int nLine; // 行数
GMRichTextLine *textLine; // nLine个GMRichTextLine对象后添加
int * temp; // 后续数据-----------------后添加
// GMRichTextLine *textLine; // 后面跟随nLine个GMRichTextLine对象
//(后面的数据无法用结构描述,需要具体分析)
};
//// 文本
//struct GMRichText
//{
// GMRichTextBase textBase;
// GMRichTextLine *textLine; // 每行后面跟随nLine个GMRichTextLine对象动态申请内存空间
// CPtrList strList; // 每行包含多个串每个元素为GMRichTextStr指针
//};
// 文字
struct GMText
{
GMBase base; // 基本数据
// 专有基本数据(20字节)
IRect rect; // 范围
int len; // 字符串长度
char str[256]; // 变长字符串内容
// 专有扩展数据()
double widthD; // 文字宽度
double heightD; // 文字高度
double angleD; // 文字旋转角度
GColor color; // 文字颜色
GColor bkColor; // 背景颜色
int DrawBk; // 是否绘制背景颜色
LOGFONT font; // 字体
int hollow; // 是否空心
int align; // 对齐方式(-1:左对齐,0:居中,1:右对齐)
int incline; // 倾斜方式(-1:左斜,0:正常,1右斜:)
double PenWidth; // 轮廓笔宽
double distChar; // +GM36 文字间距
//double iLine; // 文字行间距 可能是重复的去掉
int scale; // 是否等比缩放:定义文字在图层缩放时是否随图层比例变化。
// “no”为保持文字自身的长宽比不变缩放“yes”为文字长度比随图层的长宽比缩放
};
// 图例框
struct GMLegend
{
GMBase base; // 基本数据
// 专有数据
IPoint coordinate; // 坐标
int width,height; // 边框宽度、高度
short edge; // 边框线是否可见(0-N ; 1-Y)
short edgeWidth; // 边框线宽
GColor edgeColor; // 边框线颜色
short t1s1;
LOGFONT textFont; // 图例框说明字体名称
int textLen; // 图例框说明文字长度
char textStr[50]; // 图例框说明文字(换行用'|'字符替换)
int fontSize; // 图例框说明文字大小
GColor textColor; // 图例框说明文字颜色
double xOffset; // 图例框说明文字X偏移
double yOffset; // 图例框说明文字Y偏移
};
// 比例尺
struct GMScale
{
GMBase base; // 基本数据
// 专有数据
IPoint coordinate; // 坐标
int width; // 轴宽度
GColor color; // 轴颜色
LOGFONT nameFont; // 名称字体
int nameLen; // 名称长度
char nameStr[50]; // 名称文字
double value; // 比例尺数值
GColor nameColor; // 名称颜色
int nameSize; // 名称字体大小
int nameOffset; // 名称垂向偏移
int kdHeight; // 刻度线长
int kdWidth; // 刻度线宽
double t3d1;
double kdStart; // 起始刻度值
double kdEnd; // 终止刻度值
double kdInteval; // 刻度间隔
LOGFONT labelFont; // 标注字体
int unit; // 刻度单位标识(0=km,1=m,2=mm,3=mi,4=ya,5=ft,6=in)
int unitLen; // 刻度单位字符串长度
char unitStr[50]; // 刻度单位字符串
double scale; // 图件比例除以比例尺数值(Value*比例尺数值=图件比例)
int labelPrec; // 刻度标注精度(小数位数)
int labelSize; // 刻度标注字体大小
GColor labelColor; // 刻度标注颜色
int labelOffset; // 刻度标注偏移
int t2i1; // +GM35 ?
int t2i2; // +GM35 ?
int version; // 版本号------------------------------------后添加
};
// 地名(居民地)
struct GMReside
{
GMBase base; // 基本数据
// 专有数据
IPoint coordinate; // 坐标
int symID; // 符号ID
int symSize; // 符号大小
GColor symColor; // 符号颜色
LOGFONT nameFont; // 地名字体
int nameLen; // 地名文字长度
char nameStr[50]; // 地名文字
int nameSize; // 地名字体大小
GColor nameColor; // 字体颜色
int nameOffsetX; // 水平偏移
int nameOffsetY; // 垂直偏移
int nameTransparence;// 地名文字是否透明
GColor nameBkColor; // 字体背景颜色
int symTransparence;// 符号是否透明
GColor symBkColor; // 符号背景颜色
GColor fillColor; // +GM35 填充颜色
short t2s1; // +GM35
short colorMode; // +GM35 ?颜色模式
int version; // 版本号------------------------------------后添加
};
// 矩形/圆角矩形/线段
struct GMRectangle
{
GMBase base; // 基本数据
// 专有数据
int shpType; // 形状类型(1:矩形,3:圆角矩形,4:线段)
int fillStyle; // 填充风格(0不充填1填充颜色2填充符号3模式填充
int edgeDisp; // 是否显示边界
int symId; // 填充的模式或符号ID
int symSize; // 符号大小
GColor color; // 填充前景颜色
GColor colorBk; // 填充背景颜色
int edgeWidth; // 边线宽度
GColor edgeColor; // 边线颜色
IRect rect; // 控制矩形坐标/线段的起止点坐标
int xAngle; // 圆角矩形的圆角控制点X偏移
int yAngle; // 圆角矩形的圆角控制点Y偏移
int fillWidth; // 模式填充线宽度
int fillInterval; // 模式填充线间隔
int transparence; // 是否透明
GColor fillColor; // +GM30 填充颜色
short colorMode; // +GM35 颜色模式
short t2s1; // +GM35 ?
int version; // 版本号---------------------------------------后添加
};
// 饼/椭圆
struct GMPie
{
GMBase base; // 基本数据
// 专有数据
int shpType; // 饼(=2)
int fillStyle; // 填充风格
int edgeDisp; // 是否显示边界
int symId; // 填充的模式或符号ID
int symSize; // 符号大小
GColor color; // 填充前景颜色
GColor colorBk; // 填充背景颜色
int edgeWidth; // 边线宽度
GColor edgeColor; // 边线颜色
IRect rect; // 控制矩形坐标/线段的起止点坐标
int xAngle; // 圆角矩形的圆角控制点X偏移/饼的起始角度
int yAngle; // 圆角矩形的圆角控制点Y偏移/饼的结束角度
int fillWidth; // 模式填充线宽度
int fillInterval; // 模式填充线间隔
//int transparence; // 是否透明(饼图元无此项数据)
};
// 刻度轴
struct GMAxis
{
GMBase base; // 基本数据
// 专有数据
int type; // 刻度轴类型(0:线性,1:对数,2:概率)
IPoint coordinate; // 坐标
int len; // 轴长度
int width; // 轴线宽
GColor color; // 轴颜色
int arrow; // 轴是否带箭头
LOGFONT nameFont; // 名称字体
int nameLen; // 名称长度
char nameStr[100]; // 名称文字
int nameSize; // 名称字体大小
GColor nameColor; // 名称颜色
int nameOffset; // 名称垂向偏移
int nameAlign; // 名称对齐方式(0:居中,-1:起点,1:终点)
int kdShort; // 短刻度线长
int kdLong; // 长刻度线长
double kdStart; // 起始刻度值
double kdEnd; // 终止刻度值
double labelStart; // 刻度标注起始值
double labelEnd; // 刻度标注终止值
double labelInte; // 刻度标注间隔值
LOGFONT labelFont; // 标注字体
int labelSize; // 刻度标注文字大小
int labelAngle; // 刻度标注角度
int labelOffset; // 刻度标注偏移
int labelPrec; // 刻度标注精度(小数位数)
int labelSkip; // 刻度标注间隔数(跳过的标注个数)
};
// 方向标
struct GMCompass
{
GMBase base; // 基本数据
// 专有数据
int type; // 类型(0:基本型,1:指北针,2:箭头)
IPoint coordinate; // 坐标
int width,height; // 大小
int lineWidth; // 边线宽度
GColor lineColor; // 边线颜色
int fill; // 是否填充
GColor fillColor; // 填充颜色
LOGFONT nameFont; // 名称字体
int nameLen; // 名称长度
char nameStr[20]; // 名称文字
double nameOffset; // 名称纵向偏移比例(距离图元中心的距离 除以 图元高度)
int nameSize; // 名称字体大小
GColor nameColor; // 名称字体颜色
};
// 图框标注字体
struct GMMapFrameFont
{
LOGFONT font; // 字体名称
int size; // 字体大小
GColor color; // 字体颜色
};
// 图例标注
struct GMMapFrameLab
{
double value; // 标注值
int len1; // 主标注字符串长度
char str1[20]; // 主标注字符串
int len2; // 次标注字符串长度
char str2[20]; // 次标注字符串
IPoint pt[5];
IPoint pt2[2]; // 主标注及次标注的偏移量
};
// 图框
struct GMMapFrame
{
GMBase base; // 基本数据
// 专有数据
IRect rect; // 内框边界
int style; // 图框类型
int inWidth; // 内框线宽
GColor inColor; // 内框颜色
int midWidth; // 中框线宽
GColor midColor; // 中框颜色
int outWidth; // 外框线宽
GColor outColor; // 外框颜色
int inMid; // 内中间距
int outMid; // 外中间距
int fillStyle; // 填充模式 0 = 不填充 1= 纯色填充 2=符号填充 3 = 位图 4=元文件
int symId; // 填充符号
int symSize; // 符号大小
GColor color; // 填充前景颜色
GColor bkColor; // 填充背景颜色
int offset; // 偏移
int gridType; // 格网类型(=0 无格网 =1 经纬网 =2 直角网,=3 经纬与直角网,=4 方里网,=5 经纬与方里网)
int jwWidth; // 经纬网线宽
GColor jwColor; // 经纬网颜色
int zjWidth; // 直角网线宽
GColor zjColor; // 直角网颜色
int flWidth; // 方里网线宽
GColor flColor; // 方里网颜色
int jwFlag; // 经纬网标注风格(0:不绘网格,不标值; 1:绘网格,不标值;2:不绘网格,标值;3:绘网格,标值)
int zjFlag; // 直角网标注风格(0:不绘网格,不标值; 1:绘网格,不标值;2:不绘网格,标值;3:绘网格,标值)
int flFlag; // 方里网标注风格(0:不绘网格,不标值; 1:绘网格,不标值;2:不绘网格,标值;3:绘网格,标值)
int t2i3[3];
double lonStart; //(经纬网)指定某经线
double lonInte; //(经纬网)指定经差
double latStart; //(经纬网)指定某纬线
double latInte; //(经纬网)指定纬差
double zjXStart; //(直角)指定某纵线
double zjXInte; //(直角)纵线间隔
double zjYStart; //(直角)指定某横线
double zjYInte; //(直角)横线间隔
double flXStart; //(方里网)指定纵线
double flXInte; //(方里网)纵线间隔
double flYStart; //(方里网)指定某横线
double flYInte; //(方里网)横线间隔
GMMapFrameFont zj; // 经度主标注字体
GMMapFrameFont fj; // 经度次标注字体
int fjPrec; // 经度次标注类别(0:无,1:分,2:秒)
GMMapFrameFont zw; // 纬度主标注字体
GMMapFrameFont fw; // 纬度次标注字体
int fwPrec; // 纬度次标注类别(0:无,1:分,2:秒)
GMMapFrameFont zx; // 直角X主标注字体
GMMapFrameFont fx; // 直角X次标注字体
int fxPrec; // 直角次X值位数
GMMapFrameFont zy; // 直角Y主标注字体
GMMapFrameFont fy; // 直角Y次标注字体
int fyPrec; // 直角次Y值位数
int zjxyUnit; // 直角XY单位(0:毫米,1:米)
double t3d1;
GMMapFrameFont zx1; // 方里网X主标注字体
GMMapFrameFont fx1; // 方里网X次标注字体
int fx1Prec;
GMMapFrameFont zy1; // 方里网Y主标注字体
GMMapFrameFont fy1; // 方里网Y次标注字体
int fy1Prec; // 方里网次Y值位数
int flxyUnit; // 方里网XY单位(0:毫米,1:米)
double t4d1;
int version; // 版本号--------------------------------后添加
int remain; // 剩余字节数----------------------------后添加
char * remaniChr; // 保存剩余字节数的数据------------------后添加
//int nLon; // 经度标注个数
//GMMapFrameLab label1[9];
};
// 网格
struct GMGrid
{
GMBase base; // 基本数据
// 基本属性
IRect rect; // 网格内框矩形
GColor majorColor; // 主格颜色
GColor minorColor; // 次格颜色
int majorLineWidth; // 主格线宽
int minorLineWidth; // 次格线宽
LOGFONT font; // 标注字体
int fontSize; // 标注字体大小
GColor fontColor; // 标注字体颜色
int xAxisPrec; // 横轴标注小数位数
int yAxisPrec; // 纵轴标注小数位数
//纵轴标注偏移
int yLeftOffsetX; // 纵轴左标注X偏移
int yLeftOffsetY; // 纵轴左标注Y偏移
int yRightOffsetX; // 纵轴右标注X偏移
int yRightOffsetY; // 纵轴右标注Y偏移
//横轴标注偏移
int xTopOffsetX; // 横轴上标注X偏移
int xTopOffsetY; // 横轴上标注Y偏移
int xBottomOffsetX; // 横轴下标注X偏移
int xBottomOffsetY; // 横轴下标注Y偏移
int drawBk; // 是否绘制背景
GColor colorBk; // 背景颜色
int drawGrid; // 是否绘制网格
//横轴定义
double xKdStart; // 横轴起始刻度值
double xKdEnd; // 横轴终止刻度值
double xLabelStart; // 横轴起标值
double xLabelEnd; // 横轴终标值
double xMajorValue; // 横轴主格间隔
int xMinorValue; // 横轴次格间隔
int xAxisType; // 横轴类型 0线性型1对数型2概率型3无定义
int xLabelType; // 横轴标注方式 0无标注1上下标注2上标注3下标注
//纵轴定义
double yKdStart; // 纵轴起始刻度值
double yKdEnd; // 纵轴终止刻度值
double yLabelStart; // 纵轴起标值
double yLabelEnd; // 纵轴终标值
double yMajorValue; // 纵轴主格间隔
int yMinorValue; // 纵轴次格间隔
int yAxisType; // 纵轴类型 0线性型1对数型2概率型3无定义
int yLabelType; // 纵轴标注方式 0无标注1左右标注2左标注3右标注
int labelSkip; // 跳过的标注个数(?)
};
// 井位
struct GMWell
{
GMBase base; // 基本数据
// 专有数据
IPoint topCoord; // 井口坐标
int topSymbol; // 井口符号ID
int topSize; // 井口符号大小
GColor topColor; // 井口符号颜色
GColor topBkColor; // + GM33 井口符号背景色
int topBkTrans; // + GM33 井口符号是否透明
GColor topFillColor; // + GM33 井口符号填充色
short t1s1; // + GM33 =0
short t1s2; // + GM33 =0
IPoint bottomCoord; // 井底坐标
int bottomSymbol; // 井底符号ID
int bottomSize; // 井底符号大小
GColor bottomColor; // 井底符号颜色
GColor botBkColor; // + GM33 井口符号背景色
int botBkTrans; // + GM33 井口符号是否透明
GColor botFillColor; // + GM33 井口符号填充色
short version; // + GM33 =0
short t2s2; // + GM33 符号颜色模式
short topColorMode; // + GM35 井口符号颜色模式
short botColorMode; // + GM35 井底符号颜色模式
float topPenScale; // + GM36 井口符号笔宽系数
float botPenScale; // + GM36 井底符号笔宽系数
LOGFONT nameFont; // 井名字体
int nameLen; // 井名文字长度
char nameStr[100]; // 井名文字
int nameSize; // 井名文字字体大小
GColor nameColor; // 井名文字字体颜色
int nameOffsetX; // 井名文字横向偏移
int nameOffsetY; // 井名文字纵向偏移
int nameTransparence; // 井名文字是否透明
GColor nameColorBk; // 井名文字背景颜色
};
// 多边形
struct GMPolygon
{
GMBase base; // 基本数据
// 名称属性(+GM35)
int nameLen; // +GM35 名称长度
char name[256]; // +GM35 名称
// 名称字体属性(+GM35)
LOGFONT nameFont; // +GM35 字体(60)
int nameSize; // +GM35 文字大小(应除以10)
GColor nameColor; // +GM35 文字颜色
int nameDrawBk; // +GM35 是否绘制背景颜色
GColor nameBkColor; // +GM35 背景颜色
int t1i1; // +GM35
int t1i2; // +GM35
int t1i3; // +GM35
int t1i4; // +GM35
int t1i5; // +GM35
int version; // +GM35
int t1i7; // +GM36
float penScale; // +GM36 笔宽系数
// 专有数据
int fillStyle; // 填充模式(0不充填1填充颜色2填充符号3模式填充
int symId; // 填充符号
int symSize; // 符号大小
GColor fillColor; // 填充前景颜色
GColor fillColorBk; // 填充背景颜色
int t2i1; // +GM35
short colorMode; // +GM35 颜色模式(0:单色,1:彩色,2:设计)
int smooth; // 边界平滑方式(0:不平滑,1:抛物线加权,2:张力样条,3:二次B样条)
int t3i1; // +GM35
int t3i2; // +GM35
int t3i3; // +GM35
short transparence; // 是否透明
short edge; // 边界是否可见
GColor edgeColor; // 边界颜色
int edgeWidth; // 边界线宽
int patLineW; // 模式填充(系统图案)线宽
int patLineI; // 模式填充(系统图案)线间距
int nPoint; // 顶点个数
};
// 曲线/等值线/断层线
struct GMPolyline
{
GMBase base; // 基本数据
// 专有数据
int subType; // 曲线类型(0:曲线1等值线2断层)
IPoint coor; // 曲线位置(目前版本值为0)
int labelLen; // 曲线名称长度
char labelStr[100]; // 曲线名称
LOGFONT labelFont; // 标注字体
GColor labelColor; // 标注颜色
int smooth; // 边界平滑方式(0:不平滑,1:抛物线加权,2:张力样条,3:二次B样条)
// (新版本增加了平滑的方法种类但不能保存文件中该参数仅为0或1)
GColor color; // 曲线颜色
double lineWidth; // 线宽(应除以10)
double LayerWidth; // 层宽比
double LayerLength; // 层长比
int lineStyle; // 线型
int colorDef; // 缺省颜色(0:不使用缺省,1:使用缺省)
int version; // 版本号
int nLabel; // 标注点个数(仅对等职线有效其他为0)
int nPoint; // 顶点个数
char temBuf[28]; // 扩展--------------------------------------------后添加
char temBuf2[8]; // 扩展--------------------------------------------后添加
char temBuf3[8]; // 扩展--------------------------------------------后添加
char temBuf4[8]; // 扩展--------------------------------------------后添加
double *labelData; // 标注点数据集------------------------------------后添加
};
// 等值线(32-36,32之后有多余数据)
struct GMIsoline
{
GMBase base; // 基本数据
// 专有数据
int subType; // 曲线类型(目前版本值为0)
IPoint coor; // 曲线位置(目前版本值为0)
int labelLen; // 高程值字符串长度
char labelStr[100]; // 高程值字符串
LOGFONT labelFont; // 高程标注字体
GColor labelColor; // 高程标注颜色
int smooth; // 边界平滑方式(0:不平滑,1:抛物线加权,2:张力样条,3:二次B样条)
// (新版本增加了平滑的方法种类但不能保存文件中该参数仅为0或1)
GColor color; // 曲线颜色
double lineWidth; // 线宽(应除以10)
double LayerWidth; // 层宽比
double LayerLength; // 层长比
int lineStyle; // 线型
int colorDef; // 缺省颜色(0:不使用缺省,1:使用缺省)
int t4i1; // (?==0)
int nLabel; // 标注点个数(仅对等职线有效其他为0)
int nPoint; // 顶点个数
char temBuf[28]; // 扩展--------------------------------------------后添加
char temBuf2[8]; // 扩展--------------------------------------------后添加
double temDbl; // 扩展--------------------------------------------后添加
double temDbl2; // 扩展--------------------------------------------后添加
double *labelData; // 标注点数据集------------------------------------后添加
};
// 断层线(32-36,32之后有多余数据)
struct GMFault
{
GMBase base; // 基本数据
// 专有数据
int subType; // 曲线类型(目前版本值为0)
IPoint coor; // 曲线位置(目前版本值为0)
int labelLen; // 断层名称长度
char labelStr[100]; // 断层名称
LOGFONT labelFont; // 标注字体
GColor labelColor; // 标注颜色
int turnGroup; // 断层掉向组数
double turnPosition; // 掉向位置
int turnDirection; // 断层掉向和顶点顺序是否一致(0:逆向,1:顺向)
int turnLength; // 断层掉向线段的长度
int turnWidth; // 断层掉向线段的线宽
int faultType; // 断层性质(0:正断层,1:逆断层,2:不明断层,3:不明正断层,4:不明逆断层)
int smooth; // 边界平滑方式(0:不平滑,1:抛物线加权,2:张力样条,3:二次B样条)
// (新版本增加了平滑的方法种类但不能保存文件中该参数仅为0或1)
GColor color; // 曲线颜色
double lineWidth; // 线宽
double LayerWidth; // 层宽比
double LayerLength; // 层长比
int lineStyle; // 线型
int colorDef; // 缺省颜色(0:不使用缺省,1:使用缺省)
int t3i1; // (?==0)
int nLabel; // 标注点个数(仅对等职线有效其他为0)
int nPoint; // 顶点个数
int version; // 版本号----------------------------------------后添加
double tmpDbl; // 扩展----------------------------------------后添加
double tmpDbl2; // 扩展----------------------------------------后添加
double tmpDbl3; // 扩展----------------------------------------后添加
double *labelData; // 标注点数据集--------------------------------后添加
};
// 地震测线(32-36)
struct GMSeisLine
{
GMBase base; // 基本数据
// 专有数据
int gridType; // 网格类型(0:测线网,1:麻点图)
int labelMode; // 标注方式(0:无标注,1:左侧,2:右侧,3:左右两侧)
int lineWidth; // 测线宽度
int nameLen; // 名称长度
char lineName[50]; // 名称
LOGFONT nameFont; // 名称字体
GColor color; // 名称颜色
GColor lineColor; // 测线颜色
int labBeg; // 炮点标注的起始点号
int labEnd; // 炮点标注的结束点号
int shotRadium; // 炮点半径
int shotInte; // 炮点间隔
int shotDisp; // 标注间隔
LOGFONT shotFont; // 炮点标注字体
int nPoint; // 坐标点数
int nameSize; // 名称大小(旁边的字体) 取反
int labSize; // 炮点标注大小 取反
int t3i5[4];
DPoint ptStart; // 起点坐标
int t4i6[6];
DPoint ptEnd; // 终点坐标
IPoint pt3[4];
IPoint pt4[4];
int remain; // 剩余字节数----------------------------后添加
char *remainData; // 保存剩余字节数据----------------------后添加
};
// 自定义形状
struct GMCustom
{
GMBase base; // 基本数据
// 专有数据
short subType; // 图元子类别(=图元类别-46)
IPoint coordinate; // 坐标
int width,height; // 大小
short edge; // 是否绘制边界
int edgeWidth; // 边界宽度
GColor edgeColor; // 边界颜色
short fillStyle; // 填充风格(0:不填充,1:颜色填充,2:// 符号填充)
GColor fillColor; // 填充颜色
int fillSymbol; // 填充符号ID
int symSize; // 符号大小
GColor symColor; // 符号前景色
GColor symColorBk; // 符号背景色
int elemType; // 自定义元素类型
int ctrlPointNum; // 控制点数
double ctrlPt[8]; // 控制点(最多8个)
};
// 位图
struct GMBmp
{
GMBase base; // 基本数据
// 专有数据
IRect rect; // 位置和大小
int t1i1;
int t2i1;
int iW,iH; // 图片大小
int aspect; // 是否等比缩放
int edge; // 是否显示边界
GColor edgeColor; // 边界颜色
int edgeWidth; // 边界线宽
int bmpSize; // BMP位图数据字节长度
BYTE * pbuffer; // 保存数据----------------------------后添加
// 完整的位图数据 //(与BMP文件头有所不同,比BMP独立文件少14个字节而且此后的24个字节内容有所不同有待分析)
};
// 元文件
struct GMMetafile
{
GMBase base; // 基本数据
// 专有数据
IRect rect; // 位置和大小
int t1i1;
int t2i1;
int aspect; // 是否等比缩放
int transparence; // 是否透明
GColor colorBk; // 背景颜色
int edge; // 是否显示边界
GColor edgeColor; // 边界颜色
int edgeWidth; // 边界线宽
int emfSize; // EMF数据字节长度
BYTE *pbuffer; // 保存数据-----------------------------------后添加
// 完整的EMF数据
};
// 统计图(MS CHART)
struct GMGraphy
{
GMBase base; // 基本数据
// 专有数据
IRect rect; // 矩形
int count; // 总字节数
short rowCount; // 行数
short columnCount; // 列数
char num[10]; // 序号
char *name; //层名称 动态
char **dataNum; // 层数据序号
double **data; //层位数据(顶深或底深)动态
};
// 岩性符号
struct GMLithSymbol
{
double depth; // 深度值
double scale; // 缩进比例
int symId; // 符号ID
int symSize; // 符号大小
GColor symColor; // 前景色
GColor symColorBk; // 背景色
GColor symColorFill; // 填充色
short ex1; // 扩展
short colorModel; // 颜色模式
int transparentBk; // 背景透明
int contactType; // 岩层整合类型(0:整合,1:假整合,2:不整合)
int drawModel; // 绘制方式
int ex2; // 扩展2
};
//测井曲线
struct GMLog
{
GMBase base; // 基本数据
// 专有数据
int leftBound; // 左边界 需缩小十倍
int bottomBound; // 底边界 需缩小十倍
int rightBound; // 右边界 需缩小十倍
int topBound; // 顶边界 需缩小十倍
int oilNameLen; // 油田名称长度
char * oilName; // 油田名称
int wellNameLen; // 井名称长度
char * wellName; // 井名称
int curveNameLen; // 曲线名称长度
char * curveName; // 曲线名称
int axisType; // 坐标类型
double depthStart; // 起始深度
double depthEnd; // 结束深度
double sample; // 采样率
double leftScale; // 左刻度
double rightScale; // 右刻度
int ex1; // 扩展
int ex5; // 扩展
int ex2; // 扩展
int ex6; // 扩展
int ex7; // 扩展
int ex8; // 扩展
int ex3; // 扩展
int ex4; // 扩展
int nSample; // 采样点数(每个样点包含一个深度和一个数值,均为双精度值)
DPoint *dp; // 深度和值----------------------------------------后添加
};
// 岩性剖面
struct GMLithSection
{
GMBase base; // 基本数据
// 专有数据
int drawMode; // 绘制方式(0:单个绘制,1:符号填充,2:单行绘制)
IRect rect; // 边框矩形
int edgeMode; // 边线方式(0:直边界,1:右测井曲线,2:双测井曲线,3:岩性缩进,4:沉积韵律)
// 沉积韵律比直边界和岩性缩进多个4个字节
int layerEdgeWidth; // 层边线宽度
GColor layerEdgeColor; // 层边线颜色
double depthStart; // 起始深度
double depthEnd; // 结束深度
int nLog; // 测井曲线数
int logLen; // 数据长度
int t3i1; // 扩展1
int ex1; // 扩展2
int isLeftFrame; // 是否绘制左边框
int isTopFrame; // 是否绘制顶边框
int isRightFrame; // 是否绘制右边框
int isBottomFrame; // 是否绘制底边框
int frameWidth; // 边框线宽度
int colEdgeWidth; // 柱边线宽度
GColor colEdgeColor; // 柱边线颜色
GColor frameColor; // 边框线颜色
int nLabel; // 岩性符号个数(按照深度自上而下排列)
short * eleType; // 图元类型----------------------------------后添加
int *eleLogLen; // 图元长度----------------------------------后添加
GMLog *log; // 测井曲线----------------------------------后添加
GMLithSymbol * lithSymbol;//岩性符号---------------------------------后添加
// nLabel个岩性符号
//int edgeMode1; // 边线方式(重复记录)
};
// 地震工区
struct GMSeisArea
{
GMBase base; // 基本数据
// 专有数据
int nameLen; // 工区名称长度
char nameStr[50]; // 工区名称
int edge; // 是否显示边界
int edgeType; // 边界类型(0:虚线,1:实线)
int edgeWidth; // 边界线宽
GColor edgeColor; // 边界颜色
int dispTyle; // 显示方式0:网格,1:三维测线,2:麻点)
int lineWidth; // 测线宽度
GColor lineColor; // 测线颜色
int cdpSize; // CDP点大小
GColor cdpColor; // CDP点颜色
IPoint mainLinePt1; // 主测线第一点坐标
IPoint mainLinePt2; // 主测线第二点坐标
int mainLineDistence; // 主测线间距
int shotDistence; // 炮点间距
int secLineDistence;// 辅测线间距
int nPoint; // 边界点数
};
// 地震变密度显示振幅颜色对
struct GMAmpColor
{
double amp; // 振幅
GColor color; // 颜色
int t1i1;
};
// 地震剖面
struct GMSeisSection
{
GMBase base; // 基本数据
// 专有数据
int dispMode; // 显示模式(1:波形,2:变面积,4:变密度)
IRect rect; // 剖面矩形
int cdpStart; // 起始CDP
int cdpEnd; // 终止CDP
int cdpSkip; // CDP间隔(抽稀道数)
int timeStart; // 起始时间(微妙)
int timeEnd; // 终止时间(微妙)
int timeInte; // 时间间隔(微妙)
int timeInte2; // 时间加密间隔(微妙)
double xScale; // 横向显示比例
double yScale; // 纵向显示比例
double cdpDist; // 道(CDP)间距
int waveWidth; // 波形线宽度
GColor waveColor; // 波形线颜色
GColor areaColor; // 变面积颜色
int t0i9[9]; // +GM36 ?
int ampColors; // 变密度显示振幅色阶数
GMAmpColor ampColor; // 振幅颜色(ampColors个连续存放)
int cmapOffset; // 颜色表水平偏移
int cmapWidth; // 颜色表宽度
int cmapHeight; // 颜色表高度
LOGFONT cmapFont; // 颜色表字体
int cmapFontSize; // 颜色表字体大小
GColor cmapFontColor; // 颜色表字体颜色
// 以下为原始剖面数据参数
int sample1; // 数据起始样点数(==0)
int sample0; // 数据采样间隔(微妙)
int sample2; // 数据终止样点数(sample2-sample1)*sample0=剖面时间长度
// 此处sample2严格意义应该减1
int cdp1; // 起始CDP
int cdp2; // 终止CDP
int cdp0; // CDP间隔
int cdps; // CDP个数(道数)
int t1i1; // ?(1)
int t2i1; // ?()
double cdpDistD; // CDP间距
double ampMin; // AMP最小值
double ampMax; // AMP最大值
int dataLen; // 数据字节长度(道数*道样点数*4)
// nSample/4 个样点值(浮点数)
// GdbAxis 左时间轴
// GdbAxis 右时间轴
// GdbAxis CDP轴
// GdbAxis 网格(轴)
// 地震处理参数、是否绘制轴和网格在Geomap32中文件中不存在仅在软件界面中出现
int t3i1; // +GM35 ?
GColor t4c1; // +GM35 ?
GColor t5c1; // +GM35 ?
short leftType;
int leftLen;
GMAxis leftAxis; // 左时间轴
short rightType;
int rightLen;
GMAxis rightAxis; // 右时间轴
short cdpType;
int cdpLen;
GMAxis cdpAxis; // cdp轴
short gridType;
int gridLen;
GMGrid grid; // 直角网格
GMAmpColor * cmap; // 颜色表数据
float * pData; // 地震数据
int version; // 版本号
};
// 三角图单点数据
struct GMTriData
{
double a,b,c;
};
// 三角图
struct GMTriangle
{
GMBase base; // 基本数据
// 专有数据
LOGFONT font; // 字体
IRect rect; // 范围
::byte aLen; // 第一个变量名长度
char aStr[21]; // 第一个变量名
::byte bLen; // 第二个变量名长度
char bStr[21]; // 第二个变量名
::byte cLen; // 第三个变量名长度
char cStr[21]; // 第三个变量名
double start; // 起始刻度
double end; // 终止刻度
double inte; // 刻度间隔
GColor lineColor; // 刻度线颜色
int t1i1;
int symId; // 符号ID
int symSize; // 符号大小
int lineWidth; // 刻度线宽度
GColor symColor; // 符号颜色
short t2s1; // +GM35
GColor bkColor; // +背景颜色
GColor fillColor; // +填充颜色
short colorModel; // +颜色模式
short nSample; // 数据点数
GMTriData *triData; // nSample个TriData
};
// 井旁曲线
struct GMWellLog
{
GMBase base; // 基本数据
// 专有数据
IRect rect; // 边框范围(左、下、右、上)
double depthStart; // 起始深度
double depthEnd; // 结束深度
int t1i1;
int style; // 曲线类型(0:折线图,1:谱线图,2:直方图)
int lineWidth; // 曲线宽度
GColor lineColor; // 曲线颜色
int edge; // 是否绘制边界线
GColor edgeColor; // 边界颜色
int edgeWidth; // 边界宽度
double min; // 最小值
double max; // 最大值
int nSample; // 数据点数(每个样点包含一个深度和一个数值,均为双精度值)
DPoint *sample; // 数据存储区---------------------------------------------后添加
};
// 井旁标记符号
struct GMWellSymbol
{
double depth; // 深度
int angle; // 旋转角度
int symId; // 符号ID
int symSize; // 符号大小
int expand2; // 扩展2
GColor symColor; // 符号颜色
GColor bkColor; // 背景颜色
short bkTransparent; // 背景透明
short expand1; // 扩展1
GColor fillColor; // 填充颜色
};
// 井旁标记
struct GMWellMarker
{
GMBase base; // 基本数据
// 专有数据
IRect rect; // 外包矩形
double depthStart; // 起始深度
double depthEnd; // 结束深度
int t1i1;
int frame; // 是否绘制边框
GColor frameColor; // 边框颜色
int frameWidth; // 边框线宽度
int nSymbol; // 标记符号个数
GMWellSymbol * wellSymbol; // 标记符号----------------------------后添加
// nSymbol个GdbWellSymbol
};
// 井旁文字
struct GMWellText
{
GMBase base; // 基本数据
// 专有数据
IRect rect; // 外包矩形
double depthStart; // 起始深度
double depthEnd; // 结束深度
int t1i1;
int descDirection; // 描述方向(0:横向,1:竖向,2:覆盖线,3:深度点)
int frame; // 是否绘制边框
GColor frameColor; // 边框颜色
int frameWidth; // 边框线宽度
int nText; // 文字个数
GMText * text; // nText个GMText结构--------------------------后添加
double *depth; // 井旁文字注释深度值nText个------------------后添加
short *tmpInt2; // 图元类型nText个----------------------------后添加
int *strLen; // 图元数据长度nText个------------------------后添加
};
// 油水柱子
struct GMOilWaterCol
{
GMBase base; // 基本数据
// 专有数据
IPoint center; // 中心点坐标
int width; // 边框宽度
short frame; // 是否绘制边框
int lineWidth; // 边框线宽
GColor lineColor; // 边框线颜色
int oilNameLength; // 油产量长度
char *oilColScale; // 油产量
int waterNameLength; // 水产量长度
char * waterColScale; // 水产量
double oilheightRatio; // 油柱高比
double waterHeightRatio;// 水柱高比
double columnHeightRatio;// 柱高系数
LOGFONT nameFont; // 说明字体
int nameSize; // 说明字体大小
GColor nameColor; // 说明字体颜色
double t2d2[2];
GColor oilColor; // 油柱颜色
GColor waterColor; // 水柱颜色
};
// 数据十字
struct GMDataCross
{
GMBase base; // 基本数据
// 专有数据
IPoint center; // 中心点坐标
int width; // 边框宽度
int height; // 边框高度
short frame; // 是否绘制边框
int lineWidth; // 边框线宽
GColor lineColor; // 边框线颜色
LOGFONT nameFont; // 字体
int len1; // 左上角文字长度
char str1[50]; // 左上角文字
int len2; // 左下角文字长度
char str2[50]; // 左下角文字
int len3; // 右上角文字长度
char str3[50]; // 右上角文字
int len4; // 右下角文字长度
char str4[50]; // 右下角文字
int nameSize; // 字体大小
GColor nameColor; // 字体颜色
DPoint offset1; // 左上角文字相对偏移
DPoint offset2; // 左下角文字相对偏移
DPoint offset3; // 右上角文字相对偏移
DPoint offset4; // 右下角文字相对偏移
double offsetX; // 水平线相对偏移
double offsetY; // 垂直线相对偏移
};
#pragma pack()
/////////////////////////////////////////////////////////////////////////////////
//only for GXF file
//map, "柱状图", "M",比例, x0, y0, x1, y1
struct GxfMap
{
char mapName[80]; // 图件名称
char unit[60]; // 绘图单位
double scaleFactor; // 原图比例
DRect rect; // 坐标范围
double paperWidth; // 图件宽度(毫米:MM下同
double paperHeight; // 图件高度
};
struct GxfTransform
{
double xScale; // X方向比例
double yScale; // Y方向比例
DPoint point; // 坐标(可能是大地坐标或平面坐标点)
DSize size; // 坐标(转换后的经纬度坐标点)
};
struct GxfLayer
{
int layerIndex; // 图层索引
char nameStr[80]; // 图层名称
char unit[60]; // 图层单位
double scaleFactor; // 原图比例
DRect rect; // 图层坐标范围
};
//text, 文字名称, 文字颜色, 0, 0, 文字角度, 0, 字体名称, 文字高度, 0.0, 0, X, Y
struct GxfText
{
char str[256]; // 变长字符串内容
DPoint point; // 坐标
char fontName[32]; // 字体名称
double widthD; // 文字宽度
double heightD; // 文字高度
double angleD; // 文字旋转角度
GColor color; // 文字颜色
int extend1; // 扩展1
int extend2; // 扩展2
int extend3; // 扩展3
int extend4; // 扩展4
};
// 符号
struct GxfSymbol
{
DPoint coordinate; // 中心坐标
double width,height; // 符号大小
int symbol; // 符号ID
GColor color; // 前景颜色(单色模式时使用)
GColor bkcolor; // 背景颜色
short transparence; // 是否透明
GColor fillColor; // +GM30(表示3.30以后版本增加的内容,以下类似) 填充颜色(彩色模式时使用)
short colorMode; // +GM30 颜色模式(0:单色,1:彩色,2:设计颜色)
double angle;
};
// 矩形/圆角矩形/线段
struct GxfRect
{
int shpType; // 形状类型(1:矩形,3:圆角矩形,4:线段)
int fillStyle; // 填充风格(0不充填1填充颜色2填充符号3模式填充
int edgeDisp; // 是否显示边界
GColor color; // 填充前景颜色
double edgeWidth; // 边线宽度
GColor edgeColor; // 边线颜色
DRect rect; // 控制矩形坐标/线段的起止点坐标
double xAngle; // 圆角矩形的圆角控制点X偏移/饼的起始角度
double yAngle; // 圆角矩形的圆角控制点Y偏移/饼的结束角度
int modeIndex; // 模式索引
GColor colorBK; // 填充背景颜色
};
// 饼/椭圆
struct GxfPie
{
DRect rect; // 控制矩形坐标
int shpType; // 饼(=2) // 模式--模式填充时候存在
int fillStyle; // 填充风格 4:颜色填充 5不填充 6符号填充
int edgeDisp; // 是否显示边界
GColor edgeColor; // 边线颜色
GColor colorBF; // 前景颜色
GColor colorBK; // 背景颜色
double edgeWidth; // 边线宽度
double xAngle; // 圆角矩形的圆角控制点X偏移/饼的起始角度
double yAngle; // 圆角矩形的圆角控制点Y偏移/饼的结束角度
};
// 地震测线
struct GxfSeisLine
{
char lineName[50]; // 1测线名称
GColor lineColor; // 2测线颜色
double lineWidth; // 3测线宽度
int gridType; // 4网格类型(0:测线网,1:麻点图)
int labelMode; // 5标注方式(0:无标注,1:左侧,2:右侧,3:左右两侧)
GColor color; // 6名称颜色
LOGFONT nameFont; // 7名称字体
double nameSize; // 8名称大小(旁边的字体) 取反
int extend; // 扩展
double shotRadium; // 10炮点半径
int shotInte; // 11炮点间隔
int shotDisp; // 12标注间隔
LOGFONT shotFont; // 13炮点标注字体
double labSize; // 14炮点标注大小 取反
int nPoint; // 16坐标点数
};
// 井位
struct GxfWell
{
char nameStr[100]; // 井名文字
GColor topColor; // 井口符号颜色
GColor topBkColor; // + GM33 井口符号背景色
GColor topFillColor; // + GM33 井口符号填充色
int topBkTrans; // + GM33 井口符号是否透明
double topSize; // 井口符号大小
int topSymbol; // 井口符号ID
short topColorMode; // 井口颜色模式
GColor bottomColor; // 井底符号颜色
GColor botBkColor; // + GM33 井口符号背景色
GColor botFillColor; // + GM33 井口符号填充色
int botBkTrans; // + GM33 井口符号是否透明
double bottomSize; // 井底符号大小
int bottomSymbol; // 井底符号ID
short bottomColorMode;// 井底颜色模式
//short topColorMode; // + GM35 井口符号颜色模式
//short botColorMode; // + GM35 井底符号颜色模式
float topPenScale; // + GM36 井口符号笔宽系数
float botPenScale; // + GM36 井底符号笔宽系数
LOGFONT nameFont; // 井名字体
GColor nameColor; // 井名文字字体颜色
double nameSize; // 井名文字字体大小
double nameOffsetX; // 井名文字横向偏移
double nameOffsetY; // 井名文字纵向偏移
DPoint topCoord; // 井口坐标
DPoint bottomCoord; // 井底坐标
};
// 地名(居民地)
struct GxfReside
{
DPoint coordinate; // 坐标
int symID; // 符号ID
double symSize; // 符号大小
GColor symColor; // 符号颜色
int symTransparence;// 符号是否透明
GColor symBkColor; // 符号背景颜色
LOGFONT nameFont; // 地名字体
char nameStr[50]; // 地名文字
double nameSize; // 地名字体大小
GColor nameColor; // 字体颜色
double nameOffsetX; // 水平偏移
double nameOffsetY; // 垂直偏移
GColor nameBkColor; // 字体背景颜色
GColor fillColor; // +GM35 填充颜色
short colorMode; // +GM35 颜色模式
};
// 图框
struct GxfFrame
{
DRect rect; // 内框边界
int style; // 图框类型
double inWidth; // 内框线宽
GColor inColor; // 内框颜色
double midWidth; // 中框线宽
GColor midColor; // 中框颜色
double outWidth; // 外框线宽
GColor outColor; // 外框颜色
double inMid; // 内中间距
double outMid; // 外中间距
};
// 比例尺
struct GxfScale
{
DPoint coordinate; // 坐标
double width; // 轴宽度
double value; // 比例尺数值
GColor color; // 轴颜色
LOGFONT nameFont; // 名称字体
GColor nameColor; // 名称颜色
double nameSize; // 名称字体大小
double nameOffset; // 名称垂向偏移
double kdHeight; // 刻度线长
double kdWidth; // 刻度线宽
double kdStart; // 起始刻度值
double kdEnd; // 终止刻度值
double kdInteval; // 刻度间隔
LOGFONT labelFont; // 标注字体
char unitStr[50]; // 刻度单位字符串
int unit; // 刻度单位标识(0=km,1=m,2=mm,3=mi,4=ya,5=ft,6=in)
GColor labelColor; // 刻度标注颜色
double labelSize; // 刻度标注字体大小
double labelOffset; // 刻度标注偏移
int decimalCou; // 刻度小数位数
int extend; // 扩展
int extend2; // 扩展2;
};
// 图例框
struct GxfLegend
{
DPoint coordinate; // 坐标
double width, height; // 边框宽度、高度
short edge; // 边框线是否可见(0-N ; 1-Y)
double edgeWidth; // 边框线宽
GColor edgeColor; // 边框线颜色
LOGFONT textFont; // 图例框说明字体名称
char textStr[50]; // 图例框说明文字(换行用'|'字符替换)
double fontSize; // 图例框说明文字大小
GColor textColor; // 图例框说明文字颜色
double xOffset; // 图例框说明文字X偏移
double yOffset; // 图例框说明文字Y偏移 tni
int extend; // 扩展
};
// 位图
struct GxfBmp
{
DRect rect; // 位置和大小
char nameStr[50]; // 位图名称
char bmpType[50]; // 图像类型
char bmpCode[50]; // 图像编码方式
int bmpSize; // 图像编码后的数据行数每行占80个字节
// 完整的位图数据 //(与BMP文件头有所不同,比BMP独立文件少14个字节而且此后的24个字节内容有所不同有待分析)
};
// 位图
struct GxfMeta
{
DRect rect; // 位置和大小
char nameStr[50]; // 位图名称
char bmpType[50]; // 图像类型
char bmpCode[50]; // 图像编码方式
int bmpSize; // 图像编码后的数据行数每行占80个字节
// 完整的位图数据 //(与BMP文件头有所不同,比BMP独立文件少14个字节而且此后的24个字节内容有所不同有待分析)
};
// 多边形
struct GxfPolygon
{
char name[256]; // +GM35 名称
short edge; // 边界是否可见
int fillStyle; // 填充模式(0不充填1填充颜色2填充符号3模式填充
GColor edgeColor; // 边界颜色
double edgeWidth; // 边界线宽
int ext2; // 4,5,6
int modeIndex; // 模式索引0=水平线1=垂直线2=左斜纹3=右斜纹4=直角网5=斜网格为81时表示为符号充填
GColor fillColor; // 填充颜色
GColor fillColorBF; // 填充前景颜色
GColor fillColorBk; // 填充背景颜色
int smooth; // 边界平滑方式(0:不平滑,1:抛物线加权,2:张力样条,3:二次B样条)
int nPoint; // 顶点个数
int extend; // 扩展
};
//等值线
struct GxfIsoline
{
char labelStr[100]; // 高程值字符串
GColor labelColor; // 高程标注颜色
double labelWidth; // 高程标注宽度
int lineStyle; // 线型
GColor color; // 曲线颜色
double lineWidth; // 线宽
int smooth; // 光滑状态(0:不平滑,1:抛物线加权,2:张力样条,3:二次B样条)
// (新版本增加了平滑的方法种类但不能保存文件中该参数仅为0或1)
int nPoint; // 顶点个数
int extend; // 扩展
};
// 测井曲线
struct GxfLog
{
char curveName[50]; // 曲线名称
// 专有数据
DRect rect; // 位置和大小
short axisType; // 坐标类型
double depthStart; // 起始深度
double depthEnd; // 结束深度
double sample; // 采样率
double leftScale; // 左刻度
double rightScale; // 右刻度
short lineStyle; // 线型
double lineWidth; // 线宽
GColor color; // 颜色
double scale; // 比例尺
char bmpCode[50]; // 图像编码方式
int bmpSize; // 图像编码后的数据行数每行占80个字节
};
struct GxfSeisSection
{
char segyName[50]; // segy文件名
DRect rect; // 剖面矩形
int cdpStart; // 起始CDP
int cdpEnd; // 终止CDP
int cdpSkip; // CDP间隔(抽稀道数)
int timeStart; // 起始时间(微妙)
int timeEnd; // 终止时间(微妙)
int timeInte; // 时间间隔(微妙)
short lineWidth; // 线宽
GColor lineColor; // 线颜色
int extend1; // 扩展1
int extend2; // 扩展2
int extend3; // 扩展3
int extend4; // 扩展4
int extend5; // 扩展5
char *tempStr1; // 不明确串
char *tempStr2; // 不明确串
char *tempStr3; // 不明确串
char *bmpCode; // 图像编码方式
int bmpSize; // 图像编码后的数据行数每行占80个字节
};
//End
///////////////////////////////////////////////////////////////////////////////
};
};