|
|
#pragma once
|
|
|
|
|
|
#include "WellClassObjGroup.h"
|
|
|
#include "InTrackTextBase.h"
|
|
|
|
|
|
class CInTrackDepthSegment;
|
|
|
class CTrackGroup;
|
|
|
class CTrackObj;
|
|
|
typedef std::list<CTrackObj*> TRACKLIST;
|
|
|
|
|
|
class AFX_EXT_CLASS CTrackObj : public CWellClassObjGroup
|
|
|
{
|
|
|
public:
|
|
|
CTrackObj();
|
|
|
CTrackObj(const CRect8& position);
|
|
|
virtual ~CTrackObj();
|
|
|
|
|
|
|
|
|
public:
|
|
|
virtual double GetWidth() { return m_dTrackWidth; }
|
|
|
virtual ETrackType GetTrackType() { return m_eTrackType; };
|
|
|
virtual void SetTrackType(ETrackType type) { m_eTrackType = type; }
|
|
|
virtual void SetGroupType(EGroupType type) { m_eGroupType = type; }
|
|
|
virtual EGroupType GetGroupType() { return m_eGroupType; }
|
|
|
|
|
|
virtual void SetFontScale(double yScale);// 字符缩放先按照y同比例缩放
|
|
|
protected:
|
|
|
ETrackType m_eTrackType; // 道类型
|
|
|
EGroupType m_eGroupType; // 组合道类型
|
|
|
DWORD m_nTrackFlags; // 道开关状态
|
|
|
|
|
|
//道基类Flags
|
|
|
enum TrackFlags
|
|
|
{
|
|
|
TrackFlagTitle = 0x0001, // 显示道标题
|
|
|
TrackFlagCombineLeft = 0x0002, // 左组合
|
|
|
TrackFlagCombineRight = 0x0004, // 右组合
|
|
|
TrackFlagLog = 0x0008, // 对数刻度
|
|
|
|
|
|
TrackFlagMark = 0x0010, // 显示道内标注
|
|
|
|
|
|
//波形道开关
|
|
|
TrackWaveFlagLogAxes = 0x0100, // 对数轴
|
|
|
TrackWaveFlagAutoMidClr = 0x0200, // 自动中间色
|
|
|
TrackWaveFlagDraw = 0x0400, // 波形绘制、变密度绘制
|
|
|
TrackWaveFlagFill = 0x0800, // 变密度填充、波形填充
|
|
|
};
|
|
|
|
|
|
public:
|
|
|
double m_dTrackWidth; // 道宽(毫米)
|
|
|
CString m_strFormat; // 输出格式
|
|
|
CString m_strTrackName; // 名称
|
|
|
|
|
|
int m_nAlignChild; // 道内文本对齐方式(0 左 1 中 2 右)
|
|
|
GDFLOGFONTEXT m_fontChild; // 道内文本字体
|
|
|
GDFLOGPENEXT m_penChild; // 道内对象画笔
|
|
|
GDFLOGBRUSH m_brushChild; // 道内对象刷子
|
|
|
|
|
|
//从库导入数据时道的配置表名
|
|
|
CString m_strConfigTable; // 配置表名
|
|
|
vector<CString> m_VecConfigField; // 配置字段
|
|
|
CString m_strConfigTableOther; // 配置表名(岩样道时使用)
|
|
|
vector<CString> m_VecConfigFieldOther; // 配置字段(岩样道时使用)
|
|
|
CString m_strConfigClass; // 配置级别
|
|
|
|
|
|
//pcg读取使用(临时变量)
|
|
|
int nWellColID; // 井列模板ID
|
|
|
|
|
|
CString m_strDataRef; // 道数据索引标识
|
|
|
int m_nColumn; // 道头列
|
|
|
int m_nRow; // 道头行
|
|
|
|
|
|
//如果是斜井,这些用来存储偏转后的井头四个点的坐标及中心点,四个点依次对应矩形的左上,右上,右下,左下(每次井CalculateSize时计算)
|
|
|
CCurveEx m_HeadCurve;
|
|
|
|
|
|
CRect8 m_active_head; // 交互标题大小
|
|
|
CRect8 m_HeadRect; // 标题大小
|
|
|
CString m_strTitle; // 标题文字
|
|
|
int m_nTitleAlign; // 道标题0居左,1居中,2居右
|
|
|
|
|
|
|
|
|
protected:
|
|
|
void Init(); //初始化参数
|
|
|
|
|
|
// Implementation
|
|
|
public:
|
|
|
|
|
|
BOOL IsOnWellTop(CPoint2D point, double dHandleSize); //是否在 本道所属区域的井头上
|
|
|
BOOL IsOnTrackTop(CPoint2D point, double dHandleSize); //是否在道头边界上
|
|
|
virtual BOOL IsOnTrackRight(CPoint2D point, double dHandleSize); //是否在道的右边界上
|
|
|
virtual BOOL IsInTrackHead(CPoint2D point, float selectSx = 0, float selectSy = 0); //ggff.点是否在道头区域内
|
|
|
//
|
|
|
virtual BOOL IsInTrackHead(CPoint2D point, double dHandleSize);///////点是否在道头区域内
|
|
|
|
|
|
virtual void GetHeadPts(double cx, double cy, double angle, double offx = 0, double offy = 0); //计算斜井情况下的道头区域,cx,cy旋转中心,angle旋转角度
|
|
|
|
|
|
//计算道对象大小
|
|
|
virtual void CalculateSize(CPoint2D point);
|
|
|
|
|
|
//计算斜井道左右轨迹
|
|
|
virtual void ComputeDisplayTrajectory();
|
|
|
|
|
|
//设置标题属性
|
|
|
virtual void SetTextTitle(CString text, GDFLOGFONTEXT logfont);
|
|
|
|
|
|
//设置道宽
|
|
|
virtual void SetTrackWidthRatio(double r);
|
|
|
|
|
|
//设置道边框属性
|
|
|
virtual void SetPenTrack(GDFLOGPENEXT& pen);
|
|
|
//设置格子属性
|
|
|
virtual void SetPenGrid(GDFLOGPENEXT& penmajor, GDFLOGPENEXT& penminor);
|
|
|
//设置道字体属性
|
|
|
virtual void SetFontTrack(GDFLOGFONTEXT& font, BOOL bReplaceClr = TRUE);
|
|
|
//设置道字体属性
|
|
|
virtual void SetFontHeadMark(GDFLOGFONTEXT& font, BOOL bReplaceClr = TRUE);
|
|
|
//设置道字体属性
|
|
|
virtual void SetFontGridMark(GDFLOGFONTEXT& font);
|
|
|
//设置刻度间隔
|
|
|
virtual void SetSpace(double major, double minor);
|
|
|
|
|
|
virtual void SetPenChild(GDFLOGPENEXT& pen);
|
|
|
virtual void SetFontChild(GDFLOGFONTEXT& font);
|
|
|
virtual void SetBrushChild(GDFLOGBRUSH& brush);
|
|
|
|
|
|
virtual void DrawTrackHead(CXyDC*pDC);
|
|
|
virtual void DrawTrackHeadLine(CXyDC* pDC, BOOL bFirst = FALSE);
|
|
|
virtual void DrawTrackBodyLine(CXyDC* pDC, BOOL bFirst = FALSE);
|
|
|
|
|
|
//添加道标题
|
|
|
virtual void AddTrackHead();
|
|
|
////添加道头线
|
|
|
//virtual void AddTrackHeadLine();
|
|
|
////添加道边框线
|
|
|
//virtual void AddTrackBodyLine();
|
|
|
|
|
|
void DrawSelectRange(CXyDC *pDC);
|
|
|
void GetSelectRange(std::vector<CPoint2D>& PtsVec);
|
|
|
|
|
|
virtual void DrawActiveTrackHead(CXyDC*pDC);
|
|
|
|
|
|
virtual void Draw(CXyDC* pDC);
|
|
|
virtual void DrawTrajectory(CXyDC* pDC);
|
|
|
|
|
|
virtual int GetHandleCount();
|
|
|
virtual CPoint2D GetHandle(int nHandle);
|
|
|
virtual BOOL Intersects(const CRect8& rect, double dHandleSize);
|
|
|
|
|
|
virtual void MoveToActiveTrackHead(CRect8& positon);
|
|
|
virtual void MoveTo(CRect8& position);
|
|
|
virtual void MoveHandleTo(int nHandle, CPoint2D point);
|
|
|
virtual void Serialize(CArchive& ar, const short &ver);
|
|
|
|
|
|
//开关变量值
|
|
|
virtual void SetTrackFlags(DWORD flags);
|
|
|
virtual void SetShowTitle(BOOL bFlag);
|
|
|
virtual void SetCombineLeft(BOOL bFlag);
|
|
|
virtual void SetCombineRight(BOOL bFlag);
|
|
|
virtual void SetLog(BOOL bFlag);
|
|
|
virtual void SetShowMark(BOOL bFlag);
|
|
|
virtual void SetWaveLogAxes(BOOL bFlag);
|
|
|
virtual void SetWaveAutoMidClr(BOOL bFlag);
|
|
|
virtual void SetWaveDraw(BOOL bFlag);
|
|
|
virtual void SetWaveFill(BOOL bFlag);
|
|
|
|
|
|
virtual DWORD GetTrackFlags();
|
|
|
virtual BOOL IsShowTitle();
|
|
|
virtual BOOL IsCombineLeft();
|
|
|
virtual BOOL IsCombineRight();
|
|
|
virtual BOOL IsLog();
|
|
|
virtual BOOL IsShowMark();
|
|
|
virtual BOOL IsWaveLogAxes();
|
|
|
virtual BOOL IsWaveAutoMidClr();
|
|
|
virtual BOOL IsWaveDraw();
|
|
|
virtual BOOL IsWaveFill();
|
|
|
|
|
|
//计算道边界
|
|
|
virtual void CalcBorders();
|
|
|
|
|
|
//删除道内图元
|
|
|
virtual BOOL RemoveTrackChild();
|
|
|
|
|
|
// 根据数据创建道内子对象
|
|
|
virtual void AddObjChild();
|
|
|
// 井内参数改变时重新设置道内子对象的位置
|
|
|
virtual void ResetChildPosition(double oldProportion, double newProportion, double depthDelta);
|
|
|
// 道头高发生改变时重新设置道内子对象的位置
|
|
|
virtual void ResetChildPosition(double offsetY = 0.0);
|
|
|
// 根据道属性重新设置道内专业子对象的属性
|
|
|
virtual void ResetChildProperties();
|
|
|
//新版pcg中格式规范转换
|
|
|
virtual CString FormatValue(double value);
|
|
|
|
|
|
//根据道内对象的深度位置算position的值
|
|
|
virtual void ComputeChildPosition();
|
|
|
//按深度排列道内对象
|
|
|
virtual void SortChildren(WELLOBJVECTOR &drawObjArr);
|
|
|
//获取道内数据对象了
|
|
|
virtual void GetChildDatas(StringVectorSet &dataContent, BOOL bHaveWellName = TRUE);
|
|
|
//创建道内数据对象
|
|
|
virtual void BuidChildObject(vector<CString> &fields, StringVectorSet &datas, BOOL bInit = FALSE);
|
|
|
//处理大批量的浮点数时,不使用字符串,如曲线
|
|
|
virtual void BuidChildObject(double *pDepth, double *pData, int datanum, BOOL bInit = FALSE);
|
|
|
|
|
|
virtual BOOL ReadCurveData(BOOL bInit = TRUE) { return FALSE; }
|
|
|
|
|
|
virtual CString GetTrackPcgType();
|
|
|
|
|
|
//根据道类型构建对象
|
|
|
static CTrackObj* CreateTrackObj(ETrackType eTrackType);
|
|
|
static CTrackObj* CreatePCGTrackObj(CString strTrackType);
|
|
|
|
|
|
virtual int GetTrackRow() { return m_nRow; }
|
|
|
void SortChildDatas(WELLOBJVECTOR &drawObjArr);
|
|
|
void GetAllTrack(TRACKLIST* TrackList, int type = -1);
|
|
|
|
|
|
virtual void afterCalculateSize() { };//处理需要在所有的道数据计算完毕后,才能进行计算的操作如填充曲线,只有所有曲线都计算完毕后,这时使用的填充曲线的数据才有效
|
|
|
protected:
|
|
|
virtual void DrawTrackHead(CXyDC*pDC, CRect8 headrect);
|
|
|
//添加道标题
|
|
|
virtual void AddTrackHead(CRect8 headrect);
|
|
|
BOOL IsRectInHeadPts(CRect rectT);
|
|
|
|
|
|
BOOL m_bActiveTrackHead; //绘制斜井带符号的道头时需要这个bool,临时变量
|
|
|
|
|
|
public:
|
|
|
//PCG数据读写
|
|
|
virtual int ReadPCG_Title(CFile &fr, const short& ver);
|
|
|
virtual int ReadPCG_GridStyle(CXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_SymbolStyle(CXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_CurveStyle(CXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_StickStyle(CXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_Self(CFile &fr, CXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_TraceMark(CFile &fr, CXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_DataRef(CXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_Trace(CXmlParse& xp, CFile &fr, const short& ver, PCG_TRACECOL& traceCol, int fVerstion = 1);
|
|
|
virtual int ReadPCG_Data(CFile &fr, const short& ver);
|
|
|
virtual int ReadPCG_Font(CXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_Major(CXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_Minor(CXmlParse& xp, const short& ver);
|
|
|
|
|
|
virtual int ReadPCG_DataPropties(CXmlParse &xp, const short &ver);
|
|
|
|
|
|
virtual int ReadPCG_TraceSection(CFile &fr, CXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_SelfSection(CFile &fr, CXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_SelfTraceSection(CFile &fr, CXmlParse& xp, const short& ver);
|
|
|
|
|
|
virtual int ReadPCG_TraceSelf(CXmlParse& xp);
|
|
|
|
|
|
int PCG_ReadTrackRenderStyle(CXmlParse& xp, const short &ver, CInTrackDepthSegment *pObj);
|
|
|
int PCG_ReadTrackHunkContent(CXmlParse& xp, const short &ver, CInTrackTextBase *pObj);
|
|
|
int PCG_ReadTrackBackBrush(CXmlParse& xp, const short &ver, GDFLOGBRUSH &gdfbrush);
|
|
|
|
|
|
int PCG_ReadTrackBrush(CXmlParse& xp, const short &ver, CInTrackDepthSegment *pObj);
|
|
|
int PCG_ReadTrackLayerStyle(CXmlParse& xp, const short &ver);
|
|
|
////读多井对比pcg格式的数据
|
|
|
//virtual int ReadPCG_DataSection(CFile &fr, const short& ver);
|
|
|
//写pcg格式的道
|
|
|
virtual void WritePCG_Trace(CFile &fw, int nBaseTabNum);
|
|
|
//写pcg格式的道内数据
|
|
|
virtual void WritePCG_Data(CFile &fw, int nBaseTabNum);
|
|
|
//写自定义的扩展数据,写pcg及dml格式都可以用
|
|
|
virtual void WritePCG_Ext(CFile &fw, int nBaseTabNum);
|
|
|
//写wellcolumn元素中的Trace索引标志,写pcg及dml格式都可以用
|
|
|
virtual void WritePCG_WellColTrace(CFile &fw, int nBaseTabNum);
|
|
|
virtual void WritePCG_TraceTitle(CFile &fw, int nBaseTabNum);
|
|
|
virtual void WritePCG_TraceHead(CFile &fw, int nBaseTabNum);
|
|
|
virtual void WritePCG_TraceTail(CFile &fw, int nBaseTabNum);
|
|
|
|
|
|
virtual void WritePCG_TraceMark(CFile &fw, int nBaseTabNum);
|
|
|
|
|
|
//写pcg格式的道
|
|
|
virtual void WritePCG_TraceSection(CFile &fw, int nBaseTabNum);
|
|
|
//写pcg格式的道内数据
|
|
|
virtual void WritePCG_DataSection(CFile &fw, int nBaseTabNum);
|
|
|
|
|
|
virtual CRect8 GetDragMoveRect();
|
|
|
|
|
|
void SortChildrenOrderbyPos();
|
|
|
public:
|
|
|
/*读取pcg文件时,某些文件会有重名的井道,这些重名井道应用到井列及数据读取时会有错误,因此使用这些变量进行井道的标定,每次进行pcg文件的读取时确保这些参数为FALSE
|
|
|
读取数据后,设置为TRUE,这样当有重名的道时,新读到的数据可以只应用到那些没有设置数据的井道
|
|
|
*/
|
|
|
BOOL m_PcgAddColumn;
|
|
|
BOOL m_PcgReadData;
|
|
|
|
|
|
public:
|
|
|
virtual int ReadPCG_Title(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_GridStyle(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_SymbolStyle(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_CurveStyle(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_StickStyle(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_Self( CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_TraceMark(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_DataRef(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_Trace(CKXmlParse& xp, const short& ver, PCG_TRACECOL& traceCol, int fVerstion = 1);
|
|
|
virtual int ReadPCG_Data(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_Font(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_Major(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_Minor(CKXmlParse& xp, const short& ver);
|
|
|
|
|
|
virtual int ReadPCG_DataPropties(CKXmlParse &xp, const short &ver);
|
|
|
|
|
|
virtual int ReadPCG_TraceSection(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_SelfSection(CKXmlParse& xp, const short& ver);
|
|
|
virtual int ReadPCG_SelfTraceSection( CKXmlParse& xp, const short& ver);
|
|
|
|
|
|
virtual int ReadPCG_TraceSelf(CKXmlParse& xp);
|
|
|
|
|
|
int PCG_ReadTrackRenderStyle(CKXmlParse& xp, const short &ver, CInTrackDepthSegment *pObj);
|
|
|
int PCG_ReadTrackHunkContent(CKXmlParse& xp, const short &ver, CInTrackTextBase *pObj);
|
|
|
int PCG_ReadTrackBackBrush(CKXmlParse& xp, const short &ver, GDFLOGBRUSH &gdfbrush);
|
|
|
|
|
|
int PCG_ReadTrackBrush(CKXmlParse& xp, const short &ver, CInTrackDepthSegment *pObj);
|
|
|
int PCG_ReadTrackLayerStyle(CKXmlParse& xp, const short &ver);
|
|
|
|
|
|
virtual void GetChildDatas(CString& jsonStr);
|
|
|
virtual BOOL SetChildDatas(CString& jsonStr);
|
|
|
|
|
|
protected:
|
|
|
BOOL GetChildDatasFromJsonStr(CString& jsonStr, vector<CString>& fields, StringVectorSet& datas);
|
|
|
};
|