25 #include "ImportExport.h" 26 #include "libCZI_exceptions.h" 29 #include <initializer_list> 64 virtual bool TryGetPosition(
DimensionIndex dim,
int* coordinate)
const = 0;
73 return this->TryGetPosition(dim,
nullptr);
87 virtual bool TryGetInterval(
DimensionIndex dim,
int* startIndex,
int* size)
const = 0;
94 return this->TryGetInterval(dim,
nullptr,
nullptr);
109 virtual bool IsContained(
int index)
const = 0;
137 auto i = ((std::underlying_type<libCZI::DimensionIndex>::type)dim) - 1;
146 std::uint32_t validDims;
164 this->Set(d.dimension, d.value);
173 if (other !=
nullptr)
193 this->values[index] = value;
194 this->validDims |= (1 << index);
203 this->validDims &= ~(1 << index);
216 if ((this->validDims & (1 << bitIndex)) != 0)
239 if ((this->validDims & (1 << index)) != 0)
241 if (coordinate !=
nullptr)
243 *coordinate = this->values[index];
257 std::uint32_t validDims;
270 this->Set(d.dimension, d.start, d.size);
281 this->start[index] = start;
282 this->size[index] = size;
283 this->validDims |= (1 << index);
293 if ((this->validDims & (1 << bitIndex)) != 0)
306 this->validDims &= ~(1 << index);
324 if ((this->validDims & (1 << index)) != 0)
326 if (startIndex !=
nullptr)
328 *startIndex = this->start[index];
333 *size = this->size[index];
The C-dimension ("channel").
bool IsValid(DimensionIndex dim)
Definition: libCZI_DimCoordinate.h:92
The B-dimension ("block") - its use is deprecated.
libCZI::DimensionIndex dimension
The dimension.
Definition: libCZI_DimCoordinate.h:115
Interface used to represent an interval (for several dimensions).
Definition: libCZI_DimCoordinate.h:78
CDimCoordinate(const libCZI::IDimCoordinate *other)
Definition: libCZI_DimCoordinate.h:171
void EnumValidDimensions(std::function< bool(libCZI::DimensionIndex dim, int start, int size)> func) const
Definition: libCZI_DimCoordinate.h:288
Base class containing some commonly used methods.
Definition: libCZI_DimCoordinate.h:128
Implementation of a class representing a coordinate (and implementing the IDimCoordinate-interface).
Definition: libCZI_DimCoordinate.h:143
void Set(libCZI::DimensionIndex dimension, int value)
Definition: libCZI_DimCoordinate.h:190
bool IsValid(DimensionIndex dim) const
Definition: libCZI_DimCoordinate.h:71
This enum must be have the value of the lowest (valid) dimension index.
The S-dimension ("scene").
The V-dimension ("view").
void Clear(libCZI::DimensionIndex dimension)
Definition: libCZI_DimCoordinate.h:303
The I-dimension ("illumination").
void EnumValidDimensions(std::function< bool(libCZI::DimensionIndex dim, int value)> func) const
Definition: libCZI_DimCoordinate.h:211
virtual bool TryGetInterval(libCZI::DimensionIndex dim, int *startIndex, int *size) const
Definition: libCZI_DimCoordinate.h:321
Interface used to represent a coordinate (in the space of the dimensions identified by DimensionIndex...
Definition: libCZI_DimCoordinate.h:54
CDimCoordinate()
Default constructor which constructs an empty coordinate (no valid dimensions).
Definition: libCZI_DimCoordinate.h:150
void Set(libCZI::DimensionIndex dimension, int start, int size)
Definition: libCZI_DimCoordinate.h:278
CDimBounds()
Default constructor - the object will contain no valid dimension.
Definition: libCZI_DimCoordinate.h:262
Implementation of a class representing an interval (and implementing the libCZI::IDimBounds-interface...
Definition: libCZI_DimCoordinate.h:254
A structure combining a dimension and an interval (defined by a start value and the size)...
Definition: libCZI_DimCoordinate.h:120
A structure combining a dimension and a value.
Definition: libCZI_DimCoordinate.h:113
This enum must be have the value of the highest (valid) dimension index.
libCZI::DimensionIndex dimension
The dimension.
Definition: libCZI_DimCoordinate.h:122
External interfaces, classes, functions and structs are found in the namespace "libCZI".
Definition: libCZI.h:44
void Clear()
Clears this object to its blank/initial state. All dimensions will be set to invalid.
Definition: libCZI_DimCoordinate.h:310
DimensionIndex
Values that represent dimension indexes.
Definition: libCZI_DimCoordinate.h:34
virtual bool TryGetPosition(DimensionIndex dim, int *coordinate) const =0
Definition: libCZI_DimCoordinate.h:100
static std::underlying_type< libCZI::DimensionIndex >::type GetBitIndexForDimension(libCZI::DimensionIndex dim)
Definition: libCZI_DimCoordinate.h:134
int value
The value (for this dimension).
Definition: libCZI_DimCoordinate.h:116
CDimCoordinate(std::initializer_list< DimensionAndValue > list)
Definition: libCZI_DimCoordinate.h:160
The H-dimension ("phase").
int size
The size.
Definition: libCZI_DimCoordinate.h:124
virtual bool TryGetPosition(libCZI::DimensionIndex dim, int *coordinate) const
Definition: libCZI_DimCoordinate.h:236
int start
The start value.
Definition: libCZI_DimCoordinate.h:123
void Clear(libCZI::DimensionIndex dimension)
Definition: libCZI_DimCoordinate.h:200
CDimBounds(std::initializer_list< DimensionAndStartSize > list)
Definition: libCZI_DimCoordinate.h:266
The T-dimension ("time").
The R-dimension ("rotation").