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.

182 lines
5.8 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD> Net.h
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "rect8ex.h"
#include "curveex.h"
#include "..\ProjectionLib\Projection.h"
#include ".\text.h"
#include ".\exchangexyz.h"
#include ".\frame.h"
class AFX_EXT_CLASS CNet : public CRect8
{
public:
CNet(void);
virtual ~CNet(void);
int64_t GetId() const;
void SetId(int64_t id);
protected:
double L1,L2,B1,B2;
CCurveEx *CurveL,*CurveB;
double delt;
CPositionList* m_pPosList; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ԫ<EFBFBD><D4AA><EFBFBD>б<EFBFBD>,<2C><><EFBFBD>ݴ<EFBFBD><DDB4>б<EFBFBD><D0B1><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD>UNDO\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD>
COLORREF m_colCurve;
COLORREF m_colText;
COLORREF m_colFrame;
protected:
void DrawCurve(void* pDC, CCurveEx &tc, BOOL bDraw, void* pXY);
void DrawText (void* pDC, CText& text, BOOL bDraw, void* pXY);
void DrawDFM(double x,double y,double wh,double angle,double l,
void *pDC, int side, BOOL bDraw, void* pXY=NULL, BOOL bIsL=TRUE);
void DrawNetCrossPoint (void *pDC, BOOL bDraw, void* pXY=NULL);
void DrawNetPline (void *pDC, BOOL bDraw, void* pXY=NULL);
void DrawScale (void* pDC, BOOL bDraw, void* pXY=NULL); //<2F><><EFBFBD>̶<EFBFBD>
void GetLCurve_M(double bb, double l0); //<2F><><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD>γ<EFBFBD><CEB3>Ϊ<EFBFBD><CEAA><EFBFBD>֡<EFBFBD><D6A1><EFBFBD>λ
void GetBCurve_M(double lb, double b0);
//<2F><><EFBFBD>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void OutFrame_Serialize(CArchive& ar, const short &ver);
int OutFrame_Read(CFile& fr, const short& ver);
void OutFrame_Write(CFile& fw, const short& ver);
void OutFrame_WriteDML(CFile& fw, const short& ver, int nBaseTabNum);
int OutFrame_ReadDML(CXmlParse& xp, const short &ver);
void OutFrame_WritePCG(CFile& fw, const short& ver, int nBaseTabNum);
int OutFrame_ReadPCG(CXmlParse& xp, const short &ver);
CRect8 GetEnlargeRangeBL(void);
public:
CProjection *m_pExchangeXYZ;
CExchangeXYZ m_exchangeXYZ;
double _FrameWidth;
CSize8 m_step; //m_step.cx=steplx,m_step.cy=stepby;//<2F><><EFBFBD><EFBFBD>,γ<><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>,<2C>Է<EFBFBD>Ϊ<EFBFBD><CEAA>λ
double scale; //<2F>̶<EFBFBD>,<2C>Է<EFBFBD>Ϊ<EFBFBD><CEAA>λ
double CrossParameter; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD m_nFlags; //<2F><><EFBFBD>ֱ<EFBFBD>ע<EFBFBD><D7A2>ʽ<EFBFBD><CABD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʽ<EFBFBD><CABD><EFBFBD>Ƿ<EFBFBD><C7B7>б߿<D0B1>
CSize8 m_szText; //<2F><><EFBFBD>ֳߴ<D6B3>
CFrame m_outFrame; //<2F><><EFBFBD>߿<EFBFBD>
CFrame* GetOutFrame(void);
CRect8 GetOutFrameRect(void);
CRect8 GetInFrameRect(void);
void SetFrameColor(COLORREF col);
COLORREF GetFrameColor(void);
void ChangeToBL_D(double &x, double &y); //ת<><D7AA>Ϊ<EFBFBD><CEAA>γ<EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ<CEBB><CEAA>
void ChangeToBL_DFM(double &x, double &y); //ת<><D7AA>Ϊ<EFBFBD><CEAA>γ<EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ<CEBB>ȷ<EFBFBD><C8B7><EFBFBD>
void ChangeToXY_M(double &l,double &b); //ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EAA3AC><EFBFBD>뵥λΪ"<22><>"
void ChangeToXY_DFM(double &l_dfm,double &b_dfm); //ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EAA3AC><EFBFBD><EFBFBD>Ϊ"<22>ȷ<EFBFBD><C8B7><EFBFBD>"<22><>ʽ
void ClearCurve(void); //ɾ<><C9BE>CurveL,CurveB<65><42><EFBFBD><EFBFBD>
CRect8 GetRangeBL(void);
virtual void Serialize(CArchive& ar, const short &ver);
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 &fr, const short &ver);
virtual void WritePCG(CFile& fw, const short& ver, int nBaseTabNum);
virtual int ReadPCG(CFile &fr, const short &ver);
virtual int ReadPCG2(CFile &fr, const short &ver);
int Read_Old(CFile& fr, const short& ver);
void Write_Old(CFile& fw, const short& ver);
void WriteDML_Old(CFile& fw, const short& ver, int nBaseTabNum);
int ReadDML_Old(CFile &fr, const short &ver);
void WritePCG_Old(CFile& fw, const short& ver, int nBaseTabNum);
int ReadPCG_Old(CFile &fr, const short &ver);
virtual void GetRange(CRect8& range);
virtual void GetRange(CPoint3D& minPoint, CPoint3D& maxPoint);
virtual int IsInRange(CRect8& range);
virtual void ScaleCoordinate(double sx, double sy, int mode); //mode=0:<3A>ӣ<EFBFBD>1:<3A><><EFBFBD><EFBFBD>2:<3A>ˣ<EFBFBD>3:<3A><>
virtual void ScaleCoor(double xs, double ys, double dx, double dy);
virtual void ScaleProperty(double sx, double sy);
virtual int Dissolution(void* pXY, CPositionList& list); //<2F><><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>Ԫ<EFBFBD><D4AA>
virtual void Draw(void* pDC);
virtual void Calibrate(int type, void* pValue);
void operator=(CNet& net);
void SetProjection(CProjection* pExchangeXYZ);
void Offset(double dx, double dy);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
bool IsHasInFrame(void);
bool IsHasOutFrame(void);
bool IsHasText(void);
void EnableInFrame(bool bView);
void EnableOutFrame(bool bView);
void EnableText(bool bView);
DWORD GetSideMode(void);
DWORD GetTextMode(void);
DWORD GetDisplayMode(void);
void SetDisplayMode(DWORD nMode);
void SetTextMode(DWORD nMode);
void SetSideMode(DWORD nMode);
bool SetStep(const CSize8& step);
void SetCurveColor(COLORREF color);
void SetTextColor(COLORREF color);
double GetFrameWidth(void);
BOOL ChangeRangeToBL(void);
enum enumGridingStyle
{
markLeft = 0x00000001, //<2F><><EFBFBD><EFBFBD>
markTop = 0x00000002, //<2F>ϱ<EFBFBD>
markRight = 0x00000004, //<2F>ұ<EFBFBD>
markBottom = 0x00000008, //<2F>±<EFBFBD>
markAllSide = (markLeft | markTop | markRight | markBottom), //<2F><><EFBFBD>б<EFBFBD>
markLeftTop = (markLeft | markTop), //<2F><><EFBFBD><EFBFBD>+<2B>ϱ<EFBFBD>
markTopRight = (markTop | markRight), //<2F>ϱ<EFBFBD>+<2B>ұ<EFBFBD>
markRightBottom = (markRight| markBottom), //<2F>ұ<EFBFBD>+<2B>±<EFBFBD>
markBottomLeft = (markLeft | markBottom), //<2F>±<EFBFBD>+<2B><><EFBFBD><EFBFBD>
showLine = 0x00000010, //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
showCrossPoint = 0x00000020, //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
showNull = 0x00000040, //<2F><>ʾΪ<CABE><CEAA>
//showHorLine = 0x00000080, //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
//showVerLine = 0x00010000, //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
textGeography = 0x00000100, //<2F><><EFBFBD><EFBFBD>
textMath = 0x00000200, //<2F><>ѧ
textGeography1 = 0x00000400, //<2F><><EFBFBD><EFBFBD>1
textGeography2 = 0x00000800, //<2F><><EFBFBD><EFBFBD>2(all)
textMathHor = 0x00020000, //<2F><>ѧˮƽ
textAll = (textGeography|textMath|textGeography1|textGeography2|textMathHor),
showInFrame = 0x00001000, //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD>ڱ߿<DAB1>
showText = 0x00002000, //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
showOutFrame = 0x00004000 //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>߿<EFBFBD>
};
private:
int m_id = -1;
public:
int OutFrame_ReadPCG(void *pxp, const short &ver);
virtual int ReadPCG(void *pxp, const short &ver);
virtual int ReadPCG2(void *pxp, const short &ver);
int ReadPCG_Old(void *pxp, const short &ver);
};