////////////////////////////////////////////////////////////////////////////// //文件 Layer.h //主要功能: // //程序编写: 2005-12-07 ///////////////////////////////////////////////////////////////////////////// #pragma once #include ".\name.h" #define LAYER_HowToViewCurve 100 #define LAYER_HowToViewPoint 101 #define LAYER_COLOR 102 #define LAYER_Name 103 #define LAYER_ViewEdit 10 #define LAYER_ViewNotEdit 11 #define LAYER_NotViewNotEdit 12 #include "howtoviewcurve.h" #include "howtoviewpoint.h" class CLayerList; class AFX_EXT_API CLayer : public CName { public: //遮罩使用 2026/1/6 enum class ELayerMaskRole { AboveMask = 0, // 在遮罩之上 (显式) Mask = 1, // 遮罩层本身 BelowMask = 2 // 在遮罩之下 }; public: CLayer(CLayerList* pParentClass=NULL); virtual ~CLayer(void); private: void SerializeHowToCurve(CArchive& ar, const short &ver); void SerializeHowToPoint(CArchive& ar, const short &ver); BYTE state; CLayerList* m_pParentClass; protected: void WriteViewEditState(CFile& fw); public: //新增遮罩属性 ELayerMaskRole m_MaskRole = ELayerMaskRole::AboveMask; void SetMaskRole(ELayerMaskRole role) { m_MaskRole = role; } ELayerMaskRole GetMaskRole() const { return m_MaskRole; } // 获取排序优先级(辅助函数) int GetSortPriority() const { return static_cast(m_MaskRole); } CHowToViewCurve* HowToViewCurve; CHowToViewPoint* HowToViewPoint; void SetHowToViewCurve(CHowToViewCurve* hc); void SetHowToViewPoint(CHowToViewPoint* hp); static void WriteNullLegend(CFile& fw, const short& ver); static void WriteCurveNullLegend(CFile& fw, const short& ver); static void WritePointNullLegend(CFile& fw, const short& ver); virtual CString GetName(void); CString GetPathName(void); CLayerList* GetParentClass(void); CLayerList* SetParentClass(CLayerList* pNewParentClass); void SerializeLegend(CArchive& ar, const short &ver); //仅增加了写功能 int WriteLegend(CFile& fw, const short& ver, double cc); void WriteLayerName(CFile& fw, const short& ver); BOOL WriteMemory(BYTE*& outBuffer, int& destLen, int formatCode); virtual void WritePCG(CFile& fw, const short& ver, int nBaseTabNum, int isClosed); virtual void WriteDML(CFile& fw, const short& ver, int nBaseTabNum, int isClosed); virtual void WriteDML(CFile& fw, const short& ver, int nBaseTabNum); int WriteLegendDML(CFile& fw, const short& ver, double cc, int nBaseTabNum); static void WriteNullLegendDML(CFile& fw, const short& ver, int nBaseTabNum); virtual void WritePCG(CFile& fw, const short& ver, int nBaseTabNum); int WriteLegendPCG(CFile& fw, const short& ver, double cc, int nBaseTabNum); static void WriteNullLegendPCG(CFile& fw, const short& ver, int nBaseTabNum); virtual void Write(CFile& fw, const short& ver); virtual int Read(CFile& fr, const short& ver); virtual void ScaleProperty(double sx, double sy); virtual void Serialize(CArchive& ar, short ver); int PositionNew(int bReplace=1); /** * 可见可编辑 * * \return */ BOOL IsViewAndEdit(); /** * 可见不可编辑 * * \return */ BOOL IsViewNotEdit(); /** * 不可见不可编辑 * * \return */ BOOL IsNotViewNotEdit(); void SetState(BYTE nvd); BYTE GetState(void); void operator=(CLayer& layer); BOOL operator==(CString strLayer); void Empty(void); void EmptyLegend(void); CString GetClassName(void); private: }; AFX_INLINE BOOL CLayer::IsViewAndEdit() { return (state==LAYER_ViewEdit) ? TRUE:FALSE; } AFX_INLINE BOOL CLayer::IsViewNotEdit() { return (state==LAYER_ViewNotEdit) ? TRUE:FALSE; } AFX_INLINE BOOL CLayer::IsNotViewNotEdit() { return (state==LAYER_NotViewNotEdit) ? TRUE:FALSE; } AFX_INLINE void CLayer::SetState(BYTE nvd) { state=nvd; } AFX_INLINE BYTE CLayer::GetState(void) { return state; } AFX_INLINE CLayerList* CLayer::GetParentClass(void) { return m_pParentClass; }