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.

278 lines
7.9 KiB
C

1 month ago
#pragma once
#include "ItemPrint.h"
#include "ItemView.h"
#include "IView.h"
#include "QTransformTracker.h"
#include "ActionItem.h"
#include "CurveHandleDrawer.h"
#include "ItemTracker.h"
#include <map>
// Hints for UpdateAllViews/OnUpdate
#define HINT_UPDATE_VIEW 0
#define HINT_UPDATE_WINDOW 1
#define HINT_UPDATE_VIEW_ATTACH 2 //<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>󶨸<EFBFBD><F3B6A8B8><EFBFBD>
#define HINT_UPDATE_DRAWOBJ 4
#define HINT_UPDATE_SELECTION 5
#define HINT_DELETE_SELECTION 6
#define HINT_UPDATE_POSITION 7
#define HINT_UPDATE_OLE_ITEMS 8
#define TIMER_MONITOR_MOUSE 10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
#define TIMER_REAL_TIME 11 //ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
namespace NItem
{
class CItem;
class CItemSelect;
class CItemMakeMark;
}
namespace NAction
{
class CActionManager;
}
struct WellGroupBranchStruct
{
int BranchIndex;
POSITION DataPosition;
int DataType; // 0-ƫ<>ƶ<EFBFBD> 1-ˮƽ<CBAE><C6BD> 2-<2D><><EFBFBD>е<EFBFBD> 3-<2D><><EFBFBD>е<EFBFBD> 4-<2D><><EFBFBD><EFBFBD>
};
class CFindReplacement;
class CSigmaDoc
{
public:
CSigmaDoc();
virtual ~CSigmaDoc();
double GetCurrentUnitScale(void);
void EnableMeshPackage(BOOL isEnable, BOOL force = FALSE);
void SetFaultLayer(CString layer);
CString GetFaultLayer();
void SetBorderLayer(CString layer);
CString GetBorderLayer();
void SetFaultLayer3D(CString layer);
CString GetFaultLayer3D();
void SetBorderLayer3D(CString layer);
CString GetBorderLayer3D();
void SetWellLayer3D(CString layer);
CString GetWellLayer3D();
void SetMainMeshLayer3D(CString layer);
CString GetMainMeshLayer3D();
void SetMainMeshId3D(int64_t id);
int64_t GetMainMeshId3D();
void DocInit(void);
CXy* GetDraw(void);
void SetDraw(CXy * pXy);
void DrawHandle(double x, double y, DWORD nDrawMode, CDC* pDC);
CSize GetHandleSize(void);
void EnableRedraw(bool bRedraw);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>ѡ<EFBFBD>е<EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* \param point <EFBFBD><EFBFBD>ǰ<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* \return
*/
std::vector<POSITION> GetSelectedItems(const CPoint2D& point);
/**
*<EFBFBD><EFBFBD>pos==NULLʱ<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ĵ<EFBFBD>һ<EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD>е<EFBFBD>һ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ƻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>
*
* \param point
* \param pos
* \return
*/
POSITION GetNextSelectedItem(const CPoint2D& point, POSITION pos);
POSITION GetSelectedItem(const CPoint2D& point);
CRect8 GetSelectedRect(const CPoint2D& point);
void InvalidateDelete(CPositionList& list);
CSize8 GetSelectSize(void);
CXyDC& GetDC(void);
void SetDC(CXyDC& xydc);
void SetCDC(CDC * pDC);
CDC * GetCDC();
virtual void ClearSelection(void);
void InvalidateSelection(CPositionList& list);
void Invalidate(POSITION pos);
//<undo/redo>
1 month ago
virtual int Undo();
virtual int Redo();
1 month ago
bool CanUndo();
bool CanRedo();
//BOOL CanAddNewAction();
//void RemoveLastAction();
//CActionItem* GetActionItem(void);
void SetActionItem(CActionItem* pAction, bool bDo = true);
//void DeleteActionItem(void);
//</undo/redo>
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ѡ<EFBFBD>е<EFBFBD>Ԫ<EFBFBD><EFBFBD>
*/
NItem::CItemSelect * GetLastSelectItem(void);
virtual NItem::CItemSelect * GetSelectItem(void);
BOOL GetElementRect(POSITION pos, CRect8& range);
NItem::CItem * GetItem(void);
void SetItem(NItem::CItem* pItem);
int GetItemType(void);
void DeleteItem(void);
virtual NItem::CItem * FindItem(int nType);
CSigmaView * GetView(void);
void SetView(CSigmaView * pActiveView);
void SetBackColor(COLORREF color);
CItemView * GetItemView();
BOOL GetDrawRange(CRect8& rect);
void Invalidate();
COLORREF GetPaperColor(void) { return RGB(255, 255, 255); }
//<<3C>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>>
BOOL ReloadFile();
virtual BOOL OpenFile(LPCTSTR lpszFileName, BOOL bMergeFile);
void Serialize(CArchive& ar, double leftMargin = 0, double rightMargin = 0,
double topMargin = 0, double bottomMargin = 0, int paperSizeType = 0, int pdfAHType = 0, int pdfPapertDirectionType = 1);
void Serialize(CArchive& ar, CPositionList& list, CXy* pxy);//fbw
BOOL CreateNew(LPCTSTR fileName);
BOOL SaveFile();
1 month ago
virtual BOOL SaveFile(LPCTSTR lpszPathName);
1 month ago
//pdf<64><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL SaveFile(LPCTSTR lpszPathName, double leftMargin, double rightMargin,
double topMargin, double bottomMargin, int paperSizeType, int pdfAHType, int pdfPapertDirectionType);
void SaveActionPosition();
//</<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>>
virtual void OnDraw(CXyDC& dc);
//QTransformTracker & GetTracker(void);
void DrawItem(CXyDC& dc, int nModeX, int nModeY);
//<ѡ<><D1A1><EFBFBD><EFBFBD>>
void ClearSelectionSet();
//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD> <20><>ʹѡ<CAB9><D1A1>Item<65><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ȼû<C8BB><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijд<C4B3><D0B4><EFBFBD><EFBFBD>
void AddToSelectionSet(POSITION pos);
void ReplaceSelectionSet(CPositionList & positionList);
void GetSelectionSet(CPositionList & positionListOut);
bool IsEmptySelectionSet();
CRect8 GetRectOfSelectedSet();
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ѡ<EFBFBD>еľ<EFBFBD><EFBFBD><EFBFBD>
*
* \return
*/
CRect8 GetRectOfLastSelected();
//</ѡ<><D1A1><EFBFBD><EFBFBD>>
CFindReplacement * GetFindReplacement();
void SetSelection(CPositionList& list);
void InsertParameterPair(CString & key, CString & value);
bool GetParameter(CString & key, CString & valueOut);
CString GetElementTypeString(POSITION pSelect);
void PushActionDC(UINT nTypeID);
void PushDC(void);
void EnablePreview(bool bEnable);
BOOL IsPreview(void);
int GetZoomStackCount(void);
void PopDC(void);
void Modified(BOOL isModified = TRUE);
bool IsModified();
bool IsCapturedScreen();
void SetCapturedScreenStatus(bool bCapture);
void GetDrawingWithAndHeightInScreen(int & widthOut, int & heightOut);
CString GetElementString(POSITION pSelect, CPoint2D* pPoint);
CString GetSelectedElementLayer(CPositionList& list);
int SerializeRead(CXy* pxy, CString strInput);
int SerializeRead(CXy* pxy, CArchive& ar);
BOOL VerifyPassword(CXy* pxy);
CItem* GetOtherItem(void);
void ClearItems(void);
void DeleteOtherItem(void);
BOOL SetDefaultCursor(void);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD>ʱ <20><><EFBFBD><EFBFBD>ѡ<EFBFBD>е<EFBFBD>ͼԪ<CDBC>Ƿ<EFBFBD><C7B7>н<EFBFBD><D0BD><EFBFBD>
void SetStatusOfCrossPoint(int status);
int GetStatusOfCrossPoint();
int GetEditLineStatus();
void SetEditLineStatus(int status);
NAction::CActionManager* GetActionManager();
private:
void SetSelection(POSITION pos);
// <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ָ<EFBFBD><D6B8>õ<EFBFBD>ԭʼͼ<CABC><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SaveRawFile();
1 month ago
bool IsDefaultOrSelectItem() const;
1 month ago
public:
CXy * m_pXy;
CXyDC m_xyDC;
std::unique_ptr<CItemPrint> m_pItemPrint;
bool m_bRedraw; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
//CXyDC m_zoom;
int m_nUnitMode; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õı<C3B5><C4B1><EFBFBD><EFBFBD>ڴ<EFBFBD>ӡ<EFBFBD><D3A1>λ<EFBFBD><CEBB>ʵ<EFBFBD>ʵ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><E4BBBB>ʽ
std::shared_ptr<NItem::CItemMakeMark> m_pItemMakeMark; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
CItemTracker m_itemTracker;
CString m_FileName;
CString m_TempFileName;
COLORREF mBackColor;
vector<WellGroupBranchStruct> m_BranchElements;
void EnableRecoverMode(bool enable);
/**
* <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* \return
*/
bool IsSnapEnabled() const;
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>Ǽ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ñ<EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>
*
* \param enable
*/
void EnableSnap(bool enable);
protected:
int m_nDocTypeID; //<2F>ļ<EFBFBD><C4BC>򿪱<EFBFBD><F2BFAAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//private:
std::unique_ptr<CItemView> m_pItemView;
std::unique_ptr<NItem::CItem> m_pItem;
std::unique_ptr<NItem::CItem> m_pOtherItem;
CSigmaView* m_pView;
//QTransformTracker m_Tracker;
bool m_bSaveAllLayer;
CPositionList m_selectionSet;
std::unique_ptr<NAction::CActionManager> m_pActionMgr;
POSITION MoveSelect;//fbw
/**
* <EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD> Document <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>Ϊ false <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD><EFBFBD>û<EFBFBD>б<EFBFBD><EFBFBD>޸ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD> m_pActionMgr <EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
*/
bool m_bModified = false;;
std::unique_ptr<CFindReplacement> m_pFindReplacement;
std::map<CString, CString> m_parametersMap;
bool m_bCapture; //<2F>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL m_bIsPreview; //<2F><>ʾ<EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡԤ<D3A1><D4A4>״̬<D7B4><CCAC><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ʱ״̬<D7B4><CCAC><EFBFBD><EFBFBD>ջZoomStackPreview<65><77>
CStack ZoomStack; //<2F><>ʾ<EFBFBD><CABE>ջ
CStack ZoomStackPreview; //<2F><>ӡԤ<D3A1><D4A4><EFBFBD><EFBFBD>ջ
std::unique_ptr<CurveHandleDrawer> m_pDrawer;
protected:
BOOL m_bEnableMeshPackage = FALSE;
int m_crossPointStatus;
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>ǻָ<C7BB>ģʽ
bool m_recoverMode = false;
private:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
bool m_snapEnabled = false;
int m_EditLineState = 0; // <20>ߵı༭״̬<D7B4><CCAC>CURVE_STATE_LINE/CURVE_STATE_ARC/CURVE_STATE_ANGLE/CURVE_STATE_SPLINE/CURVE_STATE_MERGE
};