MeVisLabToolboxReference
MeVisLab/Standard/Sources/ML/MLBase/mlCurveData.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //----------------------------------------------------------------------------------
00006 
00011 //----------------------------------------------------------------------------------
00012 
00013 
00014 #ifndef __mlCurveData_H
00015 #define __mlCurveData_H
00016 
00017 
00018 // ML includes
00019 #include "mlBase.h"
00020 #include "mlTreeNode.h"
00021 
00022 // Local includes
00023 #include "mlBaseInit.h"
00024 #include "mlBaseList.h"
00025 
00026 
00027 ML_START_NAMESPACE
00028 
00029 
00030 // --- Type definitions
00031 
00033 typedef std::vector<double> CurveSeries;
00034 
00035 
00036 
00037 // ------------------------------------------------------------------
00038 // Base object class CurveData
00039 
00051 // ------------------------------------------------------------------
00052 class MLBASEEXPORT CurveData : public Base
00053 {
00054 public:
00055 
00057   enum { ctyLine,              
00058          ctyArea,              
00059          ctyDeltaArea,         
00060          ctyLineDeltaArea,     
00061          ctyErrorBar           
00062        };
00063 
00064 
00065   // --------------------------------------------
00067   // --------------------------------------------
00069 
00071   CurveData ();
00073   CurveData (const CurveData &curveData);
00074 
00076   virtual ~CurveData () {}
00077 
00079   virtual CurveData &operator = (const CurveData &srcCurve);
00080 
00082 
00083   
00084   // --------------------------------------------
00086   // --------------------------------------------
00088 
00090   virtual void clearData ();
00092   virtual void clear ();
00093 
00099   virtual void setX (MLssize_t nPoints = 0, double *data = 0, MLssize_t step = 1);
00100 
00106   virtual void setY (MLssize_t nPoints, double *data, MLssize_t step = 1);
00107 
00113   virtual void setY (MLssize_t iSeries, MLssize_t nPoints, double *data, MLssize_t step = 1);
00114 
00116   virtual void setXValue (double value, MLssize_t iPoint);
00119   virtual void setYValue (double value, MLssize_t iSeries, MLssize_t iPoint);
00121   virtual void setYValue (double value, MLssize_t iPoint);
00122 
00124   virtual void resizeX(MLssize_t nPoints);
00126   virtual void resizeY(MLssize_t nPoints);
00128   virtual void resizeY(MLssize_t iSeries, MLssize_t nPoints);
00129 
00131 
00132   
00133   // --------------------------------------------
00135   // --------------------------------------------
00137 
00139   virtual MLssize_t getPoints ();
00141   virtual MLssize_t getNumSeries ();
00142 
00144   virtual double getXValue (MLssize_t iPoint);
00146   virtual double getYValue (MLssize_t iSeries, MLssize_t iPoint);
00148   virtual double getYValue (MLssize_t iPoint);
00149 
00151 
00152   
00153   // --------------------------------------------
00155   // --------------------------------------------
00157 
00159   virtual void setXRange (double xMin, double xMax);
00161   virtual void setAutoXRange ();
00163   virtual void setYRange (double yMin, double yMax);
00165   virtual void setAutoYRange ();
00166 
00168   virtual void setCurveType (int type);
00170   virtual void setCurveStyle (int style);
00171 
00173   virtual void setTitle (std::string title);
00175   virtual void setUnit (std::string unit);
00177   virtual void setSymbol (std::string symbol);
00178 
00180 
00181   
00182   // --------------------------------------------
00184   // --------------------------------------------
00186 
00188   bool isAutoX () { return _autoX; }
00189 
00191   virtual double getXMin ();
00193   virtual double getXMax ();
00195   virtual double getYMin ();
00197   virtual double getYMax ();
00199   virtual void getXYRange (double *xMin, double *xMax, double *yMin, double *yMax);
00200 
00202   virtual int getCurveType ();
00204   virtual int getCurveStyle ();
00205 
00207   virtual std::string getTitle ();
00209   virtual std::string getUnit ();
00211   virtual std::string getSymbol ();
00212 
00214 
00216   virtual void addStateToTree(TreeNode* /*parent*/) const;
00217 
00219   virtual void readStateFromTree(TreeNode* /*parent*/);
00220 
00221   // set current version number
00222   ML_SET_ADDSTATE_VERSION(1);
00223 
00225   virtual CurveData* deepCopy() const { return new CurveData(*this); };
00226 
00227 protected:
00228 
00230   virtual void setXChanged ();
00232   virtual void setYChanged ();
00233 
00235   virtual void setSeries (CurveSeries &v, MLssize_t nPoints, double *data, MLssize_t step);
00236 
00239   virtual void updateData () {}
00240 
00242   virtual void updateAutoX ();
00244   virtual void updateXRange ();
00246   virtual void updateYRange ();
00247 
00248 #ifdef ML_DEPRECATED
00249 
00250 
00251 
00252 public:
00255   ML_DEPRECATED void setX (MLssize_t nPoints, float *data, MLssize_t step = 1);
00257   ML_DEPRECATED void setY (MLssize_t nPoints, float *data, MLssize_t step = 1);
00259   ML_DEPRECATED void setY (MLssize_t iSeries, MLssize_t nPoints, float *data, MLssize_t step = 1);
00261   ML_DEPRECATED void getXYRange (float *xMin, float *xMax, float *yMin, float *yMax);
00262 
00263 protected:
00265   ML_DEPRECATED void setSeries (CurveSeries &v, MLssize_t nPoints, float *data, MLssize_t step);
00266 
00268 #endif
00269 
00270 protected:
00272   CurveSeries _xData;
00274   std::vector<CurveSeries> _yData;
00275 
00277   bool _autoX;
00278   
00280   bool _autoXRange;
00282   bool _autoYRange;
00283   
00285   bool _validXRange;
00287   bool _validYRange;
00288 
00290   double _xMin, _xMax, 
00291          _yMin, _yMax;
00293   
00295   int _curveType;
00297   int _curveStyle;
00298 
00300   std::string _title;
00302   std::string _unit;
00304   std::string _symbol;
00305 
00306 
00308   ML_CLASS_HEADER(CurveData)
00309 };
00310 
00311 ML_END_NAMESPACE
00312 
00313 #endif
00314 // __mlCurveData_H
00315