CVB++ 15.0
chunk_image_buffer_description.hpp
1#pragma once
2
3#include "../global.hpp"
4#include "image_buffer_description.hpp"
5
6namespace Cvb
7{
8CVB_BEGIN_INLINE_NS
9
18namespace GevServer
19{
30{
31 friend class Stream;
32
33public:
46 ChunkImageBufferDescription(Size2D<int> size, ColorModel colorModel, DataType dataType, int totalPayloadSize)
47 : ChunkImageBufferDescription(size, PfncFormatValue::From(colorModel, dataType), totalPayloadSize)
48 {
49 }
50
58 ChunkImageBufferDescription(Size2D<int> size, PfncFormat pixelFormat, int totalPayloadSize)
59 : ImageBufferDescription(size, pixelFormat)
60 {
61 if (totalPayloadSize < 4)
62 throw std::runtime_error("Total payload size must at least be "
63 "large enough to hold a chunk");
64
65 totalPayloadSize_ = totalPayloadSize;
66 }
67
71 int TotalPayloadSize() const noexcept { return totalPayloadSize_; }
72
76 void SetTotalPayloadSize(int totalPayloadSize)
77 {
78 if (totalPayloadSize < 4)
79 throw std::runtime_error("Total payload size must at least be large enough to hold a chunk");
80
81 totalPayloadSize_ = totalPayloadSize;
82 }
83
96 std::int64_t LayoutId() const noexcept { return layoutId_; }
97
114 void SetLayoutId(const std::int64_t &layoutId)
115 {
116 if (layoutId < 0)
117 throw std::runtime_error("Layout identifier must be larger or equal to 0");
118
119 layoutId_ = static_cast<CExports::cvbuint32_t>(layoutId);
120 }
121
122private:
124 CExports::GSExtendedChunkDataBlock ChunkImageDataBlock() const noexcept
125 {
126 auto dataBlock = CExports::GSExtendedChunkDataBlock{
127 ImageDataBlock(), static_cast<CExports::cvbuint32_t>(totalPayloadSize_), layoutId_};
128 dataBlock.ImageData.Header.PayloadType = CExports::TGSPayloadType::GSPT_ChunkImage;
129 return dataBlock;
130 }
131
132 int totalPayloadSize_ = 0;
133 std::uint32_t layoutId_ = 0;
134};
135}
136CVB_END_INLINE_NS
137}
Data type description for an image plane.
Definition: data_type.hpp:28
Describes a GenICam Pixel Format Naming Convention (PFNC) compatible image memory buffer with possibl...
Definition: chunk_image_buffer_description.hpp:30
void SetTotalPayloadSize(int totalPayloadSize)
Sets a valid payload size over all chunks including the image chunk.
Definition: chunk_image_buffer_description.hpp:76
ChunkImageBufferDescription(Size2D< int > size, PfncFormat pixelFormat, int totalPayloadSize)
Creates a default chunk image buffer description.
Definition: chunk_image_buffer_description.hpp:58
int TotalPayloadSize() const noexcept
Gets a valid payload size over all chunks including the image chunk.
Definition: chunk_image_buffer_description.hpp:71
void SetLayoutId(const std::int64_t &layoutId)
Sets the layout identifier for the chunks.
Definition: chunk_image_buffer_description.hpp:114
ChunkImageBufferDescription(Size2D< int > size, ColorModel colorModel, DataType dataType, int totalPayloadSize)
Creates a default chunk image buffer description.
Definition: chunk_image_buffer_description.hpp:46
std::int64_t LayoutId() const noexcept
Gets the layout identifier for the chunks.
Definition: chunk_image_buffer_description.hpp:96
Describes a GenICam Pixel Format Naming Convention (PFNC) compatible image memory buffer.
Definition: image_buffer_description.hpp:24
The stream to send Images or other data.
Definition: decl_stream.hpp:19
Helper methods for PfncFormat values. ///
Definition: pfnc_format.hpp:1005
PfncFormat
GenICam Pixel Format Naming Convention (PFNC) format values.
Definition: pfnc_format.hpp:21
Root namespace for the Image Manager interface.
Definition: c_barcode.h:24
ColorModel
Color model that this image is using.
Definition: global.hpp:157