IDS peak genericC++ v1.16.0
Loading...
Searching...
No Matches
peak_buffer_part.hpp
Go to the documentation of this file.
1
10
11#pragma once
12
13
16#include <peak/dll_interface/peak_dll_interface_util.hpp>
18
19#include <cstddef>
20#include <cstdint>
21#include <memory>
22
23
24namespace peak
25{
26namespace core
27{
28
50
51class Buffer;
52
59class BufferPart: public std::enable_shared_from_this<BufferPart>
60{
61public:
62 BufferPart() = delete;
64 BufferPart(const BufferPart& other) = delete;
65 BufferPart& operator=(const BufferPart& other) = delete;
66 BufferPart(BufferPart&& other) = delete;
67 BufferPart& operator=(BufferPart&& other) = delete;
68
80
93
95 RawInformation Info(int32_t infoCommand) const;
96
106 uint64_t SourceID() const;
107
117 void* BasePtr() const;
118
128 size_t Size() const;
129
139 BufferPartType Type() const;
140
150 uint64_t Format() const;
151
161 uint64_t FormatNamespace() const;
162
172 size_t Width() const;
173
183 size_t Height() const;
184
194 size_t XOffset() const;
195
205 size_t YOffset() const;
206
216 size_t XPadding() const;
217
227 size_t DeliveredImageHeight() const;
228
238 std::shared_ptr<Buffer> ParentBuffer() const;
239
240private:
241 friend ClassCreator<BufferPart>;
242 BufferPart(PEAK_BUFFER_PART_HANDLE bufferPartHandle, const std::weak_ptr<Buffer>& parentBuffer);
243 PEAK_BUFFER_PART_HANDLE m_backendHandle;
244
245 std::weak_ptr<Buffer> m_parentBuffer;
246};
247
248} /* namespace core */
249} /* namespace peak */
250
251/* Implementation */
252namespace peak
253{
254namespace core
255{
256
257inline std::string ToString(BufferPartType entry)
258{
259 std::string entryString;
260
261 if (entry == BufferPartType::Unknown)
262 {
263 entryString = "Unknown";
264 }
265 else if (entry == BufferPartType::Image2D)
266 {
267 entryString = "Image2D";
268 }
269 else if (entry == BufferPartType::PlaneBiPlanar2D)
270 {
271 entryString = "PlaneBiPlanar2D";
272 }
273 else if (entry == BufferPartType::PlaneTriPlanar2D)
274 {
275 entryString = "PlaneTriPlanar2D";
276 }
277 else if (entry == BufferPartType::PlaneQuadPlanar2D)
278 {
279 entryString = "PlaneQuadPlanar2D";
280 }
281 else if (entry == BufferPartType::Image3D)
282 {
283 entryString = "Image3D";
284 }
285 else if (entry == BufferPartType::PlaneBiPlanar3D)
286 {
287 entryString = "PlaneBiPlanar3D";
288 }
289 else if (entry == BufferPartType::PlaneTriPlanar3D)
290 {
291 entryString = "PlaneTriPlanar3D";
292 }
293 else if (entry == BufferPartType::PlaneQuadPlanar3D)
294 {
295 entryString = "PlaneQuadPlanar3D";
296 }
297 else if (entry == BufferPartType::ConfidenceMap)
298 {
299 entryString = "ConfidenceMap";
300 }
301 else if (entry >= BufferPartType::Custom)
302 {
303 entryString = "Custom";
304 }
305
306 return entryString;
307}
308
309inline BufferPart::BufferPart(PEAK_BUFFER_PART_HANDLE bufferPartHandle, const std::weak_ptr<Buffer>& parentBuffer)
310 : m_backendHandle(bufferPartHandle)
311 , m_parentBuffer(parentBuffer)
312{}
313
315{
316 (void)PEAK_C_ABI_PREFIX PEAK_BufferPart_Destruct(m_backendHandle);
317}
318
320{
321 return ImageView(shared_from_this());
322}
323
325{
326 return ImageView(shared_from_this(), mode);
327}
328
329inline RawInformation BufferPart::Info(int32_t infoCommand) const
330{
331 return QueryRawInformationFromCInterfaceFunction([&](int32_t* dataType, uint8_t* buffer, size_t* bufferSize) {
333 m_backendHandle, infoCommand, dataType, buffer, bufferSize);
334 });
335}
336
337inline uint64_t BufferPart::SourceID() const
338{
339 return QueryNumericFromCInterfaceFunction<uint64_t>([&](uint64_t* sourceId) {
340 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetSourceID(m_backendHandle, sourceId);
341 });
342}
343
344inline void* BufferPart::BasePtr() const
345{
346 return QueryNumericFromCInterfaceFunction<void*>(
347 [&](void** basePtr) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetBasePtr(m_backendHandle, basePtr); });
348}
349
350inline size_t BufferPart::Size() const
351{
352 return QueryNumericFromCInterfaceFunction<size_t>(
353 [&](size_t* size) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetSize(m_backendHandle, size); });
354}
355
357{
358 return static_cast<BufferPartType>(
359 QueryNumericFromCInterfaceFunction<PEAK_BUFFER_PART_TYPE>([&](PEAK_BUFFER_PART_TYPE* type) {
360 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetType(m_backendHandle, type);
361 }));
362}
363
364inline uint64_t BufferPart::Format() const
365{
366 return QueryNumericFromCInterfaceFunction<uint64_t>(
367 [&](uint64_t* format) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetFormat(m_backendHandle, format); });
368}
369
370inline uint64_t BufferPart::FormatNamespace() const
371{
372 return QueryNumericFromCInterfaceFunction<uint64_t>([&](uint64_t* formatNamespace) {
373 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetFormatNamespace(m_backendHandle, formatNamespace);
374 });
375}
376
377inline size_t BufferPart::Width() const
378{
379 return QueryNumericFromCInterfaceFunction<size_t>(
380 [&](size_t* width) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetWidth(m_backendHandle, width); });
381}
382
383inline size_t BufferPart::Height() const
384{
385 return QueryNumericFromCInterfaceFunction<size_t>(
386 [&](size_t* height) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetHeight(m_backendHandle, height); });
387}
388
389inline size_t BufferPart::XOffset() const
390{
391 return QueryNumericFromCInterfaceFunction<size_t>(
392 [&](size_t* xOffset) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetXOffset(m_backendHandle, xOffset); });
393}
394
395inline size_t BufferPart::YOffset() const
396{
397 return QueryNumericFromCInterfaceFunction<size_t>(
398 [&](size_t* yOffset) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetYOffset(m_backendHandle, yOffset); });
399}
400
401inline size_t BufferPart::XPadding() const
402{
403 return QueryNumericFromCInterfaceFunction<size_t>([&](size_t* xPadding) {
404 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetXPadding(m_backendHandle, xPadding);
405 });
406}
407
409{
410 return QueryNumericFromCInterfaceFunction<size_t>([&](size_t* deliveredImageHeight) {
411 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetDeliveredImageHeight(m_backendHandle, deliveredImageHeight);
412 });
413}
414
415inline std::shared_ptr<Buffer> BufferPart::ParentBuffer() const
416{
417 return LockOrThrow(m_parentBuffer);
418}
419
420} /* namespace core */
421} /* namespace peak */
size_t XPadding() const
Returns the x padding.
Definition peak_buffer_part.hpp:401
BufferPartType Type() const
Returns the type.
Definition peak_buffer_part.hpp:356
uint64_t FormatNamespace() const
Returns the format namespace.
Definition peak_buffer_part.hpp:370
void * BasePtr() const
Returns the base pointer.
Definition peak_buffer_part.hpp:344
size_t DeliveredImageHeight() const
Returns the delivered image height.
Definition peak_buffer_part.hpp:408
size_t YOffset() const
Returns the y offset.
Definition peak_buffer_part.hpp:395
size_t Size() const
Returns the size in bytes.
Definition peak_buffer_part.hpp:350
uint64_t SourceID() const
Returns the source ID.
Definition peak_buffer_part.hpp:337
std::shared_ptr< Buffer > ParentBuffer() const
Returns the parent buffer.
Definition peak_buffer_part.hpp:415
size_t Height() const
Returns the height.
Definition peak_buffer_part.hpp:383
~BufferPart()
Definition peak_buffer_part.hpp:314
BufferPart & operator=(const BufferPart &other)=delete
RawInformation Info(int32_t infoCommand) const
Delivers information based on the given GenTL info command.
Definition peak_buffer_part.hpp:329
size_t XOffset() const
Returns the x offset.
Definition peak_buffer_part.hpp:389
ImageView ToImageView()
Create an ImageView from this buffer part.
Definition peak_buffer_part.hpp:319
size_t Width() const
Returns the width.
Definition peak_buffer_part.hpp:377
uint64_t Format() const
Returns the format.
Definition peak_buffer_part.hpp:364
BufferPart(BufferPart &&other)=delete
BufferPart(const BufferPart &other)=delete
BufferPart & operator=(BufferPart &&other)=delete
Implementation of the peak::common::IImageView interface for viewing image pixel data from arbitrary ...
Definition peak_image_view.hpp:84
BufferPartType
Data type of the buffer part.
Definition peak_buffer_part.hpp:36
@ PlaneBiPlanar3D
Definition peak_buffer_part.hpp:43
@ Image3D
Definition peak_buffer_part.hpp:42
@ PlaneTriPlanar2D
Definition peak_buffer_part.hpp:40
@ PlaneQuadPlanar2D
Definition peak_buffer_part.hpp:41
@ ConfidenceMap
Definition peak_buffer_part.hpp:46
@ Unknown
Definition peak_buffer_part.hpp:37
@ Custom
Definition peak_buffer_part.hpp:48
@ Image2D
Definition peak_buffer_part.hpp:38
@ PlaneTriPlanar3D
Definition peak_buffer_part.hpp:44
@ PlaneQuadPlanar3D
Definition peak_buffer_part.hpp:45
@ PlaneBiPlanar2D
Definition peak_buffer_part.hpp:39
@ Unknown
Definition peak_buffer.hpp:44
@ Custom
Definition peak_buffer.hpp:56
The "core" namespace contains the direct GenAPI and GenTL wrapper.
Definition peak_buffer.hpp:34
std::string ToString(BufferPayloadType entry)
Definition peak_buffer.hpp:612
MetadataExtractionMode
Controls how metadata is extracted when constructing an ImageView.
Definition peak_image_view.hpp:52
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_dynamic_loader.h:35
PEAK_C_API PEAK_BufferPart_GetSize(PEAK_BUFFER_PART_HANDLE bufferPartHandle, size_t *size)
Asks the given buffer part for its size.
PEAK_C_API PEAK_BufferPart_GetXOffset(PEAK_BUFFER_PART_HANDLE bufferPartHandle, size_t *xOffset)
Asks the given buffer part for its X offset.
int32_t PEAK_BUFFER_PART_TYPE
Definition peak_backend.h:80
PEAK_C_API PEAK_BufferPart_GetWidth(PEAK_BUFFER_PART_HANDLE bufferPartHandle, size_t *width)
Asks the given buffer part for its width.
PEAK_C_API PEAK_BufferPart_GetHeight(PEAK_BUFFER_PART_HANDLE bufferPartHandle, size_t *height)
Asks the given buffer part for its height.
PEAK_C_API PEAK_BufferPart_GetFormat(PEAK_BUFFER_PART_HANDLE bufferPartHandle, uint64_t *format)
Asks the given buffer part for its format.
struct PEAK_BUFFER_PART * PEAK_BUFFER_PART_HANDLE
Definition peak_backend.h:413
PEAK_C_API PEAK_BufferPart_GetFormatNamespace(PEAK_BUFFER_PART_HANDLE bufferPartHandle, uint64_t *formatNamespace)
Asks the given buffer part for its format namespace.
PEAK_C_API PEAK_BufferPart_GetDeliveredImageHeight(PEAK_BUFFER_PART_HANDLE bufferPartHandle, size_t *deliveredImageHeight)
Asks the given buffer part for its delivered image height.
PEAK_C_API PEAK_BufferPart_GetInfo(PEAK_BUFFER_PART_HANDLE bufferPartHandle, int32_t infoCommand, int32_t *infoDataType, uint8_t *info, size_t *infoSize)
Asks the given buffer part for an information based on a specific command.
PEAK_C_API PEAK_BufferPart_GetYOffset(PEAK_BUFFER_PART_HANDLE bufferPartHandle, size_t *yOffset)
Asks the given buffer part for its Y offset.
PEAK_C_API PEAK_BufferPart_GetBasePtr(PEAK_BUFFER_PART_HANDLE bufferPartHandle, void **basePtr)
Asks the given buffer part for its base pointer.
PEAK_C_API PEAK_BufferPart_GetXPadding(PEAK_BUFFER_PART_HANDLE bufferPartHandle, size_t *xPadding)
Asks the given buffer part for its X padding.
PEAK_C_API PEAK_BufferPart_GetSourceID(PEAK_BUFFER_PART_HANDLE bufferPartHandle, uint64_t *sourceId)
Asks the given buffer part for its source ID.
PEAK_C_API PEAK_BufferPart_Destruct(PEAK_BUFFER_PART_HANDLE bufferPartHandle)
Destroys the given buffer part.
PEAK_C_API PEAK_BufferPart_GetType(PEAK_BUFFER_PART_HANDLE bufferPartHandle, PEAK_BUFFER_PART_TYPE *type)
Asks the given buffer part for its type.
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:16
The struct returned by all raw information functions.
Definition peak_common_structs.hpp:25