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.

157 lines
4.6 KiB
C

1 month ago
#pragma once
#include "DrawOperator/PathXy.h"
class AFX_EXT_CLASS CXyGroup :public CBaseExtend,public CXyBlock
{
public:
CXyGroup();
virtual ~CXyGroup();
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
public:
virtual void Draw(CXyDC* pDC);
virtual void Draw(CXyDC &dc);
virtual void Draw(CXyDC& dc, void* pHowToView);
virtual void Offset(double dx, double dy);
virtual void ScaleCoor(double xs, double ys, double dx, double dy);
virtual void ScaleProperty(double sx, double sy);
virtual void Rotate(double xs, double ys, double angle);
virtual void ScaleCoordinate(double sx, double sy, int mode); //mode=0:<3A>ӣ<EFBFBD>1:<3A><><EFBFBD><EFBFBD>2:<3A>ˣ<EFBFBD>3:<3A><>
virtual void ExchangeXY(void); //<2F><><EFBFBD><EFBFBD>XY<58><59><EFBFBD><EFBFBD>
virtual void ExchangeXY(CProjection* pxyz); //ת<><D7AA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>
virtual void SetXy(void* pPathXy, BOOL bClear = TRUE);
virtual void Serialize(CArchive& ar, const short& ver);
void operator=(CXyGroup& pn);
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 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);
void WritePCG(CFile &fw, const short& ver, int nBaseTabNum);
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 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 CBaseExtend* CreateClone();
public:
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>
};
protected:
CCurveEx m_curve; //<2F>߿<EFBFBD><DFBF><EFBFBD>
DWORD m_dwAnchorFlags;//ê<><C3AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double m_dAnchorWidth; //ê<><C3AA><EFBFBD><EFBFBD>
protected:
virtual void WritePCG_Callout(CFile& fw, int nBaseTabNum); //ggff2025
public:
virtual int ReadPCG(CKXmlParse& xp, const short &ver);
virtual int ReadPCGEx(CKXmlParse& xp, const short &ver, void * pXy);
};