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.

642 lines
20 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD> CurvePlay.h
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
/////////////////////////////////////////////////////////////////////////////
#pragma once
class CXyDC;
#include "curveex.h"
namespace NCurveEmbellish
{
// CurvePlay.h
#define CurveArrowHead 101
#define CurveArrowTail 102
#define CurveScale 103
#define CurveRgn 104
#define CurveNameHead 105
#define CurveNameTail 106
#define CurveProperties 107
#define CurveInName 108
#define CurveLocate 109
#define CurveTwoMark 110
#define CurveInNameAny 111
#define CurveMarkHead 112
#define CurveMarkTail 113
#define CurveMarkMove 114
#define CurveEffect 115 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CurveCenterName 116 //<2F><><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//#define CurveName 3
//#define CurveInName_Class 0
//#define CurveInName_Name 1
#include "CurveType.h"
///////////////////////////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
#define PLINE_SMOOTH_HEAD 0x00010000 //<2F><><EFBFBD><EFBFBD>Բͷ<D4B2><CDB7>ʾ
#define PLINE_MARK_NAME_NUM 0x00020000 //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define PLINE_MARK_NAME_STEP 0x00040000 //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define PLINE_LOCAT_TYPE_L 0x00080000 //<2F><>ע׮<D7A2><D7AE>ֵ
#define PLINE_LOCAT_TYPE_Z 0x00100000 //<2F><>עZֵ
#define PLINE_LOCAT_SCALEONE 0x00200000 //ͳһ<CDB3>̶<EFBFBD>
#define PLINE_LOCAT_DIRECTION 0x00400000 //ͳһ<CDB3><D2BB><EFBFBD><EFBFBD>
#define PLINE_LOCAT_NODE 0x00800000 //<2F><>ע<EFBFBD>ڽڵ㴦
#define PLINE_LOCAT_TO_INT 0x01000000 //׮<><D7AE>ȡ<EFBFBD><C8A1>
#define PLINE_LOCAT_HEAD_TAIL 0x02000000 //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β׮<CEB2><D7AE>
#define PLINE_LOACT_ALL (PLINE_LOCAT_TYPE_L|PLINE_LOCAT_TYPE_Z|PLINE_LOCAT_SCALEONE|PLINE_LOCAT_DIRECTION|PLINE_LOCAT_NODE|PLINE_LOCAT_TO_INT|PLINE_LOCAT_HEAD_TAIL)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define PLINE_FAL_DIS_IN 0x02000000 //<2F><><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC>ľ<EFBFBD><C4BE><EFBFBD>
#define PLINE_FAL_DIS_HEAD 0x04000000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵ľ<CBB5><C4BE><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define PLINE_NAME_ALONG_CURVE 0x08000000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define PLINE_IN_NAME_AUTO_DECREASE 0x10000000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><CCAB>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>С
//<2F><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define PLINE_ARROW_ALONG_CURVE PLINE_NAME_ALONG_CURVE //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>
//<2F><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define PLINE_SOLID_BEZIER PLINE_BEZIER //B<><42><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define PLINE_SOLID_BCLOSE PLINE_BC //B<><42><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define PLINE_SOLID_SPLINE PLINE_SPLINE //S<><53><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define PLINE_SOLID_SCLOSE PLINE_SPLINEC //S<><53><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD>
class AFX_EXT_CLASS CCurveView //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>εĻ<CEB5><C4BB><EFBFBD>
{
public:
CCurveView(int type);
CCurveView();
virtual ~CCurveView();
protected:
int m_type;
//Ϊ<>˶<EFBFBD><CBB6><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>
void DoFillRgn(CXyDC& dc, CCurveEx* curve);
void DoFillRgn(CXyDC& dc, CPointList& ptList);
virtual void DoFillContent(CXyDC& dc, CRect8 range);
public:
void DoFillRgn(CRgn& rgn, CXyDC& dc);
public:
void* pDraw;
DWORD m_nFlags; //Ϊ<>˱<EFBFBD><CBB1><EFBFBD><EFBFBD><EFBFBD>չ,ʹ<><CAB9>DWORD<52><44><EFBFBD><EFBFBD>
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver);
virtual void Write(CFile &fw, const short &ver, double cc);
virtual void Draw(CXyDC &dc,CCurveEx *curve);
virtual void ScaleProperty(double sx, double sy);
void operator=(CCurveView& cv);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fw, const short &ver, void* pXmlParse);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fw, const short &ver, void* pXmlParse);
void SetType(int type);
int GetType(void);
COLORREF color;
void SetFlags(DWORD dwFlags);
DWORD GetFlags(void);
DWORD GetCurveType(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SetCurveType(DWORD nType); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString GetCurveTypeString(DWORD type);
public:
virtual int ReadPCG(const short &ver, void* pXmlParse);
};
class AFX_EXT_CLASS CCurveArrow : public CCurveView
{
public:
CCurveArrow(int type);
CCurveArrow();
virtual ~CCurveArrow();
protected:
void DrawArrow(CXyDC &dc,CCurveEx *curve,int stat);
int ReadArrow(CFile &fr);
public:
//void* pDraw;
CString MarkName;
CSize8 m_size;
double angle;
CSize8 m_szOffset; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>ΪCX<43><58><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ƫ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>ΪCY
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver);
virtual void Write(CFile &fw, const short &ver, double cc);
virtual void Draw(CXyDC &dc,CCurveEx *curve);
virtual void ScaleProperty(double sx, double sy);
void operator=(CCurveArrow& ca);
int PositionNew(int bReplace);
BOOL IsAlongCurve(void);
void EnableAlongCurve(BOOL bEnable);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fw, const short &ver, void* pXmlParse);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fw, const short &ver, void* pXmlParse);
public:
virtual int ReadPCG( const short &ver, void* pXmlParse);
};
class AFX_EXT_CLASS CCurveLocate : public CCurveView
{
public:
CCurveLocate();
virtual ~CCurveLocate();
protected:
void DrawNode(CXyDC &dc,CCurveEx *pCurve);
void DrawAngle(CXyDC & dc, CCurveEx * curve);
int GetValue(CCurveEx * curve,double vl,double &x0,double &y0,double &angle);
void OffsetText(double &x,double &y,double a);
CString FloatToString(double val);
public:
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver); //<2F>ϸ<EFBFBD>ʽ
virtual void Write(CFile &fw, const short &ver, double cc);
virtual void Draw(CXyDC &dc,CCurveEx *curve);
virtual void ScaleProperty(double sx, double sy);
void operator=(CCurveLocate& cl);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver, void* pXmlParse);
//DWORD m_nFlags; //<2F><>ע<EFBFBD><D7A2>ʽ\<5C><><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>
CSize8 m_size;
CSize8 m_offset;
double step,angle,l1,l2;
long m_decimal; //<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1>λ<EFBFBD><CEBB>
LOGFONT m_logFont;
void EnableHeadTail(BOOL bEnable);
void EnableDirection(BOOL bDirection);
void EnableScaleOne(BOOL bScaleOne);
void EnableToInt(BOOL bInt);
void EnableInNode(BOOL bNode);
void SetMarkValue(BOOL bIsValueZ); //bIsValueZ=TRUEʱ<45><CAB1>עZֵ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע׮<D7A2><D7AE>ֵ
void SetCurveType(DWORD nType); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD GetCurveType(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CCurveEx* GetSmoothCurve(CXyDC& dc, CCurveEx* curve); //<2F><>ʱ<EFBFBD><EFBFBD><E2BBAC><EFBFBD><EFBFBD>ʱ,<2C><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʹ<CAB9><E2BBAC><EFBFBD><EFBFBD>;
BOOL IsHeadTail(void); //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β׮<CEB2><D7AE>
BOOL IsInNode(void); //<2F><>ע<EFBFBD>ڽڵ㴦
BOOL IsScaleOne(void); //ͳһ<CDB3>̶<EFBFBD>
BOOL IsToInt(void); //׮<><D7AE>ȡ<EFBFBD><C8A1>
BOOL IsDirection(void); //ͳһ<CDB3><D2BB><EFBFBD><EFBFBD>
BOOL IsMarkZ(void); //<2F>DZ<EFBFBD>עZֵ<5A><D6B5><EFBFBD>DZ<EFBFBD>ע׮<D7A2><D7AE>
public:
virtual int ReadPCG(const short &ver, void* pXmlParse);
};
class AFX_EXT_CLASS CCurveLocateEx : public CCurveLocate
{
public:
CCurveLocateEx();
virtual int Read(CFile &fr, const short &ver);//<2F>¸<EFBFBD>ʽ
};
class AFX_EXT_CLASS CCurveScale : public CCurveLocate
{
public:
CCurveScale();
virtual ~CCurveScale();
protected:
void DrawNode(CXyDC &dc,CCurveEx *curve);
void DrawTurn(CXyDC &dc,CCurveEx *curve);
public:
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver); //<2F>ϸ<EFBFBD>ʽ<EFBFBD><CABD>ȡ
virtual void Write(CFile &fw, const short &ver, double cc);
virtual void Draw(CXyDC &dc,CCurveEx *pCurve);
void operator=(CCurveScale& cs);
int PositionNew(int bReplace);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver, void* pXmlParse);
CString MarkName;
//void* pDraw;
public:
virtual int ReadPCG( const short &ver, void* pXmlParse);
};
class AFX_EXT_CLASS CCurveScaleEx : public CCurveScale
{
public:
CCurveScaleEx();
virtual int Read(CFile& fr, const short &ver); //<2F>¸<EFBFBD>ʽ<EFBFBD><CABD>ȡ
};
class AFX_EXT_CLASS CCurveMarkSymbol
{
public:
CCurveView* m_pActualValue;
public:
CCurveMarkSymbol();
~CCurveMarkSymbol();
int ReadPCG(CFile &fr, const short &ver, void* pXmlParse);
int WritePCG(CFile &fw, const short &ver, void* pCurveView, int nBaseTabNum);
void SetType(int type);
//CString MarkName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//void* pDraw; //<2F><><EFBFBD><EFBFBD>
private:
int m_type;
public:
int ReadPCG(const short &ver, void* pXmlParse);
};
class AFX_EXT_CLASS CCurveTwoMark : public CCurveLocate
{
public:
CCurveTwoMark();
virtual ~CCurveTwoMark();
public:
CString MarkName;
//void* pDraw;
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver);
virtual void Write( CFile &fw, const short &ver, double cc );
virtual void ScaleProperty(double sx, double sy);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver, void* pXmlParse);
virtual void Draw(CXyDC &dc,CCurveEx *pCurve);
void operator=(CCurveTwoMark& cf);
int PositionNew(int bReplace);
DWORD GetDistanceMode(void);
void SetDitanceMode(DWORD nMode);
public:
virtual int ReadPCG( const short &ver, void* pKXmlParse);
};
class AFX_EXT_CLASS CCurveTwoMarkEx : public CCurveTwoMark
{
public:
CCurveTwoMarkEx();
virtual int Read(CFile &fr, const short &ver);
};
class AFX_EXT_CLASS CCurveMarkMove : public CCurveScaleEx
{
public:
CCurveMarkMove();
virtual ~CCurveMarkMove();
public:
BOOL bMarkMove;
CCurveEx *curve;
double startl, endl;
void Move(double v);
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver);
virtual void Write(CFile &fw, const short &ver, double cc);
virtual void Draw(CXyDC &dc,CCurveEx *curve);
void operator=(CCurveMarkMove& cm);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver, void* pXmlParse);
public:
virtual int ReadPCG(const short &ver, void* pXmlParse);
};
class AFX_EXT_CLASS CCurveRgn : public CCurveView
{
public:
CCurveRgn();
virtual ~CCurveRgn();
protected:
virtual void DoFillContent(CXyDC& dc, CRect8 range);
public:
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver);
virtual void Write( CFile &fw, const short &ver, double cc );
virtual void Draw(CXyDC &dc,CCurveEx *curve);
virtual void ScaleProperty(double sx, double sy);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG2(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG2(CFile &fr, const short &ver, void* pXmlParse);
void operator=(CCurveRgn& cr);
int PositionNew(int bReplace);
CString MarkName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CSize8 m_grid; //<2F><><EFBFBD>ż<EFBFBD><C5BC>Ŀհ׼<D5B0><D7BC><EFBFBD>
CSize8 m_delt; //<2F><><EFBFBD>Ŵ<EFBFBD>С
CSize8 m_scale; //<2F><><EFBFBD>ųߴ<C5B3><DFB4><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>
void* pDraw; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
public:
virtual int ReadPCG( const short &ver, void* pKXmlParse);
virtual int ReadPCG2( const short &ver, void* pKXmlParse);
};
class AFX_EXT_CLASS CCurveName:public CCurveArrow
{
public:
CCurveName(int type);
CCurveName();
virtual ~CCurveName();
public:
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver);
virtual void Write(CFile &fw, const short &ver, double cc);
virtual void Draw(CXyDC &dc,CCurveEx *curve);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG2(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG2(CFile &fr, const short &ver, void* pXmlParse);
CString HeadString;
int state = 0;
LOGFONT m_logFont;
void operator=(CCurveName& cn);
BOOL IsAlongCurve(void);
void EnableAlongCurve(BOOL bEnable);
public:
virtual int ReadPCG( const short &ver, void* pXmlParse);
virtual int ReadPCG2(const short &ver, void* pXmlParse);
};
class AFX_EXT_CLASS CCurveProperties:public CCurveArrow
{
public:
CCurveProperties();
virtual ~CCurveProperties();
public:
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver);
virtual void Write(CFile &fw, const short &ver, double cc);
virtual void Draw(CXyDC &dc,CCurveEx *curve);
virtual void ScaleProperty(double sx, double sy);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver, void* pXmlParse);
void operator=(CCurveProperties& cp);
BOOL IsSmoothHead(void);
void EnableSmoothHead(BOOL bEnable);
BOOL IsVirtual(void);
void EnableVirtual(BOOL bEnable);
//DWORD m_nFlags; //<2F><><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>\Բͷ<D4B2><CDB7>ʾ, Ϊ<>˱<EFBFBD><CBB1><EFBFBD><EFBFBD><EFBFBD>չ,ʹ<><CAB9>DWORD<52><44><EFBFBD><EFBFBD>
double m_offset;
double m_SmoothStep;
int m_alpha = 255; // ͸<><CDB8><EFBFBD>ȣ<EFBFBD>255 <20><>ʾ<EFBFBD><CABE>͸<EFBFBD><CDB8>
CCurveType VirtualType;
stuCurveWave m_stuCurveWave; //Ϊ<>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
protected:
void Draw(CXyDC &dc,CCurveEx *curve,double l1,double l2);
virtual void DoFillContent(CXyDC& dc, CRect8 range);
public:
virtual int ReadPCG( const short &ver, void* pKXmlParse);
};
class AFX_EXT_CLASS CCurvePropertiesEx : public CCurveProperties //<2F>¸<EFBFBD>ʽ
{
public:
CCurvePropertiesEx();
virtual int Read(CFile &fr, const short &ver);
};
class AFX_EXT_CLASS CCurveInName:public CCurveProperties
{
public:
CCurveInName();
virtual ~CCurveInName();
public:
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver);
virtual void Write(CFile &fw, const short &ver, double cc);
virtual void Draw(CXyDC &dc,CCurveEx *curve);
virtual void ScaleProperty(double sx, double sy);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG2(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver, void* pXmlParse);
virtual int ReadPCG2(CFile &fr, const short &ver, void* pXmlParse);
void DrawStep(CXyDC &dc, CCurveEx *curve, CString name);
double Draw(CXyDC &dc,CCurveEx *curve,CString &name,double l0);
void operator=(CCurveInName& cn);
void SetInNameType(DWORD nIdea);
DWORD GetInNameType(void);
long m_nameNum; //<2F>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ֵĸ<D6B5><C4B8><EFBFBD>
COLORREF text_color;
double offset,text_h,step;
LOGFONT m_logFont;
void EnableAutoDecrease(BOOL bEnable);
BOOL IsAutoDecrease(void);
public:
virtual int ReadPCG( const short &ver, void* pXmlParse);
virtual int ReadPCG2( const short &ver, void* pXmlParse);
};
class AFX_EXT_CLASS CCurveInNameEx : public CCurveInName
{
public:
CCurveInNameEx();
virtual int Read(CFile &fr, const short &ver);
};
class AFX_EXT_CLASS CCurveInNameAny : public CCurveInName
{
public:
CCurveInNameAny();
virtual ~CCurveInNameAny();
public:
double GetBeginPoint(CXyDC &dc, CCurveEx*curve, CString &name, double l0);
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver);
virtual void Write(CFile &fw, const short &ver, double cc);
virtual void Draw(CXyDC &dc,CCurveEx*curve);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG2(CFile &fw, const short &ver, double cc, int nBaseTabNum);
void Create(int nNumL0);
void operator=(CCurveInNameAny& ca);
double * l0;
public:
virtual int ReadPCG( const short &ver, void* pXmlParse);
};
class AFX_EXT_CLASS CCurveInNameAnyEx : public CCurveInNameAny
{
public:
CCurveInNameAnyEx();
virtual ~CCurveInNameAnyEx();
virtual int Read(CFile &fr, const short &ver);
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>,<2C><><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
class AFX_EXT_CLASS CCurveEffect : public CCurveView
{
public:
CCurveEffect();
virtual ~CCurveEffect();
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver);
virtual void Write( CFile &fw, const short &ver, double cc );
virtual void Draw(CXyDC &dc,CCurveEx *curve);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver, void* pXmlParse);
void operator=(CCurveEffect& ce);
void Clear();
void CreateColor(int num);
void CreateColor(COLORREF beginColor, COLORREF endColor);
BOOL CreateColorBase(CColorBase& cb);
enum enStyleEffect
{
styleHorizonal = 0x00000001, //ˮƽ
styleVertical = 0x00000002, //<2F><>ֱ
styleDiagonalUp = 0x00000004, //б<><D0B1>
styleDiagonalDown = 0x00000008, //б<><D0B1>
styleCornerDiagonalUp = 0x00000010, //<2F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD>б<E4A3A8>ϣ<EFBFBD>
styleCornerDiagonalDown = 0x00000020, //<2F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD>б<E4A3A8>£<EFBFBD>
styleCenter = 0x00000040 //<2F><><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
};
protected:
virtual void DoFillContent(CXyDC& dc, CRect8 range);
//<2F><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ֱ<EFBFBD>DZ߽<C7B1><DFBD>зָȻ<EEA3AC><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void GradientFillX_Cathetus(CXyDC& dc, CColorBase& cb, CPoint2D& pt1, CPoint2D& pt2, CPoint2D& pt3, double dis); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void GradientFillY_Cathetus(CXyDC& dc, CColorBase& cb, CPoint2D& pt1, CPoint2D& pt2, CPoint2D& pt3, double dis); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>б<EFBFBD>߽<EFBFBD><DFBD>зָȻ<EEA3AC><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void GradientFillX_Hypotenuse(CXyDC& dc, CColorBase& cb, CPoint2D& pt1, CPoint2D& pt2, CPoint2D& pt3, double dis); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void GradientFillY_Hypotenuse(CXyDC& dc, CColorBase& cb, CPoint2D& pt1, CPoint2D& pt2, CPoint2D& pt3, double dis); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
DWORD m_nEffectFlags;
int num;
COLORREF* m_pColor;
public:
virtual int ReadPCG( const short &ver, void* pXmlParse);
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class AFX_EXT_CLASS CCurveCenterName : public CCurveName
{
public:
CCurveCenterName();
virtual ~CCurveCenterName();
virtual void Serialize(CArchive& ar, const short &ver);
virtual int Read(CFile &fr, const short &ver);
virtual void Write( CFile &fw, const short &ver, double cc );
virtual void Draw(CXyDC &dc,CCurveEx *curve);
virtual void WriteDML(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadDML(CFile &fr, const short &ver, void* pXmlParse);
virtual void WritePCG(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual void WritePCG2(CFile &fw, const short &ver, double cc, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver, void* pXmlParse);
void operator=(CCurveCenterName& ce);
CPoint2D GetCenterPoint(CCurveEx* pCurve);
public:
virtual int ReadPCG( const short &ver, void* pXmlParse);
};
};