|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD> PathXy.h
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
// Ϊ<><CEAA>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
|
|
|
|
|
|
/* gaofeng 20250508 <20><><EFBFBD><EFBFBD>pcg<63><67>ʽ<EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
|
|
|
|
|
pcg2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><block>,<EmbedPcg> ,<Group>:
|
|
|
|
|
|
<block><EFBFBD><EFBFBD>ҪӦ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><EFBFBD><EFBFBD>ʱʹ<EFBFBD><EFBFBD>
|
|
|
|
|
|
<EmbedPcg> <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ָǶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>棬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD>
|
|
|
|
|
|
<Group> <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>á<EFBFBD>
|
|
|
|
|
|
<EFBFBD><EFBFBD>ǰCXyBlock <EFBFBD><EFBFBD><Group><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><block><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ
|
|
|
|
|
|
|
|
|
|
|
|
gaofeng 20250630
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>DFD<EFBFBD><EFBFBD>ʽ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD> ver2025<EFBFBD>汾<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ȡ groupͼԪ<EFBFBD><EFBFBD>ê<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ver2022<EFBFBD>汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD>ʧ.
|
|
|
|
|
|
*/
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "..\projectionLib\projection.h"
|
|
|
|
|
|
#include "KXmlParse.h"
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CXyBlock :
|
|
|
|
|
|
public CBaseObject
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CXyBlock(void);
|
|
|
|
|
|
CXyBlock(LPCTSTR lpszBlockTitle, int nEndType);
|
|
|
|
|
|
virtual ~CXyBlock(void);
|
|
|
|
|
|
|
|
|
|
|
|
int GetId() const;
|
|
|
|
|
|
|
|
|
|
|
|
void SetId(int64_t id);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void Clear();
|
|
|
|
|
|
virtual void Draw(void* pXyDC);
|
|
|
|
|
|
virtual int Read(CFile& fr, const short& ver);
|
|
|
|
|
|
virtual int ReadDML(CFile &fr, const short &ver);
|
|
|
|
|
|
virtual int ReadPCG(CFile &fr, const short &ver);
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>м<EFBFBD><D0BC>ص<EFBFBD><D8B5><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD> */
|
|
|
|
|
|
virtual int ReadPCGEx(CFile &fr, const short &ver, void *pXy = nullptr);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void GetRange(CRect8& range);
|
|
|
|
|
|
virtual void GetRange(CPoint3D& minPoint, CPoint3D& maxPoint);
|
|
|
|
|
|
virtual BOOL IsInRange(CRect8& range);
|
|
|
|
|
|
virtual void Calibrate(int type, void* pValue);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void Serialize(CArchive& ar, const short& ver) override;
|
|
|
|
|
|
void Write(CFile &fw, const short& ver);
|
|
|
|
|
|
void WriteDML(CFile &fw, const short& ver, int nBaseTabNum);
|
|
|
|
|
|
void WritePCG(CFile &fw, const short& ver, int nBaseTabNum);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void WriteSummary(CFile &fw, const short& ver, int nBaseTabNum);
|
|
|
|
|
|
virtual int ReadSummary(CFile &fr, const short &ver);
|
|
|
|
|
|
|
|
|
|
|
|
void operator=(CXyBlock& pn);
|
|
|
|
|
|
void Offset(double dx, double dy);
|
|
|
|
|
|
void ScaleCoor(double xs, double ys, double dx, double dy);
|
|
|
|
|
|
void ScaleProperty(double sx, double sy);
|
|
|
|
|
|
void Rotate(double xs, double ys, double angle);
|
|
|
|
|
|
void ScaleCoordinate(double sx, double sy, int mode); //mode=0:<3A>ӣ<EFBFBD>1:<3A><><EFBFBD><EFBFBD>2:<3A>ˣ<EFBFBD>3:<3A><>
|
|
|
|
|
|
|
|
|
|
|
|
void ExchangeXY(void); //<2F><><EFBFBD><EFBFBD>XY<58><59><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ExchangeXY(CProjection* pxyz); //ת<><D7AA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
virtual void SetXy(void* pPathXy);
|
|
|
|
|
|
void* GetXy() { return m_pXy; }
|
|
|
|
|
|
int Dissolution(void* pxy, CPositionList& addList, POSITION posSource);
|
|
|
|
|
|
|
|
|
|
|
|
void SetTitle(LPCTSTR lpszBlockTitle) { m_strBlockTitle = lpszBlockTitle; }
|
|
|
|
|
|
CString GetBlockTitle() { return m_strBlockTitle; }
|
|
|
|
|
|
CString GetBeginBlockTitle(int ver=2022);
|
|
|
|
|
|
CString GetEndBlockTitle();
|
|
|
|
|
|
|
|
|
|
|
|
LPCTSTR GetName();
|
|
|
|
|
|
void SetName(LPCTSTR lpszBlockName);
|
|
|
|
|
|
|
|
|
|
|
|
DWORD m_dwFlags; //<2F><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
void SetEnbaleWriteCallOut(BOOL b) { m_bWriteCallOut = b; }; //ggff2025
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void* m_pXy; //CXy<58><79><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵ı<CDB5><C4B1><EFBFBD>
|
|
|
|
|
|
CString m_strBlockTitle;
|
|
|
|
|
|
int m_eleEndType; //Ԫ<><D4AA><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>DFB<46><42>ʽ
|
|
|
|
|
|
int64_t m_id ;
|
|
|
|
|
|
BOOL m_bWriteCallOut; //<2F>Ƿ<EFBFBD>д<EFBFBD>߿<EFBFBD><DFBF><EFBFBD>PCG<43><47>ʽʹ<CABD>ã<EFBFBD>ggff2025
|
|
|
|
|
|
protected:
|
|
|
|
|
|
virtual void WritePCG_Callout(CFile& fw, int nBaseTabNum); //ggff2025
|
|
|
|
|
|
public:
|
|
|
|
|
|
virtual int ReadPCGEx(CKXmlParse& xp, const short &ver, void *pXy = nullptr);
|
|
|
|
|
|
virtual int ReadPCG(CKXmlParse& xp, const short &ver);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 m_rect; //<2F><><EFBFBD>ľ<EFBFBD><C4BE>η<EFBFBD>Χ
|
|
|
|
|
|
CRect8 m_rtMargin; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>ͼ<EFBFBD>ı߾<C4B1>
|
|
|
|
|
|
CPoint2D m_ptAnchor; //ê<><C3AA>
|
|
|
|
|
|
double m_dPercent; //ê<><C3AA><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>,Ĭ<><C4AC>Ϊ1/4
|
|
|
|
|
|
protected:
|
|
|
|
|
|
CCurveEx m_curve; //<2F>߿<EFBFBD><DFBF><EFBFBD>
|
|
|
|
|
|
DWORD m_dwAnchorFlags;//ê<><C3AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double m_dAnchorWidth; //ê<><C3AA><EFBFBD><EFBFBD>
|
|
|
|
|
|
public:
|
|
|
|
|
|
CCurveEx* GetCurve() { return &m_curve; }
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
|
|
|
|
|
void ComputeRect();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>ֵ
|
|
|
|
|
|
virtual void SetHide(BOOL bFlag);
|
|
|
|
|
|
virtual void SetFrameAnchor(BOOL bFlag);
|
|
|
|
|
|
virtual void SetAnchorFit(BOOL bFlag);
|
|
|
|
|
|
virtual void SetFrameLineType(DWORD type);
|
|
|
|
|
|
virtual void RemoveFrameLineType(DWORD type);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
virtual void SetFrameType(DWORD type);
|
|
|
|
|
|
virtual void SetAlignH(DWORD type);
|
|
|
|
|
|
virtual void SetAlignV(DWORD type);
|
|
|
|
|
|
virtual void SetPathFillType(DWORD type);
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL IsShowFrame();
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL IsHide();
|
|
|
|
|
|
virtual BOOL IsFrameAnchor();
|
|
|
|
|
|
virtual BOOL IsAnchorFit();
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL IsFrameLineL();
|
|
|
|
|
|
virtual BOOL IsFrameLineR();
|
|
|
|
|
|
virtual BOOL IsFrameLineT();
|
|
|
|
|
|
virtual BOOL IsFrameLineB();
|
|
|
|
|
|
virtual BOOL IsFrameLineIcU();
|
|
|
|
|
|
virtual BOOL IsFrameLineIcD();
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL IsFrameRect();
|
|
|
|
|
|
virtual BOOL IsFrameCircle();
|
|
|
|
|
|
virtual BOOL IsFrameEllipse();
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL IsAlignLeft();
|
|
|
|
|
|
virtual BOOL IsAlignRight();
|
|
|
|
|
|
virtual BOOL IsAlignCenterH();
|
|
|
|
|
|
virtual BOOL IsAlignTop();
|
|
|
|
|
|
virtual BOOL IsAlignBottom();
|
|
|
|
|
|
virtual BOOL IsAlignCenterV();
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL IsFillStyleAlternate();
|
|
|
|
|
|
virtual BOOL IsFillStyleWinding();
|
|
|
|
|
|
|
|
|
|
|
|
//virtual void Calibrate(int type, void* pValue);
|
|
|
|
|
|
virtual void SetRange(CRect8& range);
|
|
|
|
|
|
|
|
|
|
|
|
int GetAnchorEdgeIndex(CPoint2D point);
|
|
|
|
|
|
void CreateCurve();
|
|
|
|
|
|
void CreateRectCurve();
|
|
|
|
|
|
void CreateEllipseCurve(double dRadiusX, double dRadiusY);
|
|
|
|
|
|
void Transform(CXyDC* pDC, float* matrix, BOOL bUndo); //<2F><><EFBFBD><EFBFBD>ƫ<EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD><EFBFBD>IJ<DEB8><C4B2><EFBFBD>
|
|
|
|
|
|
virtual void Draw(CXyDC& dc, void* pHowToView);
|
|
|
|
|
|
void SetXy(void* pPathXy, BOOL bClear);
|
|
|
|
|
|
|
|
|
|
|
|
enum enumGroupStyleFlags
|
|
|
|
|
|
{
|
|
|
|
|
|
GroupHide = 0x00000001, //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
GroupFrameLineL = 0x00000002, //<2F><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>
|
|
|
|
|
|
GroupFrameLineR = 0x00000004, //<2F><><EFBFBD>ұ߿<D2B1><DFBF><EFBFBD>
|
|
|
|
|
|
GroupFrameLineT = 0x00000008, //<2F><><EFBFBD>ϱ߿<CFB1><DFBF><EFBFBD>
|
|
|
|
|
|
GroupFrameLineB = 0x00000010, //<2F><><EFBFBD>±߿<C2B1><DFBF><EFBFBD>
|
|
|
|
|
|
GroupFrameLineStraAll = (GroupFrameLineL | GroupFrameLineR | GroupFrameLineT | GroupFrameLineB),
|
|
|
|
|
|
GroupFrameLineIcU = 0x00000020, //<2F><>б<EFBFBD>ϱ߿<CFB1><DFBF><EFBFBD>
|
|
|
|
|
|
GroupFrameLineIcD = 0x00000040, //<2F><>б<EFBFBD>±߿<C2B1><DFBF><EFBFBD>
|
|
|
|
|
|
GroupFrameLineIcAll = (GroupFrameLineIcU | GroupFrameLineIcD),
|
|
|
|
|
|
GroupFrameLineAll = (GroupFrameLineStraAll | GroupFrameLineIcAll),
|
|
|
|
|
|
|
|
|
|
|
|
GroupFrameAnchor = 0x00000100, //<2F>߿<EFBFBD>ʹ<EFBFBD><CAB9>ê<EFBFBD><C3AA>
|
|
|
|
|
|
GroupFrameRect = 0x00000200, //<2F>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
GroupFrameRoundRect = 0x00000400, //<2F>߿<EFBFBD>Բ<EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD>
|
|
|
|
|
|
GroupFrameEllipse = 0x00000800, //<2F>߿<EFBFBD><DFBF><EFBFBD>Բ
|
|
|
|
|
|
GroupFrameAll = (GroupFrameRect | GroupFrameRoundRect | GroupFrameEllipse),
|
|
|
|
|
|
|
|
|
|
|
|
//ˮƽ<CBAE><C6BD><EFBFBD>뷽ʽ
|
|
|
|
|
|
GroupAlignLeft = 0x00001000, //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
GroupAlignCenterH = 0x00002000, //ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
|
|
|
|
|
|
GroupAlignRight = 0x00004000, //<2F><><EFBFBD><EFBFBD>(ȱʡ)
|
|
|
|
|
|
GroupAlignAllH = (GroupAlignLeft | GroupAlignCenterH | GroupAlignRight),
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ֱ<EFBFBD><D6B1><EFBFBD>뷽ʽ
|
|
|
|
|
|
GroupAlignTop = 0x00008000, //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
GroupAlignCenterV = 0x00010000, //<2F><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>
|
|
|
|
|
|
GroupAlignBottom = 0x00020000, //<2F><><EFBFBD><EFBFBD>(ȱʡ)
|
|
|
|
|
|
GroupAlignAllV = (GroupAlignTop | GroupAlignCenterV | GroupAlignBottom),
|
|
|
|
|
|
|
|
|
|
|
|
PathFillAlternate = 0x00100000, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EEA3AC><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
PathFillWinding = 0x00200000, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
PathFillAll = (PathFillAlternate | PathFillWinding)
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
enum enumAnchorStyleFlags
|
|
|
|
|
|
{
|
|
|
|
|
|
AnchorFit = 0x00000001, //<2F>̶<EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
typedef CXyBlock CInsertBlock;
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CPathFill :
|
|
|
|
|
|
public CXyBlock
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CPathFill(void);
|
|
|
|
|
|
virtual ~CPathFill(void);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void Draw(void* pXyDC);
|
|
|
|
|
|
|
|
|
|
|
|
void operator=(CPathFill& pn);
|
|
|
|
|
|
|
|
|
|
|
|
enum enumStyleFlags
|
|
|
|
|
|
{
|
|
|
|
|
|
styleAlternate =0x00000001, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EEA3AC><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
styleWinding =0x00000002, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
styleAll =(styleAlternate|styleWinding)
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|