MeVisLabToolboxReference
|
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