IOLink 1.11.0
Loading...
Searching...
No Matches
ImageType.h
1#pragma once
2
3#include <cstdint>
4#include <initializer_list>
5#include <string>
6
7#include <iolink/IOLinkAPI.h>
8
9namespace iolink
10{
11
16{
18 COLUMN = 0,
20 ROW = 1,
22 SLICE = 2,
24 CHANNEL = 3,
26 SEQUENCE = 4,
27};
28
29// create an alias for ImageDimension
30using ImageAxis = ImageDimension;
31
42class IOLINK_API ImageType
43{
44public:
49
53 explicit ImageType(ImageDimension dimension);
54
58 explicit ImageType(const ImageDimension* dimensionsList, size_t count);
59
63 explicit ImageType(std::initializer_list<ImageDimension> dimensionsList);
64
68 explicit ImageType(uint64_t val);
69
75 bool has(ImageDimension dimension) const;
76
81 void add(ImageDimension dimension);
82
86 size_t dimensionCount() const;
87
92 void add(ImageType other);
93
98 void remove(ImageDimension dimension);
99
104 void remove(size_t index);
105
110 void remove(ImageType other);
111
124 ImageDimension dimension(size_t index) const;
125
138
145
151 bool operator==(ImageType other) const;
152
158 bool operator!=(ImageType other) const;
159
163 std::string toString() const;
164
168 uint64_t value() const;
169
170private:
171 static uint64_t dimensionFlag(ImageDimension dimension);
172
173 uint64_t m_value;
174};
175
182inline ImageType
184{
185 return ImageType(ImageType(lhs) | rhs);
186}
187
188// create an alias for ImageType
189using AxesInterpretation = ImageType;
190
197inline ImageType
199{
200 return rhs | lhs;
201}
202
213class IOLINK_API ImageTypeId
214{
215public:
217 static const ImageType UNKNOWN;
219 static const ImageType IMAGE;
222 static const ImageType VOLUME;
242};
243
244// create an alias for ImageTypeId
246
247} // end namespace iolink