MeVisLab Toolbox Reference
mlCurveData.h
Go to the documentation of this file.
1 /*************************************************************************************
2 **
3 ** Copyright 2007, MeVis Medical Solutions AG
4 **
5 ** The user may use this file in accordance with the license agreement provided with
6 ** the Software or, alternatively, in accordance with the terms contained in a
7 ** written agreement between the user and MeVis Medical Solutions AG.
8 **
9 ** For further information use the contact form at https://www.mevislab.de/contact
10 **
11 **************************************************************************************/
12 
13 #ifndef ML_CURVE_DATA_H
14 #define ML_CURVE_DATA_H
15 
16 
20 
21 // ML includes
22 #include "mlBase.h"
23 #include "mlTreeNode.h"
24 
25 
26 #include "mlBaseInit.h"
27 #include "mlBaseList.h"
28 
29 
30 ML_START_NAMESPACE
31 
32 
33 // --- Type definitions
34 
36 typedef std::vector<double> CurveSeries;
37 
38 
39 
40 // ------------------------------------------------------------------
41 // Base object class CurveData
42 
54 // ------------------------------------------------------------------
55 class MLBASEEXPORT CurveData : public Base
56 {
57 public:
58 
60  enum { ctyLine,
64  ctyErrorBar
65  };
66 
67 
68  // --------------------------------------------
70  // --------------------------------------------
72 
76  CurveData (const CurveData &curveData);
77 
79  ~CurveData () override {}
80 
82  CurveData &operator = (const CurveData &srcCurve);
83 
85 
86  friend bool operator==(const CurveData& x, const CurveData& y);
87  friend bool operator!=(const CurveData& x, const CurveData& y);
88 
89 
90  // --------------------------------------------
92  // --------------------------------------------
94 
96  void clearData ();
98  void clear ();
99 
105  void setX (MLssize_t nPoints = 0, const double *data = nullptr, MLssize_t step = 1);
106  void setX (MLssize_t nPoints, const float *data, MLssize_t step = 1);
107 
113  void setY (MLssize_t nPoints, const double *data, MLssize_t step = 1);
114  void setY (MLssize_t nPoints, const float *data, MLssize_t step = 1);
115 
121  void setY (MLssize_t iSeries, MLssize_t nPoints, const double *data, MLssize_t step = 1);
122  void setY (MLssize_t iSeries, MLssize_t nPoints, const float *data, MLssize_t step = 1);
123 
125  void setXValue (double value, MLssize_t iPoint);
128  void setYValue (double value, MLssize_t iSeries, MLssize_t iPoint);
130  void setYValue (double value, MLssize_t iPoint);
131 
133  void resizeX(MLssize_t nPoints);
135  void resizeY(MLssize_t nPoints);
137  void resizeY(MLssize_t iSeries, MLssize_t nPoints);
138 
140 
141 
142  // --------------------------------------------
144  // --------------------------------------------
146 
151 
153  double getXValue (MLssize_t iPoint);
155  double getYValue (MLssize_t iSeries, MLssize_t iPoint);
157  double getYValue (MLssize_t iPoint);
158 
160 
161 
162  // --------------------------------------------
164  // --------------------------------------------
166 
168  void setXRange (double xMin, double xMax);
170  void setAutoXRange ();
172  void setYRange (double yMin, double yMax);
174  void setAutoYRange ();
175 
177  void setCurveType (int type);
179  void setCurveStyle (int style);
180 
182  void setTitle (std::string title);
184  void setUnit (std::string unit);
186  void setSymbol (std::string symbol);
187 
189 
190 
191  // --------------------------------------------
193  // --------------------------------------------
195 
197  bool isAutoX () { return _autoX; }
198 
200  double getXMin ();
202  double getXMax ();
204  double getYMin ();
206  double getYMax ();
208  void getXYRange (double *xMin, double *xMax, double *yMin, double *yMax);
209 
211  int getCurveType ();
214 
216  std::string getTitle ();
218  std::string getUnit ();
220  std::string getSymbol ();
221 
223 
225  void addStateToTree(TreeNode* /*parent*/) const override;
226 
228  void readStateFromTree(TreeNode* /*parent*/) override;
229 
230  // set current version number
232 
234  CurveData* deepCopy() const override { return new CurveData(*this); };
235 
236 protected:
237 
239  void setXChanged ();
241  void setYChanged ();
242 
244  void setSeries (CurveSeries &v, MLssize_t nPoints, const double *data, MLssize_t step);
246  void setSeries (CurveSeries &v, MLssize_t nPoints, const float *data, MLssize_t step);
247 
248 
249 #if ML_DEPRECATED_SINCE(3,5,0)
252  virtual void updateData () {}
253 #else
254 private:
255  virtual void updateData() {}
256 protected:
257 #endif
258 
260  void updateAutoX ();
262  void updateXRange ();
264  void updateYRange ();
265 
266 #if ML_DEPRECATED_SINCE(3,5,0)
269 
270 public:
273  ML_DEPRECATED void getXYRange (float *xMin, float *xMax, float *yMin, float *yMax);
274 
276 #endif
277 
278 protected:
282  std::vector<CurveSeries> _yData;
283 
285  bool _autoX;
286 
291 
296 
298  double _xMin, _xMax,
299  _yMin, _yMax;
301 
306 
308  std::string _title;
310  std::string _unit;
312  std::string _symbol;
313 
314 
317 };
318 
319 ML_END_NAMESPACE
320 
321 #endif
322 // __mlCurveData_H
323 
#define ML_DEPRECATED
Definition: CSOGroup.h:371
Class representing general ML objects that support import/export via strings (setPersistentState() an...
Definition: mlBase.h:62
Base object class representing a single curve object, consisting of zero or one X- and any number of ...
Definition: mlCurveData.h:56
void setYRange(double yMin, double yMax)
Explicitly set Y value range to yMin ... yMax.
double getXMin()
Get minimum X data value.
void clearData()
Clear curve data.
double getYMax()
Get maximum Y data value.
MLssize_t getPoints()
Get number of data points (i.e. minimum length of all X- and Y-series)
CurveSeries _xData
X series data.
Definition: mlCurveData.h:280
bool _autoXRange
Flag for automatic X value ranges.
Definition: mlCurveData.h:288
std::string _title
Curve title.
Definition: mlCurveData.h:308
ML_SET_ADDSTATE_VERSION(1)
void setYValue(double value, MLssize_t iPoint)
Set Y value at index iPoint in first Y series to value (ignored if index is out of range).
std::vector< CurveSeries > _yData
Y series data.
Definition: mlCurveData.h:282
bool _autoYRange
Flag for automatic Y value ranges.
Definition: mlCurveData.h:290
std::string getTitle()
Get curve title.
bool _validXRange
Flag indicating up-to-date X range values.
Definition: mlCurveData.h:293
std::string getUnit()
Get curve unit.
~CurveData() override
Destructor:
Definition: mlCurveData.h:79
int _curveType
Curve type (equal to one of the cty* curve type constants)
Definition: mlCurveData.h:303
void updateXRange()
Update automatically generated X range.
int getCurveType()
Get curve type (equal to one of the cty* curve type constants)
double getYValue(MLssize_t iSeries, MLssize_t iPoint)
Get Y value at index iPoint in iSeries-th Y series, 0 if out of range.
void setCurveType(int type)
Set curve type (use cty* curve type constants)
void setY(MLssize_t nPoints, const double *data, MLssize_t step=1)
Set Y data to a single series of nPoints double values copied from the source array data.
void readStateFromTree(TreeNode *) override
Reads the object state from the children of the given parent node.
void setX(MLssize_t nPoints, const float *data, MLssize_t step=1)
int getCurveStyle()
Get curve style (= index into a style palette used for drawing)
void clear()
Clear curve data and reset curve properties.
void setAutoXRange()
Set X value range to 'automatic', i.e. dependent on X series data.
double getYMin()
Get minimum Y data value.
void setXValue(double value, MLssize_t iPoint)
Set X-series value at index iPoint to value (ignored if index is out of range).
void resizeX(MLssize_t nPoints)
Change length of X-series. New values are initialized to zero.
void setXRange(double xMin, double xMax)
Explicitly set X value range to xMin ... xMax.
void addStateToTree(TreeNode *) const override
Attaches the object state as children of the given parent node.
void setY(MLssize_t iSeries, MLssize_t nPoints, const float *data, MLssize_t step=1)
double getXMax()
Get maximum X data value.
void setX(MLssize_t nPoints=0, const double *data=nullptr, MLssize_t step=1)
Set X-series to nPoints double values copied from the source array data.
double getXValue(MLssize_t iPoint)
Get X-value at index iPoint, return 0 if index is out of range.
void setXChanged()
Invalidate automatic X series properties.
void setY(MLssize_t iSeries, MLssize_t nPoints, const double *data, MLssize_t step=1)
Set the iSeries-th Y-series to nPoints double values copied from the source array data.
bool _validYRange
Flag indicating up-to-date Y range values.
Definition: mlCurveData.h:295
std::string getSymbol()
Get curve symbol.
void setAutoYRange()
Set Y value range to 'automatic', i.e. dependent on Y series data.
@ ctyLineDeltaArea
Line and shaded area between two lines, represented by a triple of Y-series.
Definition: mlCurveData.h:63
@ ctyDeltaArea
Shaded area between two lines, represented by a pair of Y-series.
Definition: mlCurveData.h:62
@ ctyArea
Shaded area under/above single line.
Definition: mlCurveData.h:61
@ ctyLine
Single line, represented by a single Y-series.
Definition: mlCurveData.h:60
CurveData(const CurveData &curveData)
Copy constructor, series data is copied.
int _curveStyle
Curve style (= index into a style palette used for drawing)
Definition: mlCurveData.h:305
void resizeY(MLssize_t iSeries, MLssize_t nPoints)
Change length of iSeries-th Y-series. New values are initialized to zero.
CurveData()
Default constructor.
friend bool operator==(const CurveData &x, const CurveData &y)
void setY(MLssize_t nPoints, const float *data, MLssize_t step=1)
void updateYRange()
Update automatically generated Y range.
void setYValue(double value, MLssize_t iSeries, MLssize_t iPoint)
Set Y value at index iPoint in iSeries-th Y series to value (ignored if indices are out of range).
void updateAutoX()
Update automatically generated X data.
void getXYRange(double *xMin, double *xMax, double *yMin, double *yMax)
Get X and Y value ranges (NULL pointers are allowed)
double getYValue(MLssize_t iPoint)
Get Y value at index iPoint in first Y series, 0 if out of range.
void setSymbol(std::string symbol)
Set curve symbol.
void setUnit(std::string unit)
Set curve unit.
friend bool operator!=(const CurveData &x, const CurveData &y)
bool isAutoX()
Return true if X data is generated automatically (numbered 0, 1, ...)
Definition: mlCurveData.h:197
void setSeries(CurveSeries &v, MLssize_t nPoints, const double *data, MLssize_t step)
Set series data (double)
std::string _symbol
Curve symbol.
Definition: mlCurveData.h:312
void setSeries(CurveSeries &v, MLssize_t nPoints, const float *data, MLssize_t step)
Set series data (float)
void setTitle(std::string title)
Set curve title.
MLssize_t getNumSeries()
Get number of Y-series.
void resizeY(MLssize_t nPoints)
Change length of first Y-series. New values are initialized to zero.
void setYChanged()
Invalidate automatic Y series properties.
std::string _unit
Curve unit.
Definition: mlCurveData.h:310
bool _autoX
Flag for automatically generated X data.
Definition: mlCurveData.h:285
void setCurveStyle(int style)
Set curve style (= index into a style palette used for drawing)
CurveData * deepCopy() const override
Create a deep copy of the CurveDate.
Definition: mlCurveData.h:234
The class TreeNode is the abstract base class for the import/export of ML objects.
Definition: mlTreeNode.h:170
#define MLBASEEXPORT
defined Header file mlBaseInit.h
Definition: mlBaseInit.h:22
#define ML_CLASS_HEADER(className)
Same like ML_CLASS_HEADER_EXPORTED with a non existing export symbol.
SSIZE_T MLssize_t
The signed ML size type which is a signed 32 bit size_t on 32 bit platforms and 64 bit one on 64 bit ...
Definition: mlTypeDefs.h:654
std::vector< double > CurveSeries
Type definition of a standard vector of single series of X- or Y-values.
Definition: mlCurveData.h:36