##// END OF EJS Templates
Implements color scale loading when the editor is open
Implements color scale loading when the editor is open

File last commit:

r989:958f5923ee65
r1011:9104d7a70c66
Show More
OptionalAxis.h
66 lines | 2.1 KiB | text/x-c | CLexer
#ifndef SCIQLOP_OPTIONALAXIS_H
#define SCIQLOP_OPTIONALAXIS_H
#include <Data/ArrayDataIterator.h>
#include "CoreGlobal.h"
#include "Unit.h"
#include <memory>
template <int Dim>
class ArrayData;
/**
* @brief The OptionalAxis class defines an optional data axis for a series of data.
*
* An optional data axis is an axis that can be defined or not for a data series. If defined, it
* contains a unit and data (1-dim ArrayData). It is then possible to access the data or the unit.
* In the case of an undefined axis, the axis has no data and no unit. The methods for accessing the
* data or the unit are always callable but will return undefined values.
*
* @sa DataSeries
* @sa ArrayData
*/
class SCIQLOP_CORE_EXPORT OptionalAxis {
public:
/// Ctor for an undefined axis
explicit OptionalAxis();
/// Ctor for a defined axis
/// @param data the axis' data
/// @param unit the axis' unit
/// @throws std::invalid_argument if no data is associated to the axis
explicit OptionalAxis(std::shared_ptr<ArrayData<1> > data, Unit unit);
/// Copy ctor
OptionalAxis(const OptionalAxis &other);
/// Assignment operator
OptionalAxis &operator=(OptionalAxis other);
/// @return the flag that indicates if the axis is defined or not
bool isDefined() const;
///@return the min and max values of the data on the axis, NaN values if there is no data
std::pair<double, double> bounds() const;
/// @return the number of data on the axis, 0 if the axis is not defined
int size() const;
/// @return the unit of the axis, an empty unit if the axis is not defined
Unit unit() const;
bool operator==(const OptionalAxis &other);
bool operator!=(const OptionalAxis &other);
// Iterators on data
ArrayDataIterator begin();
ArrayDataIterator end();
ArrayDataIterator cbegin() const;
ArrayDataIterator cend() const;
private:
bool m_Defined; ///< Axis is defined or not
std::shared_ptr<ArrayData<1> > m_Data; ///< Axis' data
Unit m_Unit; ///< Axis' unit
};
#endif // SCIQLOP_OPTIONALAXIS_H