IOLink 1.11.0
Loading...
Searching...
No Matches
TilingInfoExtension.h
1#pragma once
2
3#include <memory>
4
5#include <iolink/ArrayX.h>
6#include <iolink/IOLinkAPI.h>
7#include <iolink/RegionX.h>
8#include <iolink/VectorX.h>
9#include <iolink/view/Extension.h>
10
11namespace iolink
12{
13
14class ImageView;
15
27class IOLINK_API TilingInfoExtension : public Extension
28{
29public:
33 static constexpr size_t EXTENSION_ID = 0x1;
34
41 inline static std::shared_ptr<TilingInfoExtension> cast(const std::shared_ptr<Extension>& extension)
42 {
43 return std::dynamic_pointer_cast<TilingInfoExtension>(extension);
44 }
45
49 static constexpr size_t INVALID_TILE_INDEX = 0xFFFFFFFF;
50
54 virtual const VectorXu64& maxTileSize() const = 0;
55
59 virtual size_t tileCount() const = 0;
60
67 virtual RegionXu64 tileRegion(size_t tileIndex) const = 0;
68
75 virtual const ArrayXu64& tilingGrid() const = 0;
76
89 virtual void readTile(size_t tileIndex, void* dst);
90
103 virtual void writeTile(size_t tileIndex, const void* src);
104
105protected:
111 virtual ImageView* image() const = 0;
112};
113
114} // end namespace iolink