00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef INC_MGUI_TOOLREGP_H
00022 #define INC_MGUI_TOOLREGP_H
00023
00024 #ifndef INC_MGUI_TOOLBASE_H
00025 #include <mgui/toolbase.h>
00026 #endif
00027
00028 namespace MGUI {
00029
00030
00031
00032 class TOOL_REGPOLYGON : public TOOL_BASE {
00033 public:
00034
00035
00036 explicit TOOL_REGPOLYGON (
00037 TOOLCANVAS *canvas
00038 );
00039
00040
00041 virtual ~TOOL_REGPOLYGON ();
00042
00043
00044 double GetAngle (
00045 ) const { return (m_angle); }
00046
00047
00048 const DPOINT2D& GetCenter (
00049 ) const { return (m_center); }
00050
00051
00052 int GetNumSegments (
00053 ) const { return (m_NumSegments); }
00054
00055
00056 double GetRadius (
00057 ) const { return (m_radius); }
00058
00059
00060 void SetAngle (
00061 double newangle
00062 );
00063
00064
00065 void SetAngleVisible (
00066 bool anglevisible = true
00067 );
00068
00069
00070 void SetCenter (
00071 const DPOINT2D& center
00072 );
00073
00074
00075
00076 void SetMarker (
00077 MARKER marker,
00078 UINT16 size = 0
00079 );
00080
00081
00082 void SetNumSegments (
00083 int NumSegments
00084 );
00085
00086
00087 void SetRadius (
00088 double radius
00089 );
00090
00091
00092 void SetRadiusRange (
00093 double minradius,
00094 double maxradius
00095 );
00096
00097 private:
00098 #ifndef GENERATING_DOXYGEN_OUTPUT
00099
00100 enum ZONE {
00101 ZONE_NoFunction = 0,
00102 ZONE_Outside,
00103 ZONE_Inside,
00104 ZONE_Perimeter,
00105 ZONE_SetCenter,
00106 ZONE_Rotate,
00107 };
00108
00109 MARKER m_marker;
00110 UINT16 m_markersize;
00111 double m_minradius;
00112 double m_maxradius;
00113 bool m_anglevisible;
00114
00115 DPOINT2D m_center;
00116 double m_radius;
00117 double m_angle;
00118 int m_NumSegments;
00119
00120 ZONE m_CursorZone;
00121 DPOINT2D m_prevpt;
00122
00123
00124 void AdjustTool (const DPOINT2D&, bool firsttime=false);
00125 void ComputeCursorZone (const DPOINT2D&);
00126 void StartTool (const DPOINT2D&);
00127 void UpdateCursor (const DPOINT2D&) const;
00128
00129
00130 virtual void v_DoDraw (MGD::CONTEXT*);
00131 virtual void v_DoMove (double dx, double dy, ADJUSTFLAGS flags);
00132 virtual int v_GenerateRegion (REGION2D& region) const;
00133 virtual bool v_OnKey (MGUI::POINT point, KEYCODE keycode, KEYSTATE keystate);
00134 virtual void v_OnLButtonDown (MGUI::POINT point, KEYSTATE keystate);
00135 virtual void v_OnMouseMove (MGUI::POINT point, KEYSTATE keystate);
00136 #endif // GENERATING_DOXYGEN_OUTPUT
00137 };
00138
00139
00140 }
00141
00142
00143 #endif // INC_MGUI_TOOLREGP_H