|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
//文件 Circle.h
|
|
|
//主要功能:
|
|
|
//
|
|
|
//程序编写: 2005-12-07
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#pragma once
|
|
|
#include ".\pointnamerect.h"
|
|
|
#include "curveex.h"
|
|
|
|
|
|
class AFX_EXT_CLASS CEllipse : public CPointNameRect
|
|
|
{
|
|
|
public:
|
|
|
CEllipse(void);
|
|
|
virtual ~CEllipse(void);
|
|
|
|
|
|
void Serialize(CArchive& ar, const short &ver) override;
|
|
|
virtual int Read(CFile &fr, const short& ver);
|
|
|
virtual void Write(CFile &fw, const short& ver);
|
|
|
virtual bool GetRange(CRect8 &range);
|
|
|
virtual BOOL IsInRange(CRect8& range);
|
|
|
virtual void Rotate(double xs, double ys, double angle);
|
|
|
virtual void ScaleProperty(double sx, double sy);
|
|
|
|
|
|
virtual void WriteDML(CFile &fw, const short& ver, int nBaseTabNum);
|
|
|
virtual int ReadDML(CFile &fr, const short &ver);
|
|
|
|
|
|
virtual void WritePCG(CFile &fw, const short& ver, int nBaseTabNum);
|
|
|
virtual int ReadPCG(CFile &fr, const short &ver);
|
|
|
|
|
|
virtual void WritePCG2(CFile &fw, const short& ver, int nBaseTabNum);
|
|
|
virtual int ReadPCG2(CFile &fr, const short &ver);
|
|
|
|
|
|
int ReadEllipse(CFile &fr); //老格式椭圆
|
|
|
|
|
|
virtual void SetInTriangle(CPoint2D& ptArc1, CPoint2D& ptArc2, CPoint2D& ptArc3);//根据内接三角形的三个顶点设置圆
|
|
|
void GetPoint(double& x, double &y, double angle); //根据角度获得圆上的坐标
|
|
|
|
|
|
CCurveEx* ToCurve(double AngleStep);//获得曲线,使用完成后需要delete;
|
|
|
CSize8 GetRadius(int nMode=0); //获得半径,nMode=0为原半径,nMode=1为中心半径(原半径+曲线宽度/2),nMode=2为最大半径(原半径+宽度)
|
|
|
void operator=(CEllipse& cir);
|
|
|
|
|
|
double m_dCurveWidth; //曲线宽度
|
|
|
DWORD m_nFlags; //宽度定位等
|
|
|
|
|
|
DWORD GetWidthPosition(void);
|
|
|
void SetWidthPosition(DWORD nPos);
|
|
|
|
|
|
COLORREF color;
|
|
|
COLORREF fillColor;
|
|
|
int fillState = 0; //是否充填(4否, 20充填 与双狐2032对齐)
|
|
|
|
|
|
// Width Style Flags
|
|
|
enum WidthStyleFlags
|
|
|
{
|
|
|
posCenter = 0x0001, //中心
|
|
|
posOut = 0x0002, //外侧
|
|
|
posIn = 0x0004 //内侧
|
|
|
};
|
|
|
|
|
|
public:
|
|
|
virtual int ReadPCG(void *pxp, const short &ver);
|
|
|
virtual int ReadPCG2(void *pxp, const short &ver);
|
|
|
};
|
|
|
|
|
|
class AFX_EXT_CLASS CCircle : public CEllipse
|
|
|
{
|
|
|
public:
|
|
|
CCircle(void);
|
|
|
virtual ~CCircle(void);
|
|
|
|
|
|
public:
|
|
|
virtual int Read(CFile &fr, const short& ver);
|
|
|
virtual void Write(CFile &fw, const short& ver);
|
|
|
virtual void WriteDML(CFile &fw, const short& ver, int nBaseTabNum);
|
|
|
virtual int ReadDML(CFile &fw, const short &ver);
|
|
|
virtual int ReadDMLDonut(CFile &fr, const short &ver);
|
|
|
|
|
|
virtual void WritePCG(CFile &fw, const short& ver, int nBaseTabNum);
|
|
|
virtual int ReadPCG(CFile &fw, const short &ver);
|
|
|
virtual int ReadPCGDonut(CFile &fr, const short &ver);
|
|
|
|
|
|
//virtual int ReadAnyPCG(CFile &fw, const short &ver);
|
|
|
|
|
|
virtual void ScaleProperty(double sx, double sy);
|
|
|
|
|
|
int ReadDonut(CFile& fr);
|
|
|
void operator=(CCircle& cir);
|
|
|
|
|
|
public:
|
|
|
virtual int ReadPCG(void *pxp, const short &ver);
|
|
|
virtual int ReadPCGDonut(void *pxp, const short &ver);
|
|
|
};
|