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);
84 if (this->IsValid(static_cast<libCZI::DimensionIndex>(i)))
104 virtual bool TryGetInterval(
DimensionIndex dim,
int* startIndex,
int* size)
const = 0;
111 return this->TryGetInterval(dim,
nullptr,
nullptr);
126 virtual bool IsContained(
int index)
const = 0;
154 auto i = ((std::underlying_type<libCZI::DimensionIndex>::type)dim) - 1;
163 std::uint32_t validDims;
181 this->Set(d.dimension, d.value);
190 if (other !=
nullptr)
210 this->values[index] = value;
211 this->validDims |= (1 << index);
220 this->validDims &= ~(1 << index);
239 if ((this->validDims & (1 << bitIndex)) != 0)
254 if ((this->validDims & (1 << bitIndex)) != 0)
284 if ((this->validDims & (1 << index)) != 0)
286 if (coordinate !=
nullptr)
288 *coordinate = this->values[index];
302 std::uint32_t validDims;
314 if (other !=
nullptr)
319 if (other->
TryGetInterval(static_cast<DimensionIndex>(i), &start, &size))
321 this->Set(static_cast<DimensionIndex>(i), start, size);
333 this->Set(d.dimension, d.start, d.size);
344 this->start[index] = start;
345 this->size[index] = size;
346 this->validDims |= (1 << index);
356 if ((this->validDims & (1 << bitIndex)) != 0)
369 this->validDims &= ~(1 << index);
383 return this->validDims == 0;
411 if ((this->validDims & (1 << index)) != 0)
413 if (startIndex !=
nullptr)
415 *startIndex = this->start[index];
420 *size = this->size[index];
The C-dimension ("channel").
bool IsEmpty() const
Definition: libCZI_DimCoordinate.h:381
CDimBounds(const IDimBounds *other)
Definition: libCZI_DimCoordinate.h:312
The B-dimension ("block") - its use is deprecated.
libCZI::DimensionIndex dimension
The dimension.
Definition: libCZI_DimCoordinate.h:132
Interface used to represent an interval (for several dimensions).
Definition: libCZI_DimCoordinate.h:95
CDimCoordinate(const libCZI::IDimCoordinate *other)
Definition: libCZI_DimCoordinate.h:188
void EnumValidDimensions(std::function< bool(libCZI::DimensionIndex dim, int start, int size)> func) const
Definition: libCZI_DimCoordinate.h:351
Base class containing some commonly used methods.
Definition: libCZI_DimCoordinate.h:145
Implementation of a class representing a coordinate (and implementing the IDimCoordinate-interface).
Definition: libCZI_DimCoordinate.h:160
void Set(libCZI::DimensionIndex dimension, int value)
Definition: libCZI_DimCoordinate.h:207
bool IsValid(DimensionIndex dim) const
Definition: libCZI_DimCoordinate.h:71
bool IsValid(DimensionIndex dim) const
Definition: libCZI_DimCoordinate.h:109
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:366
The I-dimension ("illumination").
void Clear()
Clears the validity of all dimensions.
Definition: libCZI_DimCoordinate.h:224
void EnumValidDimensions(std::function< bool(libCZI::DimensionIndex dim, int value)> func) const
Definition: libCZI_DimCoordinate.h:234
virtual bool TryGetInterval(libCZI::DimensionIndex dim, int *startIndex, int *size) const
Definition: libCZI_DimCoordinate.h:408
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:167
void Set(libCZI::DimensionIndex dimension, int start, int size)
Definition: libCZI_DimCoordinate.h:341
int GetNumberOfValidDimensions() const
Definition: libCZI_DimCoordinate.h:79
CDimBounds()
Default constructor - the object will contain no valid dimension.
Definition: libCZI_DimCoordinate.h:307
Implementation of a class representing an interval (and implementing the libCZI::IDimBounds-interface...
Definition: libCZI_DimCoordinate.h:299
A structure combining a dimension and an interval (defined by a start value and the size)...
Definition: libCZI_DimCoordinate.h:137
A structure combining a dimension and a value.
Definition: libCZI_DimCoordinate.h:130
This enum must be have the value of the highest (valid) dimension index.
libCZI::DimensionIndex dimension
The dimension.
Definition: libCZI_DimCoordinate.h:139
int GetValidDimensionsCount() const
Determine the number the valid dimensions contained in this coordinate.
Definition: libCZI_DimCoordinate.h:248
External interfaces, classes, functions and structs are found in the namespace "libCZI".
Definition: libCZI.h:45
void Clear()
Clears this object to its blank/initial state. All dimensions will be set to invalid.
Definition: libCZI_DimCoordinate.h:373
DimensionIndex
Values that represent dimension indexes.
Definition: libCZI_DimCoordinate.h:34
virtual bool TryGetPosition(DimensionIndex dim, int *coordinate) const =0
Definition: libCZI_DimCoordinate.h:117
static std::underlying_type< libCZI::DimensionIndex >::type GetBitIndexForDimension(libCZI::DimensionIndex dim)
Definition: libCZI_DimCoordinate.h:151
int value
The value (for this dimension).
Definition: libCZI_DimCoordinate.h:133
virtual bool TryGetInterval(DimensionIndex dim, int *startIndex, int *size) const =0
CDimCoordinate(std::initializer_list< DimensionAndValue > list)
Definition: libCZI_DimCoordinate.h:177
The H-dimension ("phase").
int size
The size.
Definition: libCZI_DimCoordinate.h:141
virtual bool TryGetPosition(libCZI::DimensionIndex dim, int *coordinate) const
Definition: libCZI_DimCoordinate.h:281
int start
The start value.
Definition: libCZI_DimCoordinate.h:140
void Clear(libCZI::DimensionIndex dimension)
Definition: libCZI_DimCoordinate.h:217
CDimBounds(std::initializer_list< DimensionAndStartSize > list)
Definition: libCZI_DimCoordinate.h:329
The T-dimension ("time").
The R-dimension ("rotation").