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.

127 lines
3.3 KiB
C++

#ifndef TRACKINRESULT_H
#define TRACKINRESULT_H
#pragma once
//////////////////////////////////////////////////////////////////////////////
//主要功能:
// 解释结果符号类
/////////////////////////////////////////////////////////////////////////////
struct InnerLayerStruct
{
double fThick;
double fTop;
};
class CInTrackDepthSegment;
class AFX_EXT_CLASS CInTrackResult : public CInTrackDepthSegment
{
protected:
void Init();
public:
CInTrackResult();
CInTrackResult(const CRect8& position);
virtual ~CInTrackResult() {}
CLONE_WELLOBJECT(CInTrackResult)
virtual void operator=(CInTrackResult& object);
//属性结构体
struct PropStruct
{
int id;
double value;
};
double m_fValidThick; // 有效厚度
CString m_strLayer; // 层名称
CString m_strResult; // 解释结果(流体)
CString m_strLitho; // 岩性解释结果
COLORREF m_fillColor; // 填充颜色
CArray<PropStruct, PropStruct> m_propArr; // 属性值
//CArray<InnerLayerStruct,InnerLayerStruct> m_InnerLayerArr;////夹层集合
std::vector<InnerLayerStruct> m_InnerLayerArr; //夹层集合
CXy* m_pMarkResult; //结论指针
CXy* m_pMarkLitho; //岩性符号指针
CXy* m_pMarkSymbol; //符号指针
// Implementation
protected:
DWORD m_nTrackInResultFlags; //分层符号开关状态
//分层符号Flags
enum TrackInLayerFlags
{
TrackInResultFlagSymbol = 0x0001, // 绘制符号
TrackInResultFlagColorAuto = 0x0002, //是否颜色自动
TrackInResultFlagShowName = 0x0004, //显示层名
TrackInResultFlagShowThickness = 0x0008,//显示厚度
TrackInResultFlagShowPureThickness = 0x0010, //显示纯厚度
TrackInResultFlagShowResult = 0x0020, //显示解释结果
TrackInResultFlagRenderBrief = 0x0040, //Resform中这样是简化显示
TrackInResultFlageShowStr= TrackInResultFlagShowName | TrackInResultFlagShowThickness | TrackInResultFlagShowPureThickness | TrackInResultFlagShowResult,
};
public:
virtual void Draw(CXyDC* pDC);
virtual void Serialize(CArchive& ar, const short &ver);
//开关变量值
virtual void SetTrackInResultFlags(DWORD flags);
virtual void SetShowSymbol(BOOL bFlag);
virtual void SetColorAuto(BOOL bFlag);
virtual DWORD GetTrackInResultFlags();
virtual BOOL IsShowSymbol();
virtual BOOL IsColorAuto();
virtual BOOL IsShowName();
void SetShowName(BOOL bShow);
virtual BOOL IsShowThickness();
void SetShowThickness(BOOL bShow);
virtual BOOL IsShowPureThickness();
void SetShowPureThickness(BOOL bShow);
virtual BOOL IsShowResult();
void SetShowResult(BOOL bShow);
virtual BOOL IsShowRenderBrief();
void SetShowRenderBrief(BOOL bShow);
void DisableShowMark();
CString GetMarkSymbol(CString strResult = "");
//获取斜井状态下岩性符号对应的左右井边界,供TrackLithObj computedata(),BuidChildObject()调用 2015-10-19
virtual bool CalcInclinedBorder();
void SetResultName(CString name);
protected:
//绘制斜井深度段
void DrawInclined(CXyDC* pDC);
//左右边线中点
dfPoint m_ptL;
dfPoint m_ptR;
CCurveEx m_rotaRectCurve;
void DrawRect(CXyDC *pDC,CRect8 showRect);
void MakeIncliendMark();
public:
virtual int ReadPCG_SelfData(CKXmlParse& xp, const short& ver, CTrackObj* pTrack);
virtual void WritePCG_SelfData(CFile &fw, int nBaseTabNum);
int m_tSlotType; //读取pcg文件时的临时变量
public:
virtual void SetObjDataToRow(VARINTARR*pRow);
virtual CString GetLayerName() { return this->m_strLayer; }
void SetDrawSymbol();
};
#endif