|
|
#pragma once
|
|
|
#include "DrawOperator/PathXy.h"
|
|
|
|
|
|
class AFX_EXT_CLASS CXyGroup :public CBaseExtend,public CXyBlock
|
|
|
{
|
|
|
public:
|
|
|
CXyGroup();
|
|
|
virtual ~CXyGroup();
|
|
|
|
|
|
public:
|
|
|
|
|
|
CRect8 m_rect; //框的矩形范围
|
|
|
CRect8 m_rtMargin; //外框和内部图的边距
|
|
|
CPoint2D m_ptAnchor; //锚点
|
|
|
double m_dPercent; //锚宽度比例,默认为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:加,1:减,2:乘,3:除
|
|
|
|
|
|
virtual void ExchangeXY(void); //交换XY坐标
|
|
|
virtual void ExchangeXY(CProjection* pxyz); //转换到指定投影坐标
|
|
|
|
|
|
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; }
|
|
|
|
|
|
//计算外框范围
|
|
|
void ComputeRect();
|
|
|
|
|
|
//开关变量值
|
|
|
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 处理组合块符号没有加载到当前符号 */
|
|
|
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); //根据偏移矩阵修改参数
|
|
|
|
|
|
virtual CBaseExtend* CreateClone();
|
|
|
public:
|
|
|
|
|
|
enum enumGroupStyleFlags
|
|
|
{
|
|
|
GroupHide = 0x00000001, //隐藏
|
|
|
GroupFrameLineL = 0x00000002, //画左边框线
|
|
|
GroupFrameLineR = 0x00000004, //画右边框线
|
|
|
GroupFrameLineT = 0x00000008, //画上边框线
|
|
|
GroupFrameLineB = 0x00000010, //画下边框线
|
|
|
GroupFrameLineStraAll = (GroupFrameLineL | GroupFrameLineR | GroupFrameLineT | GroupFrameLineB),
|
|
|
GroupFrameLineIcU = 0x00000020, //画斜上边框线
|
|
|
GroupFrameLineIcD = 0x00000040, //画斜下边框线
|
|
|
GroupFrameLineIcAll = (GroupFrameLineIcU | GroupFrameLineIcD),
|
|
|
GroupFrameLineAll = (GroupFrameLineStraAll | GroupFrameLineIcAll),
|
|
|
|
|
|
GroupFrameAnchor = 0x00000100, //边框使用锚点
|
|
|
GroupFrameRect = 0x00000200, //边框矩形
|
|
|
GroupFrameRoundRect = 0x00000400, //边框圆角矩形
|
|
|
GroupFrameEllipse = 0x00000800, //边框椭圆
|
|
|
GroupFrameAll = (GroupFrameRect | GroupFrameRoundRect | GroupFrameEllipse),
|
|
|
|
|
|
//水平对齐方式
|
|
|
GroupAlignLeft = 0x00001000, //居左
|
|
|
GroupAlignCenterH = 0x00002000, //水平居中
|
|
|
GroupAlignRight = 0x00004000, //居右(缺省)
|
|
|
GroupAlignAllH = (GroupAlignLeft | GroupAlignCenterH | GroupAlignRight),
|
|
|
|
|
|
//垂直对齐方式
|
|
|
GroupAlignTop = 0x00008000, //居上
|
|
|
GroupAlignCenterV = 0x00010000, //垂直居中
|
|
|
GroupAlignBottom = 0x00020000, //居下(缺省)
|
|
|
GroupAlignAllV = (GroupAlignTop | GroupAlignCenterV | GroupAlignBottom),
|
|
|
|
|
|
PathFillAlternate = 0x00100000, //奇数充填,偶数不充填方式
|
|
|
PathFillWinding = 0x00200000, //不管是奇数还是偶数均充填
|
|
|
PathFillAll = (PathFillAlternate | PathFillWinding)
|
|
|
};
|
|
|
|
|
|
enum enumAnchorStyleFlags
|
|
|
{
|
|
|
AnchorFit = 0x00000001, //固定
|
|
|
};
|
|
|
|
|
|
|
|
|
protected:
|
|
|
CCurveEx m_curve; //边框线
|
|
|
DWORD m_dwAnchorFlags;//锚点风格
|
|
|
double m_dAnchorWidth; //锚宽度
|
|
|
|
|
|
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);
|
|
|
};
|