|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
//文件: 格式转换类
|
|
|
//主要功能:
|
|
|
// 转换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
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
};
|
|
|
};
|