libCZI
Reading and Writing CZI documents made easy
Loading...
Searching...
No Matches
libCZI_Compositor.h
1// SPDX-FileCopyrightText: 2017-2022 Carl Zeiss Microscopy GmbH
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#pragma once
6
7#include "ImportExport.h"
8#include <cstring>
9#include <limits>
10#include <vector>
11#include <memory>
12#include "libCZI_Pixels.h"
13#include "libCZI_Metadata.h"
14
15namespace libCZI
16{
17 class IBitmapData;
18 class IDimCoordinate;
19
27
30 {
31 public:
32 static constexpr std::uint8_t kMemoryUsage = 1;
33 static constexpr std::uint8_t kElementsCount = 2;
34
38 {
40 std::uint8_t validityMask;
41
43 std::uint64_t memoryUsage;
44
46 std::uint32_t elementsCount;
47 };
48
57 virtual Statistics GetStatistics(std::uint8_t mask) const = 0;
58
59 virtual ~ISubBlockCacheStatistics() = default;
60
61 ISubBlockCacheStatistics() = default;
63 ISubBlockCacheStatistics& operator=(const ISubBlockCacheStatistics&) = delete;
65 ISubBlockCacheStatistics& operator=(ISubBlockCacheStatistics&&) noexcept = delete;
66 };
67
70 {
71 public:
81 {
84 std::uint64_t maxMemoryUsage{ (std::numeric_limits<decltype(maxMemoryUsage)>::max)() };
85
88 std::uint32_t maxSubBlockCount{ (std::numeric_limits<decltype(maxSubBlockCount)>::max)() };
89 };
90
95 virtual void Prune(const PruneOptions& options) = 0;
96
97 virtual ~ISubBlockCacheControl() = default;
98
99 ISubBlockCacheControl() = default;
101 ISubBlockCacheControl& operator=(const ISubBlockCacheControl&) = delete;
102 ISubBlockCacheControl(ISubBlockCacheControl&&) noexcept = delete;
103 ISubBlockCacheControl& operator=(ISubBlockCacheControl&&) noexcept = delete;
104 };
105
108 {
109 public:
113 virtual std::shared_ptr<IBitmapData> Get(int subblock_index) = 0;
114
118 virtual void Add(int subblock_index, std::shared_ptr<IBitmapData> pBitmap) = 0;
119
120 virtual ~ISubBlockCacheOperation() = default;
121
122 ISubBlockCacheOperation() = default;
124 ISubBlockCacheOperation& operator=(const ISubBlockCacheOperation&) = delete;
126 ISubBlockCacheOperation& operator=(ISubBlockCacheOperation&&) noexcept = delete;
127 };
128
138 {
139 public:
140 ~ISubBlockCache() override = default;
141
142 ISubBlockCache() = default;
143 ISubBlockCache(const ISubBlockCache&) = delete;
144 ISubBlockCache& operator=(const ISubBlockCache&) = delete;
145 ISubBlockCache(ISubBlockCache&&) noexcept = delete;
146 ISubBlockCache& operator=(ISubBlockCache&&) noexcept = delete;
147 };
148
151 {
152 protected:
153 virtual ~IAccessor() = default;
154 };
155
172 {
173 public:
175 struct Options
176 {
182
186
192
196
198 std::shared_ptr<libCZI::IIndexSet> sceneFilter;
199
203 std::shared_ptr<libCZI::ISubBlockCacheOperation> subBlockCache;
204
209
211 void Clear()
212 {
213 this->backGroundColor.r = this->backGroundColor.g = this->backGroundColor.b = std::numeric_limits<float>::quiet_NaN();
214 this->sortByM = true;
215 this->useVisibilityCheckOptimization = false;
216 this->drawTileBorder = false;
217 this->sceneFilter.reset();
218 this->subBlockCache.reset();
219 this->onlyUseSubBlockCacheForCompressedData = true;
220 }
221 };
222
223 public:
233 virtual std::shared_ptr<libCZI::IBitmapData> Get(const libCZI::IntRectAndFrameOfReference& roi, const IDimCoordinate* planeCoordinate, const Options* pOptions) = 0;
234
243 virtual std::shared_ptr<libCZI::IBitmapData> Get(libCZI::PixelType pixeltype, const libCZI::IntRectAndFrameOfReference& roi, const IDimCoordinate* planeCoordinate, const Options* pOptions) = 0;
244
252 virtual void Get(libCZI::IBitmapData* pDest, const IntPointAndFrameOfReference& position, const IDimCoordinate* planeCoordinate, const Options* pOptions) = 0;
253
265 std::shared_ptr<libCZI::IBitmapData> Get(int xPos, int yPos, int width, int height, const IDimCoordinate* planeCoordinate, const Options* pOptions)
266 {
267 return this->Get(libCZI::IntRect{ xPos,yPos,width,height }, planeCoordinate, pOptions);
268 }
269
279 std::shared_ptr<libCZI::IBitmapData> Get(libCZI::PixelType pixeltype, int xPos, int yPos, int width, int height, const IDimCoordinate* planeCoordinate, const Options* pOptions)
280 {
281 return this->Get(pixeltype, libCZI::IntRect{ xPos,yPos,width,height }, planeCoordinate, pOptions);
282 }
283
293 std::shared_ptr<libCZI::IBitmapData> Get(const libCZI::IntRect& roi, const IDimCoordinate* planeCoordinate, const Options* pOptions)
294 {
295 return this->Get(libCZI::IntRectAndFrameOfReference{ libCZI::CZIFrameOfReference::RawSubBlockCoordinateSystem, roi }, planeCoordinate, pOptions);
296 }
297
306 std::shared_ptr<libCZI::IBitmapData> Get(libCZI::PixelType pixeltype, const libCZI::IntRect& roi, const IDimCoordinate* planeCoordinate, const Options* pOptions)
307 {
308 return this->Get(pixeltype, libCZI::IntRectAndFrameOfReference{ libCZI::CZIFrameOfReference::RawSubBlockCoordinateSystem, roi }, planeCoordinate, pOptions);
309 }
310
319 void Get(libCZI::IBitmapData* pDest, int xPos, int yPos, const IDimCoordinate* planeCoordinate, const Options* pOptions)
320 {
321 this->Get(pDest, libCZI::IntPointAndFrameOfReference{ libCZI::CZIFrameOfReference::RawSubBlockCoordinateSystem, { xPos, yPos } }, planeCoordinate, pOptions);
322 }
323
324 protected:
325 ~ISingleChannelTileAccessor() override = default;
326 };
327
332 {
333 public:
335 struct Options
336 {
342
346
350
352 std::shared_ptr<libCZI::IIndexSet> sceneFilter;
353
357 std::shared_ptr<libCZI::ISubBlockCacheOperation> subBlockCache;
358
361
363 void Clear()
364 {
365 this->drawTileBorder = false;
366 this->sortByM = true;
367 this->backGroundColor.r = this->backGroundColor.g = this->backGroundColor.b = std::numeric_limits<float>::quiet_NaN();
368 this->sceneFilter.reset();
369 this->subBlockCache.reset();
370 this->onlyUseSubBlockCacheForCompressedData = true;
371 }
372 };
373
380 {
381 std::uint8_t minificationFactor;
382 std::uint8_t pyramidLayerNo;
383 };
384
394 virtual std::shared_ptr<libCZI::IBitmapData> Get(const libCZI::IntRectAndFrameOfReference& roi, const libCZI::IDimCoordinate* planeCoordinate, const PyramidLayerInfo& pyramidInfo, const libCZI::ISingleChannelPyramidLayerTileAccessor::Options* pOptions) = 0;
395
403 virtual std::shared_ptr<libCZI::IBitmapData> Get(libCZI::PixelType pixeltype, const libCZI::IntRectAndFrameOfReference& roi, const libCZI::IDimCoordinate* planeCoordinate, const PyramidLayerInfo& pyramidInfo, const libCZI::ISingleChannelPyramidLayerTileAccessor::Options* pOptions) = 0;
404
411 virtual void Get(libCZI::IBitmapData* pDest, const libCZI::IntPointAndFrameOfReference& position, const IDimCoordinate* planeCoordinate, const PyramidLayerInfo& pyramidInfo, const Options* pOptions) = 0;
412
422 std::shared_ptr<libCZI::IBitmapData> Get(const libCZI::IntRect& roi, const libCZI::IDimCoordinate* planeCoordinate, const PyramidLayerInfo& pyramidInfo, const libCZI::ISingleChannelPyramidLayerTileAccessor::Options* pOptions)
423 {
424 return this->Get(libCZI::IntRectAndFrameOfReference{ libCZI::CZIFrameOfReference::RawSubBlockCoordinateSystem, roi }, planeCoordinate, pyramidInfo, pOptions);
425 }
426
434 std::shared_ptr<libCZI::IBitmapData> Get(libCZI::PixelType pixeltype, const libCZI::IntRect& roi, const libCZI::IDimCoordinate* planeCoordinate, const PyramidLayerInfo& pyramidInfo, const libCZI::ISingleChannelPyramidLayerTileAccessor::Options* pOptions)
435 {
436 return this->Get(pixeltype, libCZI::IntRectAndFrameOfReference{ libCZI::CZIFrameOfReference::RawSubBlockCoordinateSystem, roi }, planeCoordinate, pyramidInfo, pOptions);
437 }
438
446 void Get(libCZI::IBitmapData* pDest, int xPos, int yPos, const IDimCoordinate* planeCoordinate, const PyramidLayerInfo& pyramidInfo, const Options* pOptions)
447 {
448 this->Get(pDest, libCZI::IntPointAndFrameOfReference{ libCZI::CZIFrameOfReference::RawSubBlockCoordinateSystem, { xPos, yPos } }, planeCoordinate, pyramidInfo, pOptions);
449 }
450 };
451
458 {
459 public:
461 struct Options
462 {
468
472
476
479 std::shared_ptr<libCZI::IIndexSet> sceneFilter;
480
486
490 std::shared_ptr<libCZI::ISubBlockCacheOperation> subBlockCache;
491
494
496 void Clear()
497 {
498 this->drawTileBorder = false;
499 this->sortByM = true;
500 this->backGroundColor.r = this->backGroundColor.g = this->backGroundColor.b = std::numeric_limits<float>::quiet_NaN();
501 this->sceneFilter.reset();
502 this->useVisibilityCheckOptimization = false;
503 this->subBlockCache.reset();
504 this->onlyUseSubBlockCacheForCompressedData = true;
505 }
506 };
507
514 virtual libCZI::IntSize CalcSize(const libCZI::IntRect& roi, float zoom) const = 0;
515
525 virtual std::shared_ptr<libCZI::IBitmapData> Get(const libCZI::IntRectAndFrameOfReference& roi, const libCZI::IDimCoordinate* planeCoordinate, float zoom, const libCZI::ISingleChannelScalingTileAccessor::Options* pOptions) = 0;
526
534 virtual std::shared_ptr<libCZI::IBitmapData> Get(libCZI::PixelType pixeltype, const libCZI::IntRectAndFrameOfReference& roi, const libCZI::IDimCoordinate* planeCoordinate, float zoom, const libCZI::ISingleChannelScalingTileAccessor::Options* pOptions) = 0;
535
544 virtual void Get(libCZI::IBitmapData* pDest, const libCZI::IntRectAndFrameOfReference& roi, const libCZI::IDimCoordinate* planeCoordinate, float zoom, const libCZI::ISingleChannelScalingTileAccessor::Options* pOptions) = 0;
545
555 std::shared_ptr<libCZI::IBitmapData> Get(const libCZI::IntRect& roi, const libCZI::IDimCoordinate* planeCoordinate, float zoom, const libCZI::ISingleChannelScalingTileAccessor::Options* pOptions)
556 {
557 return this->Get(libCZI::IntRectAndFrameOfReference{ libCZI::CZIFrameOfReference::RawSubBlockCoordinateSystem, roi }, planeCoordinate, zoom, pOptions);
558 }
559
567 std::shared_ptr<libCZI::IBitmapData> Get(libCZI::PixelType pixeltype, const libCZI::IntRect& roi, const libCZI::IDimCoordinate* planeCoordinate, float zoom, const libCZI::ISingleChannelScalingTileAccessor::Options* pOptions)
568 {
569 return this->Get(pixeltype, libCZI::IntRectAndFrameOfReference{ libCZI::CZIFrameOfReference::RawSubBlockCoordinateSystem, roi }, planeCoordinate, zoom, pOptions);
570 }
571
580 void Get(libCZI::IBitmapData* pDest, const libCZI::IntRect& roi, const libCZI::IDimCoordinate* planeCoordinate, float zoom, const libCZI::ISingleChannelScalingTileAccessor::Options* pOptions)
581 {
582 this->Get(pDest, libCZI::IntRectAndFrameOfReference{ libCZI::CZIFrameOfReference::RawSubBlockCoordinateSystem, roi }, planeCoordinate, zoom, pOptions);
583 }
584 };
585
587 class LIBCZI_API Compositors
588 {
589 public:
591 struct LIBCZI_API ComposeSingleTileOptions
592 {
596
598 void Clear() { this->drawTileBorder = false; }
599 };
600
616 const std::function<bool(int index, std::shared_ptr<libCZI::IBitmapData>& src, int& x, int& y)>& getTiles,
618 int xPos,
619 int yPos,
620 const ComposeSingleTileOptions* pOptions);
621
624 {
627 };
628
629
638 {
640 float weight;
641
645
648
653
658
666
669 const std::uint8_t* ptrLookUpTable;
670
672 void Clear() { std::memset(this, 0, sizeof(*this)); }
673 };
674
687 int channelCount,
688 libCZI::IBitmapData* const* srcBitmaps,
689 const ChannelInfo* channelInfos);
690
705 std::uint8_t alphaVal,
706 int channelCount,
707 libCZI::IBitmapData* const* srcBitmaps,
708 const ChannelInfo* channelInfos);
709
721 static std::shared_ptr<IBitmapData> ComposeMultiChannel_Bgr24(
722 int channelCount,
723 libCZI::IBitmapData* const* srcBitmaps,
724 const ChannelInfo* channelInfos);
725
738 static std::shared_ptr<IBitmapData> ComposeMultiChannel_Bgra32(
739 std::uint8_t alphaVal,
740 int channelCount,
741 libCZI::IBitmapData* const* srcBitmaps,
742 const ChannelInfo* channelInfos);
743
754 static std::shared_ptr<IBitmapData> ComposeMultiChannel_Bgr24(
755 int channelCount,
756 std::vector<std::shared_ptr<libCZI::IBitmapData>>::iterator srcBitmapsIterator,
757 const ChannelInfo* channelInfos)
758 {
759 std::vector<IBitmapData*> vecBm; vecBm.reserve(channelCount);
760 for (int i = 0; i < channelCount; ++i)
761 {
762 vecBm.emplace_back((*srcBitmapsIterator).get());
763 ++srcBitmapsIterator;
764 }
765
766 return ComposeMultiChannel_Bgr24(channelCount, &vecBm[0], channelInfos);
767 }
768
780 static std::shared_ptr<IBitmapData> ComposeMultiChannel_Bgra32(
781 std::uint8_t alphaVal,
782 int channelCount,
783 std::vector<std::shared_ptr<libCZI::IBitmapData>>::iterator srcBitmapsIterator,
784 const ChannelInfo* channelInfos)
785 {
786 std::vector<IBitmapData*> vecBm; vecBm.reserve(channelCount);
787 for (int i = 0; i < channelCount; ++i)
788 {
789 vecBm.emplace_back((*srcBitmapsIterator).get());
790 ++srcBitmapsIterator;
791 }
792
793 return ComposeMultiChannel_Bgra32(alphaVal, channelCount, &vecBm[0], channelInfos);
794 }
795 };
796}
Composition operations are found in this class: multi-tile compositor and multi-channel compositor.
Definition libCZI_Compositor.h:588
static void ComposeMultiChannel_Bgra32(libCZI::IBitmapData *dest, std::uint8_t alphaVal, int channelCount, libCZI::IBitmapData *const *srcBitmaps, const ChannelInfo *channelInfos)
static std::shared_ptr< IBitmapData > ComposeMultiChannel_Bgr24(int channelCount, libCZI::IBitmapData *const *srcBitmaps, const ChannelInfo *channelInfos)
static std::shared_ptr< IBitmapData > ComposeMultiChannel_Bgra32(std::uint8_t alphaVal, int channelCount, libCZI::IBitmapData *const *srcBitmaps, const ChannelInfo *channelInfos)
static std::shared_ptr< IBitmapData > ComposeMultiChannel_Bgra32(std::uint8_t alphaVal, int channelCount, std::vector< std::shared_ptr< libCZI::IBitmapData > >::iterator srcBitmapsIterator, const ChannelInfo *channelInfos)
Definition libCZI_Compositor.h:780
static void ComposeSingleChannelTiles(const std::function< bool(int index, std::shared_ptr< libCZI::IBitmapData > &src, int &x, int &y)> &getTiles, libCZI::IBitmapData *dest, int xPos, int yPos, const ComposeSingleTileOptions *pOptions)
static std::shared_ptr< IBitmapData > ComposeMultiChannel_Bgr24(int channelCount, std::vector< std::shared_ptr< libCZI::IBitmapData > >::iterator srcBitmapsIterator, const ChannelInfo *channelInfos)
Definition libCZI_Compositor.h:754
static void ComposeMultiChannel_Bgr24(libCZI::IBitmapData *dest, int channelCount, libCZI::IBitmapData *const *srcBitmaps, const ChannelInfo *channelInfos)
The base interface (all accessor-interface must derive from this).
Definition libCZI_Compositor.h:151
Definition libCZI_Pixels.h:197
Interface used to represent a coordinate (in the space of the dimensions identified by DimensionIndex...
Definition libCZI_DimCoordinate.h:37
Definition libCZI_Compositor.h:332
void Get(libCZI::IBitmapData *pDest, int xPos, int yPos, const IDimCoordinate *planeCoordinate, const PyramidLayerInfo &pyramidInfo, const Options *pOptions)
Definition libCZI_Compositor.h:446
std::shared_ptr< libCZI::IBitmapData > Get(libCZI::PixelType pixeltype, const libCZI::IntRect &roi, const libCZI::IDimCoordinate *planeCoordinate, const PyramidLayerInfo &pyramidInfo, const libCZI::ISingleChannelPyramidLayerTileAccessor::Options *pOptions)
Definition libCZI_Compositor.h:434
virtual void Get(libCZI::IBitmapData *pDest, const libCZI::IntPointAndFrameOfReference &position, const IDimCoordinate *planeCoordinate, const PyramidLayerInfo &pyramidInfo, const Options *pOptions)=0
virtual std::shared_ptr< libCZI::IBitmapData > Get(const libCZI::IntRectAndFrameOfReference &roi, const libCZI::IDimCoordinate *planeCoordinate, const PyramidLayerInfo &pyramidInfo, const libCZI::ISingleChannelPyramidLayerTileAccessor::Options *pOptions)=0
virtual std::shared_ptr< libCZI::IBitmapData > Get(libCZI::PixelType pixeltype, const libCZI::IntRectAndFrameOfReference &roi, const libCZI::IDimCoordinate *planeCoordinate, const PyramidLayerInfo &pyramidInfo, const libCZI::ISingleChannelPyramidLayerTileAccessor::Options *pOptions)=0
std::shared_ptr< libCZI::IBitmapData > Get(const libCZI::IntRect &roi, const libCZI::IDimCoordinate *planeCoordinate, const PyramidLayerInfo &pyramidInfo, const libCZI::ISingleChannelPyramidLayerTileAccessor::Options *pOptions)
Definition libCZI_Compositor.h:422
Definition libCZI_Compositor.h:458
std::shared_ptr< libCZI::IBitmapData > Get(const libCZI::IntRect &roi, const libCZI::IDimCoordinate *planeCoordinate, float zoom, const libCZI::ISingleChannelScalingTileAccessor::Options *pOptions)
Definition libCZI_Compositor.h:555
std::shared_ptr< libCZI::IBitmapData > Get(libCZI::PixelType pixeltype, const libCZI::IntRect &roi, const libCZI::IDimCoordinate *planeCoordinate, float zoom, const libCZI::ISingleChannelScalingTileAccessor::Options *pOptions)
Definition libCZI_Compositor.h:567
virtual std::shared_ptr< libCZI::IBitmapData > Get(libCZI::PixelType pixeltype, const libCZI::IntRectAndFrameOfReference &roi, const libCZI::IDimCoordinate *planeCoordinate, float zoom, const libCZI::ISingleChannelScalingTileAccessor::Options *pOptions)=0
virtual void Get(libCZI::IBitmapData *pDest, const libCZI::IntRectAndFrameOfReference &roi, const libCZI::IDimCoordinate *planeCoordinate, float zoom, const libCZI::ISingleChannelScalingTileAccessor::Options *pOptions)=0
virtual libCZI::IntSize CalcSize(const libCZI::IntRect &roi, float zoom) const =0
virtual std::shared_ptr< libCZI::IBitmapData > Get(const libCZI::IntRectAndFrameOfReference &roi, const libCZI::IDimCoordinate *planeCoordinate, float zoom, const libCZI::ISingleChannelScalingTileAccessor::Options *pOptions)=0
void Get(libCZI::IBitmapData *pDest, const libCZI::IntRect &roi, const libCZI::IDimCoordinate *planeCoordinate, float zoom, const libCZI::ISingleChannelScalingTileAccessor::Options *pOptions)
Definition libCZI_Compositor.h:580
Definition libCZI_Compositor.h:172
virtual std::shared_ptr< libCZI::IBitmapData > Get(libCZI::PixelType pixeltype, const libCZI::IntRectAndFrameOfReference &roi, const IDimCoordinate *planeCoordinate, const Options *pOptions)=0
std::shared_ptr< libCZI::IBitmapData > Get(int xPos, int yPos, int width, int height, const IDimCoordinate *planeCoordinate, const Options *pOptions)
Definition libCZI_Compositor.h:265
std::shared_ptr< libCZI::IBitmapData > Get(libCZI::PixelType pixeltype, const libCZI::IntRect &roi, const IDimCoordinate *planeCoordinate, const Options *pOptions)
Definition libCZI_Compositor.h:306
virtual std::shared_ptr< libCZI::IBitmapData > Get(const libCZI::IntRectAndFrameOfReference &roi, const IDimCoordinate *planeCoordinate, const Options *pOptions)=0
std::shared_ptr< libCZI::IBitmapData > Get(const libCZI::IntRect &roi, const IDimCoordinate *planeCoordinate, const Options *pOptions)
Definition libCZI_Compositor.h:293
virtual void Get(libCZI::IBitmapData *pDest, const IntPointAndFrameOfReference &position, const IDimCoordinate *planeCoordinate, const Options *pOptions)=0
void Get(libCZI::IBitmapData *pDest, int xPos, int yPos, const IDimCoordinate *planeCoordinate, const Options *pOptions)
Definition libCZI_Compositor.h:319
std::shared_ptr< libCZI::IBitmapData > Get(libCZI::PixelType pixeltype, int xPos, int yPos, int width, int height, const IDimCoordinate *planeCoordinate, const Options *pOptions)
Definition libCZI_Compositor.h:279
This interface defines the global operations on the cache. It is used to control the memory usage of ...
Definition libCZI_Compositor.h:70
virtual void Prune(const PruneOptions &options)=0
Definition libCZI_Compositor.h:138
This interface defines the operations of adding and querying an element to/from the cache.
Definition libCZI_Compositor.h:108
virtual void Add(int subblock_index, std::shared_ptr< IBitmapData > pBitmap)=0
virtual std::shared_ptr< IBitmapData > Get(int subblock_index)=0
This interface defines how status information about the cache-state can be queried.
Definition libCZI_Compositor.h:30
virtual Statistics GetStatistics(std::uint8_t mask) const =0
static constexpr std::uint8_t kElementsCount
Bit-mask identifying the elements-count field in the statistics struct.
Definition libCZI_Compositor.h:33
static constexpr std::uint8_t kMemoryUsage
Bit-mask identifying the memory-usage field in the statistics struct.
Definition libCZI_Compositor.h:32
External interfaces, classes, functions and structs are found in the namespace "libCZI".
Definition libCZI.h:31
AccessorType
Values that represent the accessor types.
Definition libCZI_Compositor.h:22
@ SingleChannelTileAccessor
The single-channel-tile accessor (associated interface: ISingleChannelTileAccessor).
@ SingleChannelPyramidLayerTileAccessor
The single-channel-pyramid-layer-tile accessor (associated interface: ISingleChannelPyramidLayerTileA...
@ SingleChannelScalingTileAccessor
The scaling-single-channel-tile accessor (associated interface: ISingleChannelScalingTileAccessor).
@ RawSubBlockCoordinateSystem
The raw sub-block coordinate system.
PixelType
An enum representing a pixel-type.
Definition libCZI_Pixels.h:144
Definition libCZI_Compositor.h:638
float blackPoint
Definition libCZI_Compositor.h:652
float weight
The weight of the channel.
Definition libCZI_Compositor.h:640
int lookUpTableElementCount
Definition libCZI_Compositor.h:665
bool enableTinting
Definition libCZI_Compositor.h:644
TintingColor tinting
The tinting color (only examined if enableTinting is true).
Definition libCZI_Compositor.h:647
void Clear()
All members are set to zero.
Definition libCZI_Compositor.h:672
float whitePoint
Definition libCZI_Compositor.h:657
const std::uint8_t * ptrLookUpTable
Definition libCZI_Compositor.h:669
Options for the libCZI::Compositors::ComposeSingleChannelTiles function.
Definition libCZI_Compositor.h:592
bool drawTileBorder
Definition libCZI_Compositor.h:595
void Clear()
Clears this object to its blank/initial state.
Definition libCZI_Compositor.h:598
This structure defines the tinting color.
Definition libCZI_Compositor.h:624
Rgb8Color color
The tinting color to be used given as RGB24.
Definition libCZI_Compositor.h:626
Options used for this accessor.
Definition libCZI_Compositor.h:336
bool drawTileBorder
Definition libCZI_Compositor.h:349
RgbFloatColor backGroundColor
Definition libCZI_Compositor.h:341
bool sortByM
Definition libCZI_Compositor.h:345
bool onlyUseSubBlockCacheForCompressedData
If true, then only bitmaps from sub-blocks with compressed data are added to the cache.
Definition libCZI_Compositor.h:360
std::shared_ptr< libCZI::IIndexSet > sceneFilter
If specified, only subblocks with a scene-index contained in the set will be considered.
Definition libCZI_Compositor.h:352
void Clear()
Clears this object to its blank state.
Definition libCZI_Compositor.h:363
std::shared_ptr< libCZI::ISubBlockCacheOperation > subBlockCache
Definition libCZI_Compositor.h:357
std::uint8_t minificationFactor
Factor by which adjacent pyramid-layers are shrunk. Commonly used in CZI are 2 or 3.
Definition libCZI_Compositor.h:381
std::uint8_t pyramidLayerNo
The pyramid layer number.
Definition libCZI_Compositor.h:382
Options used for this accessor.
Definition libCZI_Compositor.h:462
RgbFloatColor backGroundColor
Definition libCZI_Compositor.h:467
std::shared_ptr< libCZI::ISubBlockCacheOperation > subBlockCache
Definition libCZI_Compositor.h:490
bool onlyUseSubBlockCacheForCompressedData
If true, then only bitmaps from sub-blocks with compressed data are added to the cache.
Definition libCZI_Compositor.h:493
void Clear()
Clears this object to its blank state.
Definition libCZI_Compositor.h:496
bool sortByM
Definition libCZI_Compositor.h:471
bool useVisibilityCheckOptimization
Definition libCZI_Compositor.h:485
std::shared_ptr< libCZI::IIndexSet > sceneFilter
Definition libCZI_Compositor.h:479
bool drawTileBorder
Definition libCZI_Compositor.h:475
Options for controlling the composition operation.
Definition libCZI_Compositor.h:176
bool useVisibilityCheckOptimization
Definition libCZI_Compositor.h:191
bool onlyUseSubBlockCacheForCompressedData
Definition libCZI_Compositor.h:208
RgbFloatColor backGroundColor
Definition libCZI_Compositor.h:181
bool sortByM
Definition libCZI_Compositor.h:185
std::shared_ptr< libCZI::IIndexSet > sceneFilter
If specified, only subblocks with a scene-index contained in the set will be considered.
Definition libCZI_Compositor.h:198
void Clear()
Clears this object to its blank state.
Definition libCZI_Compositor.h:211
bool drawTileBorder
Definition libCZI_Compositor.h:195
std::shared_ptr< libCZI::ISubBlockCacheOperation > subBlockCache
Definition libCZI_Compositor.h:203
Definition libCZI_Compositor.h:81
std::uint32_t maxSubBlockCount
Definition libCZI_Compositor.h:88
std::uint64_t maxMemoryUsage
Definition libCZI_Compositor.h:84
Definition libCZI_Compositor.h:38
std::uint32_t elementsCount
The number of elements in the cache. This field is only valid if the bit kElementsCount is set in the...
Definition libCZI_Compositor.h:46
std::uint64_t memoryUsage
The memory usage of all elements in the cache. This field is only valid if the bit kMemoryUsage is se...
Definition libCZI_Compositor.h:43
std::uint8_t validityMask
A bit mask which indicates which members are valid. C.f. the constants kMemoryUsage and kElementsCoun...
Definition libCZI_Compositor.h:40
This structure combines a point with a specification of the frame of reference.
Definition libCZI_Pixels.h:102
This structure combines a rectangle with a specification of the frame of reference.
Definition libCZI_Pixels.h:95
A rectangle (with integer coordinates).
Definition libCZI_Pixels.h:17
A structure representing a size (width and height) in integers.
Definition libCZI_Pixels.h:121
A structure representing an R-G-B-color triple (as bytes).
Definition libCZI_Pixels.h:128
A structure representing an R-G-B-color triple (as floats).
Definition libCZI_Pixels.h:136
float r
The red component.
Definition libCZI_Pixels.h:137
float b
The blue component.
Definition libCZI_Pixels.h:139
float g
The green component.
Definition libCZI_Pixels.h:138