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.
TwoLaserHead-PushJig/LaiPuLaser/Layer.h

77 lines
2.4 KiB
C++

#pragma once
#include "SmartPtr.h"
#include "ObjBase.h"
#include "GlobalDefine.h"
#include "ObjContainer.h"
//Æ«ÒÆÇøÓò
class COffsetRect
{
public:
DbRect m_Rect;
Dbxy m_Offset;
};
class CLayer
{
public:
~CLayer(void);
static CLayer &Instance();//µ¥Àýģʽ
void Serialize(CArchive& ar);
void Draw(CDC* pDC);
void XorRedrawObj(CDC* pDC,bool bNeedSel = true);
void AddObject(CObjBase *pMarkObject);
void AddObject(Sptr<CObjBase> p);
void AddObject(CObjContainer &ObjContainer);
void AddTmpObject(Sptr<CObjBase> p);
void DelSelObj();
void DelObj(Sptr<CObjBase> p);
void DelObj(CObjContainer &ObjContainer);
void ClearTmpObj();
bool SelObjectInRect(DbRect rect,bool bNeedAllIn);
void SelAllObj();
void DelAllObj();
void NotSelAllObj();
void RevSelAllObj();
bool HasSelObjectInRect(DbRect rect);
bool HasObjSel();
MOUSE_TOOL JudgeMouseToolType(Dbxy pt);
void OperateObj(SObjOperatePar &par,bool bAll);
DbRect GetSelObjRect();
void OnRotato(double Angle);
void OnMirror(X_OR_Y xy);
void OnMove(double MoveX,double MoveY,bool bAddUndo = true);
void GetLineInRect(DbRect &rect,vector<DbLine> &DataPtLineVec,bool bCatchTemp);
void CloneObj(CObjContainer &ObjContainer,bool bNeedSel);
Sptr<CObjBase> GetFirstObjInRect(DbRect &rect);
Sptr<CObjBase> GetFirstNodeObjInRect(DbRect &rect);
bool HasObjectInRect(DbRect rect);
void GetIntersectPoint(DbLine &line,vector<Dbxy> &PointVec);
bool HasObjIntersectWithLine(DbLine &line);
void OnReverseSelObj();
bool OnJoin();
void OnExplode();
bool HasSelNodeInRect(DbRect rect);
void BindingSelObjToDlg();
CObjContainer &GetObjContainer(){return *m_ObjContainer;};
void FillObj(SFillPar FillPar,bool bNeedSel = true);
CMFCPropertyGridProperty *CreatSpecialGridProperty(CModule *pModule);
void OnSpecialPropertyChanged();
void BindObjContainer(CObjContainer &Container);
void GetAllPointObjPt(vector<Dbxy> &PtVec);
bool IsOffsetRect(DbRect rect);
void UpdateRectObjOffset();
private:
CLayer(void);
void DrawAllObj(CDC* pDC);
private:
static CLayer m_Instance;//µ¥Àýģʽ
CObjContainer *m_ObjContainer;//obj ¶ÔÏóÈÝÆ÷
CObjContainer m_TmpObjContainer;//ÁÙʱobj ¶ÔÏóÈÝÆ÷(Ö÷ÒªÓÃÓÚ´´½¨Ê±²¶×½)
};