5#include "slideio/drivers/vsi/vsi_api_def.hpp"
8#include "slideio/core/tools/endian.hpp"
15 struct ImageFileHeader
19 uint32_t offsetFirstIFD;
22 inline void fromLittleEndianToNative(ImageFileHeader& header)
24 if (Endian::isLittleEndian())
26 header.i42 = Endian::fromLittleEndianToNative(header.i42);
27 header.offsetFirstIFD = Endian::fromLittleEndianToNative(header.offsetFirstIFD);
30 struct ImageFileDirectory
34 inline void fromLittleEndianToNative(ImageFileDirectory& header)
36 header.entryCount = Endian::fromLittleEndianToNative(header.entryCount);
43 uint32_t numberOfValues;
46 inline void fromLittleEndianToNative(FieldEntry& header)
48 header.tag = Endian::fromLittleEndianToNative(header.tag);
49 header.type = Endian::fromLittleEndianToNative(header.type);
50 header.numberOfValues = Endian::fromLittleEndianToNative(header.numberOfValues);
51 header.offset = Endian::fromLittleEndianToNative(header.offset);
58 uint32_t volumeVersion;
59 int64_t offsetFirstDataField;
63 inline void fromLittleEndianToNative(VolumeHeader& header) {
64 if (Endian::isLittleEndian())
66 header.headerSize = Endian::fromLittleEndianToNative(header.headerSize);
67 header.magicNumber = Endian::fromLittleEndianToNative(header.magicNumber);
68 header.volumeVersion = Endian::fromLittleEndianToNative(header.volumeVersion);
69 header.offsetFirstDataField = Endian::fromLittleEndianToNative(header.offsetFirstDataField);
70 header.flags = Endian::fromLittleEndianToNative(header.flags);
71 header.unused = Endian::fromLittleEndianToNative(header.unused);
73 struct VolumeDataField
77 uint32_t offsetNextField;
80 inline void fromLittleEndianToNative(VolumeDataField& header)
82 header.type = Endian::fromLittleEndianToNative(header.type);
83 header.tag = Endian::fromLittleEndianToNative(header.tag);
84 header.offsetNextField = Endian::fromLittleEndianToNative(header.offsetNextField);
85 header.dataSize = Endian::fromLittleEndianToNative(header.dataSize);
92 uint32_t offsetNextField;
95 inline void fromLittleEndianToNative(DataField& header)
97 header.type = Endian::fromLittleEndianToNative(header.type);
98 header.tag = Endian::fromLittleEndianToNative(header.tag);
99 header.offsetNextField = Endian::fromLittleEndianToNative(header.offsetNextField);
100 header.dataSize = Endian::fromLittleEndianToNative(header.dataSize);
110 inline void fromLittleEndianToNative(TagHeader& header)
112 header.fieldType = Endian::fromLittleEndianToNative(header.fieldType);
113 header.tag = Endian::fromLittleEndianToNative(header.tag);
114 header.nextField = Endian::fromLittleEndianToNative(header.nextField);
115 header.dataSize = Endian::fromLittleEndianToNative(header.dataSize);
118 struct EtsVolumeHeader {
121 uint32_t versionNumber;
122 uint32_t numDimensions;
123 uint64_t additionalHeaderPos;
124 uint32_t additionalHeaderSize;
126 uint64_t usedChunksPos;
127 uint32_t numUsedChunks;
129 uint64_t freeChunksPos;
130 uint32_t numFreeChunks;
133 inline void fromLittleEndianToNative(EtsVolumeHeader& header)
135 if (Endian::isLittleEndian())
137 header.headerSize = Endian::fromLittleEndianToNative(header.headerSize);
138 header.versionNumber = Endian::fromLittleEndianToNative(header.versionNumber);
139 header.numDimensions = Endian::fromLittleEndianToNative(header.numDimensions);
140 header.additionalHeaderPos = Endian::fromLittleEndianToNative(header.additionalHeaderPos);
141 header.additionalHeaderSize = Endian::fromLittleEndianToNative(header.additionalHeaderSize);
142 header.usedChunksPos = Endian::fromLittleEndianToNative(header.usedChunksPos);
143 header.numUsedChunks = Endian::fromLittleEndianToNative(header.numUsedChunks);
144 header.freeChunksPos = Endian::fromLittleEndianToNative(header.freeChunksPos);
145 header.numFreeChunks = Endian::fromLittleEndianToNative(header.numFreeChunks);
148 struct ETSAdditionalHeader
152 uint32_t componentType;
153 uint32_t componentCount;
160 uint32_t pixInfoHints[17];
161 uint32_t background[10];
162 uint32_t componentOrder;
167 inline void fromLittleEndianToNative(ETSAdditionalHeader& header)
169 if (Endian::isLittleEndian())
171 header.version = Endian::fromLittleEndianToNative(header.version);
172 header.componentType = Endian::fromLittleEndianToNative(header.componentType);
173 header.componentCount = Endian::fromLittleEndianToNative(header.componentCount);
174 header.colorSpace = Endian::fromLittleEndianToNative(header.colorSpace);
175 header.format = Endian::fromLittleEndianToNative(header.format);
176 header.quality = Endian::fromLittleEndianToNative(header.quality);
177 header.sizeX = Endian::fromLittleEndianToNative(header.sizeX);
178 header.sizeY = Endian::fromLittleEndianToNative(header.sizeY);
179 header.sizeZ = Endian::fromLittleEndianToNative(header.sizeZ);
180 for (
int i = 0; i < 17; ++i)
182 header.pixInfoHints[i] = Endian::fromLittleEndianToNative(header.pixInfoHints[i]);
184 for (
int i = 0; i < 10; ++i)
186 header.background[i] = Endian::fromLittleEndianToNative(header.background[i]);
188 header.componentOrder = Endian::fromLittleEndianToNative(header.componentOrder);
189 header.usePyramid = Endian::fromLittleEndianToNative(header.usePyramid);
197 inline void fromLittleEndianToNative(ETSBlock& header)
199 if (Endian::isLittleEndian())
201 header.filePos = Endian::fromLittleEndianToNative(header.filePos);
202 header.size = Endian::fromLittleEndianToNative(header.size);
206 constexpr uint32_t EXTENDED_FIELD_TYPE_MASK = 0x1000000;
207 constexpr uint32_t VOLUME_DATA_BLOCK_TYPE_MASK = 0x10000000;
208 constexpr uint32_t VOLUME_TAG_COUNT_MASK = 0xFFFFFFF;
210 enum class ExtendedType
213 NEW_VOLUME_HEADER = 0,
214 PROPERTY_SET_VOLUME = 1,
215 NEW_MDIM_VOLUME_HEADER = 2,
244 VECTOR_DOUBLE_2 = 260,
245 VECTOR_DOUBLE_3 = 261,
246 VECTOR_DOUBLE_4 = 262,
248 MATRIX_DOUBLE_2_2 = 264,
249 MATRIX_DOUBLE_3_3 = 265,
250 MATRIX_DOUBLE_4_4 = 266,
258 UNICODE_TCHAR = 8192,
263 ARRAY_DOUBLE_2 = 279,
264 ARRAY_DOUBLE_3 = 280,
268 PIXEL_INFO_TYPE = 8470,
270 enum class ColorSpace
294 EFI_SHARPNESS_MAP = 8,
296 EFI_TEXTURE_MAP = 32,
303 std::string SLIDEIO_VSI_EXPORTS getStackTypeName(StackType type);
307 constexpr int LAMBDA = 3;
309 constexpr int UNKNOWN = 5;
310 constexpr int PHASE = 9;
Definition: exceptions.hpp:15
Compression
raster data compression enum
Definition: slideio_enums.hpp:12