00001
00002
00003
00004
00005
00006
00007
00009
00010 #ifndef XYDATASET_H_
00011 #define XYDATASET_H_
00012
00013 #include <wx/dataset.h>
00014 #include <wx/axis/axis.h>
00015
00016 class XYRenderer;
00017
00021 class WXDLLIMPEXP_FREECHART XYDataset : public Dataset
00022 {
00023 DECLARE_CLASS(XYDataset)
00024 public:
00025 XYDataset();
00026 virtual ~XYDataset();
00027
00028 XYRenderer *GetRenderer()
00029 {
00030 return (XYRenderer *) m_renderer;
00031 }
00032
00038 virtual double GetX(size_t index, size_t serie) = 0;
00039
00045 virtual double GetY(size_t index, size_t serie) = 0;
00046
00051 virtual double GetMaxY();
00052
00057 virtual double GetMinY();
00058
00063 virtual double GetMaxX();
00064
00069 virtual double GetMinX();
00070
00071
00072 virtual double GetMinValue(bool verticalAxis);
00073
00074 virtual double GetMaxValue(bool verticalAxis);
00075
00076
00077 protected:
00078 virtual bool AcceptRenderer(Renderer *r);
00079
00080 private:
00081 };
00082
00083
00084
00085
00086 inline static void ClipHoriz(Axis *axis, double &x, double &y, double x1, double y1)
00087 {
00088 if (!axis->IsVisible(x)) {
00089 double p = axis->BoundValue(x);
00090 y = (y1 - y) * (p - x) / (x1 - x) + y;
00091 x = p;
00092 }
00093 }
00094
00095 inline static void ClipVert(Axis *axis, double &x, double &y, double x1, double y1)
00096 {
00097 if (!axis->IsVisible(y)) {
00098 double p = axis->BoundValue(y);
00099 x = (p - y1) * (x1 - x) / (y1 - y) + x;
00100 y = p;
00101 }
00102 }
00103
00104 #endif