00001
00002
00003
00004
00005
00006
00007
00009
00010 #ifndef AREADRAW_H_
00011 #define AREADRAW_H_
00012
00013 #include <wx/wxfreechartdefs.h>
00014 #include <wx/hashmap.h>
00015
00016 #include <wx/drawobject.h>
00017
00022 class WXDLLIMPEXP_FREECHART AreaDraw : public DrawObject
00023 {
00024 public:
00025 AreaDraw();
00026
00027 virtual ~AreaDraw();
00028
00034 virtual void Draw(wxDC &dc, wxRect rc) = 0;
00035 };
00036
00041 class WXDLLIMPEXP_FREECHART NoAreaDraw : public AreaDraw
00042 {
00043 public:
00044 NoAreaDraw();
00045
00046 virtual ~NoAreaDraw();
00047
00048 virtual void Draw(wxDC &dc, wxRect rc);
00049 };
00050
00055 class WXDLLIMPEXP_FREECHART FillAreaDraw : public AreaDraw
00056 {
00057 public:
00063 FillAreaDraw(wxPen borderPen = (wxPen) *wxBLACK_PEN, wxBrush fillBrush = (wxBrush) *wxWHITE_BRUSH);
00064
00065 FillAreaDraw(wxColour borderColour, wxColour fillColour);
00066
00067 virtual ~FillAreaDraw();
00068
00069 virtual void Draw(wxDC &dc, wxRect rc);
00070
00075 const wxPen &GetBorderPen()
00076 {
00077 return m_borderPen;
00078 }
00079
00084 void SetBorderPen(wxPen borderPen)
00085 {
00086 m_borderPen = borderPen;
00087 FireNeedRedraw();
00088 }
00089
00094 const wxBrush &GetFillBrush()
00095 {
00096 return m_fillBrush;
00097 }
00098
00103 void SetFillBrush(wxBrush fillBrush)
00104 {
00105 m_fillBrush = fillBrush;
00106 FireNeedRedraw();
00107 }
00108
00109 private:
00110 wxBrush m_fillBrush;
00111 wxPen m_borderPen;
00112 };
00113
00118 class WXDLLIMPEXP_FREECHART GradientAreaDraw : public AreaDraw
00119 {
00120 public:
00128 GradientAreaDraw(wxPen borderPen = *wxBLACK_PEN,
00129 wxColour colour1 = wxColour(200, 220, 250),
00130 wxColour colour2 = wxColour(255, 255, 255),
00131 wxDirection dir = wxEAST);
00132
00133 virtual ~GradientAreaDraw();
00134
00135 virtual void Draw(wxDC &dc, wxRect rc);
00136
00141 void SetColour1(wxColour colour1)
00142 {
00143 m_colour1 = colour1;
00144 FireNeedRedraw();
00145 }
00146
00151 void SetColour2(wxColour colour2)
00152 {
00153 m_colour2 = colour2;
00154 FireNeedRedraw();
00155 }
00156
00161 void SetDirection(wxDirection dir)
00162 {
00163 m_dir = dir;
00164 FireNeedRedraw();
00165 }
00166
00167 private:
00168 wxPen m_borderPen;
00169
00170 wxColour m_colour1;
00171 wxColour m_colour2;
00172 wxDirection m_dir;
00173 };
00174
00175 WX_DECLARE_HASH_MAP(int, AreaDraw *, wxIntegerHash, wxIntegerEqual, AreaDrawMap);
00176 class WXDLLIMPEXP_FREECHART AreaDrawMap;
00177
00182 class WXDLLIMPEXP_FREECHART AreaDrawCollection
00183 {
00184 public:
00185 AreaDrawCollection();
00186 virtual ~AreaDrawCollection();
00187
00193 void SetAreaDraw(int serie, AreaDraw *areaDraw);
00194
00200 AreaDraw *GetAreaDraw(int serie);
00201
00202 private:
00203 AreaDrawMap m_areas;
00204 };
00205
00206 #endif