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.

95 lines
2.8 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//////////////////////////////////////////////////////////////////////////////
//文件 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);
};