|
|
|
|
|
|
|
|
|
|
|
#ifndef CWellBaseObj_H
|
|
|
|
|
|
#define CWellBaseObj_H
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "WellCommonDef.h"
|
|
|
|
|
|
#include "WellCommonFunction.h"
|
|
|
|
|
|
#include "NGraphExtend.h"
|
|
|
|
|
|
#include "DrawOperator/KXmlParse.h"
|
|
|
|
|
|
#include "Data/sqlvarint.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define CLONE_WELLOBJECT(objName) \
|
|
|
|
|
|
virtual CWellBaseObj* CloneWellObject(void) {objName* pnew = new objName; *pnew = *this; return pnew;}
|
|
|
|
|
|
|
|
|
|
|
|
//#include "Data/DataLinkOb.h"
|
|
|
|
|
|
//For any coordinates (x, y) in world space, the transformed coordinates in page
|
|
|
|
|
|
//space (x', y') can be determined by the following algorithm:
|
|
|
|
|
|
//x' = x * eM11 + y * eM21 + eDx,
|
|
|
|
|
|
//y' = x * eM12 + y * eM22 + eDy,
|
|
|
|
|
|
//where the transformation matrix is represented by the following:
|
|
|
|
|
|
// | eM11 eM12 | | 1 0 | | m[0] m[1] |
|
|
|
|
|
|
//Matrix = | eM21 eM22 | = | 0 1 | = | m[2] m[3] |
|
|
|
|
|
|
// | eDx eDy | | 0 0 | | m[4] m[5] |
|
|
|
|
|
|
//XFORM struct
|
|
|
|
|
|
//matrix<69>е<EFBFBD>˳<EFBFBD><CBB3>Ϊm11=scaleX, m12=, m21, m22=scaleY, m31=eDx, m32=eDy
|
|
|
|
|
|
|
|
|
|
|
|
static DWORD64 s_Number = 0;
|
|
|
|
|
|
|
|
|
|
|
|
class CWellPole;
|
|
|
|
|
|
class CBaseExtend;
|
|
|
|
|
|
class AFX_EXT_CLASS CWellBaseObj : public CBaseExtend
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void Init();
|
|
|
|
|
|
public:
|
|
|
|
|
|
CWellBaseObj();
|
|
|
|
|
|
CWellBaseObj(const CRect8& rect);
|
|
|
|
|
|
virtual ~CWellBaseObj();
|
|
|
|
|
|
|
|
|
|
|
|
virtual CBaseExtend* CreateClone() { return NULL; }; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>̳ж<CCB3><D0B6><EFBFBD><EFBFBD><EFBFBD>CXy<58><79><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>Ҫʵ<D2AA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>COne<6E><65>value <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void* CloneElement(void) { return NULL; };
|
|
|
|
|
|
virtual void operator=(CWellBaseObj& object);
|
|
|
|
|
|
CLONE_WELLOBJECT(CWellBaseObj)
|
|
|
|
|
|
public:
|
|
|
|
|
|
GDFLOGPENEXT m_pen; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
GDFLOGBRUSH m_brush; //ˢ<><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
GDFLOGFONTEXT m_font; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CPoint2D m_delta; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
protected:
|
|
|
|
|
|
CWellBaseObj* m_pParent;
|
|
|
|
|
|
CRect8 m_position;
|
|
|
|
|
|
int m_type;
|
|
|
|
|
|
DWORD m_nFlags; //ͼԪ<CDBC><D4AA><EFBFBD><EFBFBD>״̬
|
|
|
|
|
|
DWORD m_nId;
|
|
|
|
|
|
CXy* m_pParentXY;
|
|
|
|
|
|
int m_nViewState;
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|
|
|
|
|
virtual BOOL IsCanEdit(void);
|
|
|
|
|
|
virtual BOOL IsView(void);
|
|
|
|
|
|
CWellBaseObj* GetParent() { return m_pParent; };
|
|
|
|
|
|
void SetParent(CWellBaseObj* pParent) { m_pParent = pParent; };
|
|
|
|
|
|
|
|
|
|
|
|
virtual CRect8 GetRect(void);
|
|
|
|
|
|
virtual void GetRange(CRect8& range);
|
|
|
|
|
|
virtual BOOL IsInRange(CRect8& range);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void SetRange(CRect8& range);
|
|
|
|
|
|
|
|
|
|
|
|
virtual int GetType(void) { return m_type; };
|
|
|
|
|
|
virtual void SetType(int type) { m_type = type; }
|
|
|
|
|
|
|
|
|
|
|
|
virtual CWellPole* GetWell();
|
|
|
|
|
|
|
|
|
|
|
|
virtual CXy* GetParentXY() { return m_pParentXY; }
|
|
|
|
|
|
virtual void SetParentXY(CXy* pxy) { m_pParentXY = pxy; }
|
|
|
|
|
|
|
|
|
|
|
|
static CWellBaseObj* CreateObj(int eType);
|
|
|
|
|
|
|
|
|
|
|
|
static void cTransform(CXyDC* pDC, float* matrix, double& x, double& y, BOOL bUndo);
|
|
|
|
|
|
static void cTransformPoint(float* matrix, double& x0, double& y0, BOOL bUndo);
|
|
|
|
|
|
static void cTransformPoint(float* matrix, CPoint2D& pt, BOOL bUndo);
|
|
|
|
|
|
static void cTransformCurve(CXyDC* pDC, CCurveEx& curve, float* matrix, BOOL bUndo);
|
|
|
|
|
|
static void cTransform(CXyDC* pDC, CRect8& rect, float* matrix, BOOL bUndo);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// ͼԪ<CDBC>ʡ<EFBFBD>ˢ<EFBFBD>ӵ<EFBFBD> Flags
|
|
|
|
|
|
enum BaseFlags
|
|
|
|
|
|
{
|
|
|
|
|
|
FlagNULL = 0x0000, //<2F>հ<EFBFBD>
|
|
|
|
|
|
FlagPen = 0x0001, //ʹ<>ñ<EFBFBD>
|
|
|
|
|
|
FlagBrush = 0x0002, //ʹ<><CAB9>ˢ<EFBFBD><CBA2>
|
|
|
|
|
|
FlagCompound = 0x0004, //<2F><><EFBFBD><EFBFBD>ͼԪ
|
|
|
|
|
|
FlagMove = 0x0008, //<2F>ƶ<EFBFBD>
|
|
|
|
|
|
FlagDepth = 0x0100, //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
|
|
|
|
|
|
FlagActionTemplate = 0x1000,// дģ<D0B4><C4A3>
|
|
|
|
|
|
FlagActionNoSaveData = 0x2000,// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD>
|
|
|
|
|
|
FlagNoSaveCallouts = 0x4000,// <20><><EFBFBD><EFBFBD><EFBFBD>澮λ<E6BEAE><CEBB><EFBFBD><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
virtual LPVOID GetLogFont();
|
|
|
|
|
|
virtual void SetLogPen(LPVOID plogPen); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void SetlogBrush(LPVOID plogBrush); //ˢ<><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void SetLogFont(LPVOID pLogFont);
|
|
|
|
|
|
//virtual void SetTextFlags( CTextFlags& textFlags);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 & GetPos() { return m_position; };
|
|
|
|
|
|
virtual void SetDelta(CPoint2D delta) { m_delta = delta; }
|
|
|
|
|
|
virtual CPoint2D GetDelta() { return m_delta; };
|
|
|
|
|
|
//<2F><>ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// virtual CWellBaseObj* SelectWho() { return this; };
|
|
|
|
|
|
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual BOOL DeleteSelection();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>ֵ
|
|
|
|
|
|
virtual void SetFlags(DWORD flags);
|
|
|
|
|
|
virtual void SetFlagPen(BOOL bFlag);
|
|
|
|
|
|
virtual void SetFlagBrush(BOOL bFlag);
|
|
|
|
|
|
virtual void SetFlagCompound(BOOL bFlag);
|
|
|
|
|
|
virtual void SetFlagMove(BOOL bFlag);
|
|
|
|
|
|
virtual void SetFlagDepth(BOOL bFlag);
|
|
|
|
|
|
|
|
|
|
|
|
virtual DWORD GetFlags();
|
|
|
|
|
|
virtual BOOL IsFlagPen();
|
|
|
|
|
|
virtual BOOL IsFlagBrush();
|
|
|
|
|
|
virtual BOOL IsFlagCompound();
|
|
|
|
|
|
virtual BOOL IsFlagMove();
|
|
|
|
|
|
virtual BOOL IsFlagDepth();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>
|
|
|
|
|
|
virtual BOOL IsActionTemplate();
|
|
|
|
|
|
virtual void SetActionTemplate(BOOL b);
|
|
|
|
|
|
virtual BOOL IsActionNoSaveData();
|
|
|
|
|
|
virtual void SetActionNoSaveData(BOOL b);
|
|
|
|
|
|
virtual BOOL IsNoSaveCallouts();
|
|
|
|
|
|
virtual void SetNoSaveCallouts(BOOL b);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void SetTextFont(GDFLOGFONTEXT logfont);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void Draw(CXyDC *pDC);
|
|
|
|
|
|
virtual void Draw(CXyDC &pDC);
|
|
|
|
|
|
virtual void DrawHandle(CXyDC* pDC);
|
|
|
|
|
|
//<2F><><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD> nHor = 0<><30><EFBFBD>ң<EFBFBD>,1<><31><EFBFBD>У<EFBFBD>,2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, nVer = 0<><30><EFBFBD>£<EFBFBD>,1<><31><EFBFBD>У<EFBFBD><D0A3><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>)
|
|
|
|
|
|
virtual void DrawTextContent(CXyDC* pDC, CString text, CRect8 rect, GDFLOGFONTEXT *plogFont, int nHor = 1, int nVer = 1, double angle = 0);
|
|
|
|
|
|
//<2F><><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
|
|
|
|
|
|
virtual void AddTitleName(CString text, CRect8 rect, GDFLOGFONT *plogFont, int nAlign = 1);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual int GetHandleCount();
|
|
|
|
|
|
virtual CPoint2D GetHandle(int nHandle);
|
|
|
|
|
|
virtual CRect8 GetHandleRect(int nHandleID, double dHandleSize);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void MoveTo(CRect8& position);
|
|
|
|
|
|
virtual void MoveHandleTo(int nHandle, CPoint2D point);
|
|
|
|
|
|
virtual CWellBaseObj* ObjectAt(const CRect8& rect, double dHandleSize, BOOL bNesting = FALSE);//objectAt<41><74><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD>ѡ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5>Ӷ<EFBFBD><D3B6><EFBFBD>.
|
|
|
|
|
|
|
|
|
|
|
|
virtual int HitTest(CPoint2D point, double dHandleSize, BOOL bSelected);
|
|
|
|
|
|
virtual BOOL Intersects(const CRect8& rect, double dHandleSize);
|
|
|
|
|
|
virtual void Serialize(CArchive& ar, const short &ver);
|
|
|
|
|
|
virtual void SerializeHead(CArchive& ar, const short& ver);
|
|
|
|
|
|
virtual void SerializeTail(CArchive& ar, const short& ver);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>η<EFBFBD>Χ
|
|
|
|
|
|
virtual void ReSetPosition(CRect8 rect);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>
|
|
|
|
|
|
virtual void NormalText();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual CRect8 GetPosition(void);
|
|
|
|
|
|
virtual CRect8 GetSelectedRange(void);
|
|
|
|
|
|
virtual void Transform(CXyDC* pDC, float* matrix, BOOL bUndo = FALSE);//matrix length is 6
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void TransferData(CWellBaseObj* pObj) {}
|
|
|
|
|
|
|
|
|
|
|
|
// ʵ<>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|
|
|
|
|
double WidthToScreenCX(double dWidth/* ʵ<>ʿ<EFBFBD><CABF><EFBFBD>cm */);
|
|
|
|
|
|
double ScreenCXToWidth(double dCX);
|
|
|
|
|
|
double HeightToScreenCY(double dHeight/* ʵ<>ʸ߶<CAB8>mm */);
|
|
|
|
|
|
double ScreenCYToHeight(double dCY);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ͼԪ<CDBC><D4AA><EFBFBD><EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//static CObjectBase* CreateObj(EElementType eType);
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL IsTrackChildTopEnd() { return FALSE; }; //<2F>Ƿ<EFBFBD><C7B7>ǵ<EFBFBD><C7B5>ڵ<EFBFBD><DAB5>Ӷ<EFBFBD><D3B6><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
virtual int GetId();
|
|
|
|
|
|
virtual void SetId(int id);
|
|
|
|
|
|
|
|
|
|
|
|
virtual int GetViewState() { return m_nViewState; };
|
|
|
|
|
|
virtual void SetViewState(int state) { m_nViewState = state; }
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL IsDerivedTextBase(){ return FALSE; }
|
|
|
|
|
|
|
|
|
|
|
|
virtual void RecieveTopBottomChange(CWellBaseObj* pChangeObj, double top, double bottom) {};
|
|
|
|
|
|
virtual void RecieveDataChange(CWellBaseObj* pChangeObj) {};
|
|
|
|
|
|
//ROWLINK m_rowLink;
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void DrawInsertDraw(CXyDC* pDC, CInsertDraw& insert, CRect8 rect);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
typedef std::list<CWellBaseObj*> WELLOBJLIST;
|
|
|
|
|
|
typedef std::vector<CWellBaseObj*> WELLOBJVECTOR;
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|