00001
00002 #ifndef curve_h
00003 #define curve_h
00004
00005
00006
00007 #include <xy.h>
00008
00009 #include "sxy_vector.h"
00010 #include "sxy_axis.h"
00011 #include "sxy_series_null.h"
00012
00013
00014
00015
00016
00017 class SXYCurve {
00018
00019 SXYAxis* x_axis;
00020 SXYAxis* y_axis;
00021
00022 long int color;
00023 char* title;
00024
00025 SXYVector<XYCartesianMask*> *masks_vector;
00026 SXYVector<SXYSeries*> *series_vector;
00027
00028 SXYNullSeries* null_series;
00029
00030 XYRasterText* xy_legend_text;
00031 XYCartesianMask* xy_legend_mask;
00032
00033 void insertMask(XYCartesianMask* mask);
00034 void insertSeries(SXYSeries* series);
00035 void removeMask(XYCartesianMask* mask);
00036 void removeSeries(SXYSeries* series);
00037
00038 void detachMask(XYCartesianMask* mask);
00039 void attachMask(XYCartesianMask* mask);
00040 void checkAxesConsistency(void);
00041
00042 void createLegend(void);
00043 void createSeries(void);
00044 void createMasks(void);
00045 void destroyLegend(void);
00046 void destroySeries(void);
00047 void destroyMasks(void);
00048
00049
00050 public:
00051
00052 virtual void setColorCallback(void);
00053 virtual void setTitleCallback(void);
00054
00055 virtual void destroySeriesCallback(unsigned int s, SXYSeries* srs) = 0;
00056 virtual void destroyMaskCallback(unsigned int m, XYCartesianMask* msk) = 0;
00057 virtual SXYSeries* createSeriesCallback(unsigned int s) = 0;
00058 virtual XYCartesianMask* createMaskCallback(unsigned int m) = 0;
00059 virtual unsigned int getNumMasksCallback(void) = 0;
00060 virtual unsigned int getNumSeriesCallback(void) = 0;
00061 virtual unsigned int mapMaskToSeriesCallback(unsigned int m) = 0;
00062
00063 virtual unsigned int tryPointEditionCallback(
00064 unsigned int mask, unsigned int series, unsigned int n);
00065
00066 virtual void movingPointCallback(
00067 unsigned int mask, unsigned int series, unsigned int n,
00068 double x, double y);
00069
00070 virtual unsigned int editedPointCallback(
00071 unsigned int mask, unsigned int series, unsigned int n,
00072 double x, double y);
00073
00074 SXYChart* getChart();
00075 SXYAxis* getHorizontalAxis(void);
00076 SXYAxis* getVerticalAxis(void);
00077 void setAxis(SXYAxis* x, SXYAxis* y);
00078 void unsetAxis(void);
00079
00080 void remountCurve(void);
00081
00082 unsigned int getNumMasks(void);
00083 unsigned int getNumSeries(void);
00084
00085 SXYSeries* getSeries(unsigned int s);
00086 XYCartesianMask* getMask(unsigned int m);
00087
00088 void setTitle(const char* txt);
00089 char* getTitle(void);
00090
00091 long int getColor(void);
00092 void setColor(long int col);
00093
00094 void setMaskVisibility(unsigned int m, int flag);
00095 int getMaskVisibility(unsigned int m);
00096
00097 void getLimits(double& xmin, double& xmax, double& ymin, double& ymax);
00098 unsigned int getPointFromSeries(unsigned int s, unsigned int n,
00099 double& x, double& y);
00100
00101 SXYCurve(void);
00102 virtual ~SXYCurve();
00103 };
00104
00105
00106 #endif
00107