IOLink IOL_v1.8.0_release
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
39class IOLINK_API ImageType
40{
41public:
46
50 explicit ImageType(ImageDimension dimension);
51
55 explicit ImageType(const ImageDimension* dimensionsList, size_t count);
56
60 explicit ImageType(std::initializer_list<ImageDimension> dimensionsList);
61
65 explicit ImageType(uint64_t val);
66
72 bool has(ImageDimension dimension) const;
73
78 void add(ImageDimension dimension);
79
83 size_t dimensionCount() const;
84
89 void add(ImageType other);
90
95 void remove(ImageDimension dimension);
96
101 void remove(size_t index);
102
107 void remove(ImageType other);
108
121 ImageDimension dimension(size_t index) const;
122
135
142
148 bool operator==(ImageType other) const;
149
155 bool operator!=(ImageType other) const;
156
164 {
165 return ImageType(dimensionFlag(lhs) | dimensionFlag(rhs));
166 }
167
174 friend ImageType operator|(ImageDimension lhs, ImageType rhs) { return rhs | lhs; }
175
179 std::string toString() const;
180
184 uint64_t value() const;
185
186private:
187 static uint64_t dimensionFlag(ImageDimension dimension);
188
189 uint64_t m_value;
190};
191
202class IOLINK_API ImageTypeId
203{
204public:
206 static const ImageType UNKNOWN;
208 static const ImageType IMAGE;
211 static const ImageType VOLUME;
231};
232
233} // end namespace iolink