00001
00042 #ifndef INC_MGUI_TOOLSEGMENT_H
00043 #define INC_MGUI_TOOLSEGMENT_H
00044
00045 #ifndef INC_MGUI_TOOLBASE_H
00046 #include <mgui/toolbase.h>
00047 #endif
00048
00049 namespace MGUI {
00050
00051
00053 class TOOL_SEGMENT : public TOOL_LIMITED {
00054 public:
00055
00057 explicit TOOL_SEGMENT (
00058 TOOLCANVAS *canvas
00059 );
00060
00062 virtual ~TOOL_SEGMENT ();
00063
00065 const DPOINT2D& GetEnd (
00066 ) const { return (m_endpoint); }
00067
00069 const DPOINT2D& GetStart (
00070 ) const { return (m_startpoint); }
00071
00073 void SetEnd (
00074 const DPOINT2D& ptEnd
00075 );
00076
00078 void SetMarkers (
00079 MARKER startmarker,
00080 MARKER endmarker,
00081 UINT16 startmarkersize = 0,
00082 UINT16 endmarkersize = 0
00083 );
00084
00086 void SetPoints (
00087 const DPOINT2D& ptStart,
00088 const DPOINT2D& ptEnd
00089 );
00090
00092 void SetStart (
00093 const DPOINT2D& ptStart
00094 );
00095
00096 private:
00097 #ifndef GENERATING_DOXYGEN_OUTPUT
00098
00099 enum ZONE {
00100 ZONE_NoFunction = 0,
00101 ZONE_Outside,
00102 ZONE_Inside,
00103 ZONE_Start,
00104 ZONE_End
00105 };
00106 class MANUAL_SEGMENT;
00107
00108 MARKER m_startmarker;
00109 MARKER m_endmarker;
00110 UINT16 m_startmarkersize;
00111 UINT16 m_endmarkersize;
00112
00113 DPOINT2D m_endpoint;
00114 DPOINT2D m_startpoint;
00115
00116 ZONE m_CursorZone;
00117 DPOINT2D m_prevpt;
00118 UINT8 m_AdjustMode;
00119
00120
00121 void AdjustTool (const DPOINT2D&, bool firsttime=false);
00122 void ComputeCursorZone (const DPOINT2D&);
00123 void StartTool (const DPOINT2D&);
00124 void UpdateCursor () const;
00125
00126
00127 virtual MANUAL_BASE* v_CreateManualBase ();
00128 virtual void v_DoDraw ();
00129 virtual void v_DoMove (double dx, double dy, ADJUSTFLAGS flags);
00130 virtual int v_GenerateRegion (REGION2D& region) const;
00131 virtual bool v_OnPointerButtonDown (MGUI::POINT point, POINTERBUTTON button, KEYSTATE keystate);
00132 virtual void v_OnPointerMove (MGUI::POINT point, POINTERBUTTON button, KEYSTATE keystate);
00133 #endif // GENERATING_DOXYGEN_OUTPUT
00134 };
00135
00136
00137 }
00138
00139
00140 #endif // INC_MGUI_TOOLSEGMENT_H