00001
00002
00003
00004
00005
00006
00007
00009
00010 #ifndef CHART_H_
00011 #define CHART_H_
00012
00013 #include <wx/wxfreechartdefs.h>
00014
00015 #include <wx/refobject.h>
00016 #include <wx/observable.h>
00017 #include <wx/plot.h>
00018
00019 #include <wx/areadraw.h>
00020
00021 #include <wx/axis/axis.h>
00022
00023 class WXDLLIMPEXP_FREECHART Chart;
00024
00028 class WXDLLIMPEXP_FREECHART ChartObserver
00029 {
00030 public:
00031 ChartObserver();
00032
00033 virtual ~ChartObserver();
00034
00040 virtual void ChartChanged(Chart *chart) = 0;
00041
00046 virtual void ChartScrollsChanged(Chart *chart) = 0;
00047 };
00048
00052 class WXDLLIMPEXP_FREECHART Chart : public Observable<ChartObserver>, public PlotObserver, public AxisObserver
00053 {
00054 public:
00060 Chart(Plot *plot, const wxString &title = wxEmptyString);
00061
00062 virtual ~Chart();
00063
00064 Plot *GetPlot()
00065 {
00066 return m_plot;
00067 }
00068
00074 void Draw(wxDC &dc, wxRect &rc);
00075
00080 void SetBackground(AreaDraw *background)
00081 {
00082 wxREPLACE(m_background, background);
00083 FireChartChanged();
00084 }
00085
00092 wxRect CalcPlotRect(wxDC &dc, wxRect rc);
00093
00098 void SetTitle(wxString title)
00099 {
00100 m_title = title;
00101 FireChartChanged();
00102 }
00103
00108 const wxString &GetTitle()
00109 {
00110 return m_title;
00111 }
00112
00117 void SetTitleFont(wxFont font)
00118 {
00119 m_titleFont = font;
00120 FireChartChanged();
00121 }
00122
00123 void SetMargin(wxCoord margin)
00124 {
00125 m_margin = margin;
00126 FireChartChanged();
00127 }
00128
00129 void SetScrolledAxis(Axis *axis);
00130
00131 Axis *GetHorizScrolledAxis();
00132
00133 Axis *GetVertScrolledAxis();
00134
00135
00136
00137
00138
00139 virtual void PlotNeedRedraw(Plot *_plot);
00140
00141
00142
00143
00144 virtual void AxisChanged(Axis *axis);
00145
00146 virtual void BoundsChanged(Axis *axis);
00147
00148 private:
00149 Plot *m_plot;
00150 AreaDraw *m_background;
00151 wxString m_title;
00152 wxFont m_titleFont;
00153
00154 wxCoord m_margin;
00155
00156 Axis *m_horizScrolledAxis;
00157 Axis *m_vertScrolledAxis;
00158
00159 FIRE_WITH_THIS(ChartChanged);
00160 FIRE_WITH_THIS(ChartScrollsChanged);
00161 };
00162
00163 #endif