#pragma once #include "mousetool.h" class CObjPline; class CCommandCut; class CMouseToolCut :public CMouseTool { public: CMouseToolCut(void); ~CMouseToolCut(void); virtual void OnLButtonDown(UINT nFlags, CPoint point,CClientDC &dc); private: void CutLineInRect(DbRect &rect); void CalAllIntersection(Dbxy pt1,Dbxy pt2,DbRect &LineRect,vector &LineVec,vector &PointVec); void CutObj(Dbxy LinePt1,Dbxy LinePt2,Sptr pObj,vector &PointVec,DbRect &rect); bool IsSelLine(Dbxy LinePt1,Dbxy LinePt2,Dbxy pt,Dbxy Nextpt); void GetNearFarPoint(Dbxy pt1,Dbxy pt2,Dbxy pt,Dbxy &NearPt,Dbxy &FarPt); DbRect GetLineRect(const Dbxy &LinePt1,const Dbxy &LinePt2); bool GetCutPoint(Dbxy LinePt1,Dbxy LinePt2,vector &PointVec,DbRect &rect,Dbxy &CutPt1,Dbxy &CutPt2); bool CutObjExt(Dbxy LinePt1,Dbxy LinePt2,Sptr pObj,Dbxy CutPt1,Dbxy CutPt2,CObjPline *&pObj1,CObjPline *&pObj2); void CreatCommandCut(Sptr pObj,CObjPline *&pObj1,CObjPline *&pObj2); void AddToCmd(CObjPline *&pObj,CCommandCut *&pCommandCut); void GetFirstLineInRect(Sptr &pObj,DbRect &rect,Dbxy &LinePt1,Dbxy &LinePt2); };