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.

378 lines
8.6 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.

#ifndef STRUCTDEFINE_H
#define STRUCTDEFINE_H
#pragma once
#include "./NGraphExtend.h"
//////////////////////////////////////////////////////////////////////////////
//主要功能:
// 类型定义
/////////////////////////////////////////////////////////////////////////////
#pragma pack (1) //使用了对齐指令,引入其它类型定义.h时放置在此指令上面
#include <vector>
#include <list>
#define SYMBOLSIZELITHO 8
#define SYMBOLSIZEFLUID 14
AFX_EXT_CLASS typedef struct INCLINEDWELLSTRUCT //斜井数据结构
{
CString wellname; //井号
double x; //横坐标
double y; //纵坐标
double depth; //井斜深
double bevel; //井斜角
double azimuth; //真方位角
double x0; //投影横坐标
double y0; //投影纵坐标
double depthV; //井垂深
double disS; //视平移(相对井口的水平平移距离)
} Struct_InclinedWell;
typedef std::list< Struct_InclinedWell> INCLINEDWELLSTRUCTLIST;
typedef struct TRACESTRUCT//道的两条轨迹数据结构
{
CPoint2D pt; //点的逻辑坐标
double depth; //点对应的斜深
} Struct_Trace;
class CTrackObj;
typedef struct TRACKSORTSTRUCT //道排列结构体
{
CTrackObj *pTrackObj; // 道对象指针
double fCenterX; // 道头中心点x
double fCenterY; // 道头中心点y
}Struct_TrackSort;
class CTrackCurve;
typedef struct CURVESORTSTRUCT
{
CTrackCurve *pCurve; // 曲线对象指针
int integer; // 对象左边界
} Struct_CurveSort;
typedef struct SIGNSTRUCT //一个符号的索引区的数据结构
{
char name[31]; //符号名
char fhdm[11];
long offset; //数据区偏移量
short length; //数据区长度
short CategoryCode; //图式种类代码 0:岩性符号; 1:含有物符号; 2:沉积构造符号
short SubCategoryCode; //图式子种类代码(保留)
}Struct_Sign;
typedef struct BLOCKSTRUCT //方波曲线属性结构体
{
BOOL bUseData; //本方波区间的数据是否有效如果bUseData=TRUE(有效数据),bUseData=FALSE(无效数据是 fValue=-9999)
double fStartDep; //方波顶数据
double fEndDep; //方波底数据
double fValue; //方波幅度值
CString sSkeleton; //骨架属性
CString sFluid; //流体属性
BOOL bOutput; //输出属性
BLOCKSTRUCT & operator = (BLOCKSTRUCT &tmp)
{
bUseData = tmp.bUseData;
fStartDep = tmp.fStartDep;
fEndDep = tmp.fEndDep;
fValue = tmp.fValue;
sSkeleton = tmp.sSkeleton;
sFluid = tmp.sFluid;
bOutput = tmp.bOutput;
return *this;
}
}Struct_Block;
typedef struct SCrossSelDataDepth //交会图中创建的圈点区域内的数据的深度
{
float* m_pdepthBuf;//深度缓冲
int m_bufSize; //缓冲大小
int m_DataSize; //数据大小
COLORREF m_Clr; //对应的圈点区域的颜色
SCrossSelDataDepth()
{
m_bufSize = 0;
m_DataSize = 0;
m_pdepthBuf = NULL;
m_Clr = RGB(0,0,0);
}
~ SCrossSelDataDepth()
{
if(m_pdepthBuf != NULL)
{
delete []m_pdepthBuf;
m_pdepthBuf = NULL;
}
}
}Struct_CrossSelDataDepth;
typedef struct LITHBMPSTRUCT //岩性位图结构体
{
CString name;
char width;
HBITMAP hsignal;
}Struct_LithBmp;
typedef struct LITHDATASTRUCT
{
float min;
float max;
CString name;
CString clr;
}Struct_LithData;
typedef struct MICROFACIESSTRUCT
{
CString m_strMicroFacies;
double m_dCorrelationDegree;
}Struct_MicroFacies;
typedef struct CURVESTRUCT
{
CString m_strCurve;
CArray <Struct_MicroFacies, Struct_MicroFacies>m_MicroFaciesDataArr;
}Struct_Curve;
typedef struct CURVEDATASTRUCT
{
char m_curveName[30]; //曲线形态名
char m_wxName[30]; //微相名
double m_fRlev; //采样间隔(.125)
int m_nSample; //采样个数
double *m_depth; //对应深度
double *m_value; //曲线数值
}Struct_CurveData;
typedef struct CURVEPATTERNSTRUCT
{
char m_curve[30]; //曲线名
CArray <Struct_CurveData*, Struct_CurveData*>m_CurveDataArr;
}Struct_CurvePattern;
//单元表格结构体
struct CELLSTRUCT
{
GDFLOGFONT font; //字体
int linewidth[4]; //边线宽度0不画
int lineclr[4]; //边线颜色:顺序上下左右
int nBackclr; //背景色索引号
int nTextClr; //文本颜色索引号
CString text; //文字
int span; //单元格跨越的列数0不合并1、2、3...代表合并索引号
int layout; //停靠状态 0居中1居左2居右
BOOL show; //绘制文字使用,临时变量
CELLSTRUCT()
{
font.m_dHeight = 15;
font.m_dWidth = 6;
for(int i=0; i<4; i++)
{
linewidth[i] = 0;
lineclr[i] = 1;
nBackclr = 1;
nTextClr = 1;
span = 0;
layout = 0;
show = TRUE;
}
}
void operator=(CELLSTRUCT &cell)
{
font = cell.font; //字体
for(int i=0; i<4; i++)
{
linewidth[i] = cell.linewidth[i];//边线宽度0不画
lineclr[i] = cell.lineclr[i];//边线颜色:顺序上下左右
}
nBackclr = cell.nBackclr; //背景色索引号
nTextClr = cell.nTextClr; //文本颜色索引号
text = cell.text; //文字
span = cell.span; //单元格跨越的列数0不合并1、2、3...代表合并索引号
layout = cell.layout; //停靠状态 0居中1居左2居右
show = cell.show; //绘制文字使用,临时变量
}
};
//岩样数据体
struct SAMPLESTRUCT
{
SAMPLESTRUCT() { num =0; Ca =0;Os=0;thick=0;Por=0;Perm = 0;}
int num; //样品号
double thick; //厚度(部位)
double Por; //孔隙度
double Perm; //渗透率
double Os; //饱和度
double Ca; //碳酸钙
//double V1; //数值1
//double V2; //数值2
//double V3; //数值3
//double V4; //数值4
//double V5; //数值5
};
//pcg数据结构体
struct PCG_WELLTEMPCOL //保存pcg格式中的井模板列的数据
{
CString strDataRef; //索引
int mask; //属性24567
int style; //显示样式0
double width; //宽度
CString combName; //组合名称
BOOL combLeft; //是否左组合
BOOL combRight; //是否右组合
BOOL bComb; //是否组合
int combType; //组合类型0水平1竖直
CString title; //标题(图栏)
CRect8 combineRange; //组合头范围
GDFLOGFONTEXT logfont;
PCG_WELLTEMPCOL* m_pParent;
std::list<PCG_WELLTEMPCOL*> wellTempColList; //井模块列子链表(嵌套)
int fid; //在pcg文件中的顺序号因为有的文件会有重名的道因此加一个在pcg文件中读取的顺序号以0开始
PCG_WELLTEMPCOL()
{
mask = 24567;
style = 0;
width = 100;
combLeft = FALSE;
combRight = FALSE;
bComb = FALSE;
combType = 0;
m_pParent = NULL;
fid = 0;
};
~PCG_WELLTEMPCOL()
{
//POSITION pos = wellTempColList.GetHeadPosition();
//while(pos != NULL)
//{
// PCG_WELLTEMPCOL* wellcol = wellTempColList.GetNext(pos);
// delete wellcol;
//}
};
void operator= (PCG_WELLTEMPCOL& wellcol)
{
strDataRef = wellcol.strDataRef;
mask = wellcol.mask;
style = wellcol.style;
width = wellcol.width;
combName = wellcol.combName;
combLeft = wellcol.combLeft;
combRight = wellcol.combRight;
bComb = wellcol.bComb;
combType = wellcol.combType;
title = wellcol.title;
combineRange = wellcol.combineRange;
};
void Add(PCG_WELLTEMPCOL *p)
{
wellTempColList.push_back(p);
p->m_pParent = this;
};
PCG_WELLTEMPCOL* FindTrackInWellTempCol(CString str)
{
//POSITION pos = wellTempColList.GetHeadPosition();
//while(pos != NULL)
//{
// PCG_WELLTEMPCOL* wellcol = wellTempColList.GetNext(pos);
// if(wellcol->FindTrackInWellTempCol(str) != NULL)
// return wellcol;
//}
std::list<PCG_WELLTEMPCOL*>::iterator it = wellTempColList.begin();
for (; it != wellTempColList.end(); it++)
{
if ((*it)->FindTrackInWellTempCol(str) != NULL)
return *it;
}
if(str == strDataRef && !str.IsEmpty())
return this;
else
return NULL;
};
};
typedef std::vector <PCG_WELLTEMPCOL*> PCG_WELLCOLARRAY; //井列数组
struct PCG_TRACECOL //保存pcg格式中道数据
{
CString name; //名称
CString type; //道类型
int mask; //属性掩码
int style; //样式
int marco; //宏
int id; //ID
double left; //左边距
double right; //右边距
CString mode; //模式Log/Default (True=log/False = default ,20170927)
BOOL revers; //反转
COLORREF backColor; //背景色
double macroTop; //宏有效顶深
double macroBottom; //宏有效底深
int fillIndex; //充填符号索引号
BOOL backFill; //是否充填背景
int backFillIndex; //背景充填符号索引号
BOOL DrawHeadGrid; //是否绘制道头网格
double width; //道宽
CString showstyle; //显示风格
CString fillmode; //填充方式
double headmarkpos; //图头标注位置
double headtitlepos; //图标题位置
BOOL showline; //曲线道是否显示道头横线
BOOL HeadFill; //道头是否充填
BOOL bAutoCacluateRange ;//是否使用自动的范围计算
void Empty()
{
name.Empty();
type.Empty();
mask = 0;
style = 0;
marco = 0;
id = -1;
left = 0;
right = 0;
mode = "Default";
revers = FALSE;
backColor = RGB(0,0,0);
macroTop = 0;
macroBottom = 0;
fillIndex = 0;
backFill = FALSE;
backFillIndex = 0;
DrawHeadGrid = FALSE;
width = -1;
showstyle = "Normal";
fillmode.Empty();
headmarkpos = 0.0;
headtitlepos = 0.0;
showline = TRUE;
HeadFill = TRUE;
bAutoCacluateRange = TRUE;
}
};
#pragma pack ()
#endif