IDS peak genericC++ v1.17.0
Loading...
Searching...
No Matches
peak_buffer_part.hpp
Go to the documentation of this file.
1
7
8#pragma once
9
11
14#include <peak/dll_interface/peak_dll_interface_util.hpp>
16
17#include <cstddef>
18#include <cstdint>
19#include <memory>
20
21
22namespace peak
23{
24namespace core
25{
26
48
49class Buffer;
50
57class BufferPart : public std::enable_shared_from_this<BufferPart>
58{
59public:
60 BufferPart() = delete;
62 BufferPart(const BufferPart& other) = delete;
63 BufferPart& operator=(const BufferPart& other) = delete;
64 BufferPart(BufferPart&& other) = delete;
65 BufferPart& operator=(BufferPart&& other) = delete;
66
78
91
93 PEAK_COMMON_NO_DISCARD RawInformation Info(int32_t infoCommand) const;
94
104 PEAK_COMMON_NO_DISCARD uint64_t SourceID() const;
105
115 PEAK_COMMON_NO_DISCARD void* BasePtr() const;
116
126 PEAK_COMMON_NO_DISCARD size_t Size() const;
127
138
148 PEAK_COMMON_NO_DISCARD uint64_t Format() const;
149
160
170 PEAK_COMMON_NO_DISCARD size_t Width() const;
171
181 PEAK_COMMON_NO_DISCARD size_t Height() const;
182
192 PEAK_COMMON_NO_DISCARD size_t XOffset() const;
193
203 PEAK_COMMON_NO_DISCARD size_t YOffset() const;
204
214 PEAK_COMMON_NO_DISCARD size_t XPadding() const;
215
226
236 PEAK_COMMON_NO_DISCARD std::shared_ptr<Buffer> ParentBuffer() const;
237
238private:
239 friend ClassCreator<BufferPart>;
240 BufferPart(PEAK_BUFFER_PART_HANDLE bufferPartHandle, const std::weak_ptr<Buffer>& parentBuffer);
241 PEAK_BUFFER_PART_HANDLE m_backendHandle;
242
243 std::weak_ptr<Buffer> m_parentBuffer;
244};
245
246} /* namespace core */
247} /* namespace peak */
248
249/* Implementation */
250namespace peak
251{
252namespace core
253{
254
255inline std::string ToString(BufferPartType entry)
256{
257 std::string entryString;
258
259 if (entry == BufferPartType::Unknown)
260 {
261 entryString = "Unknown";
262 }
263 else if (entry == BufferPartType::Image2D)
264 {
265 entryString = "Image2D";
266 }
267 else if (entry == BufferPartType::PlaneBiPlanar2D)
268 {
269 entryString = "PlaneBiPlanar2D";
270 }
271 else if (entry == BufferPartType::PlaneTriPlanar2D)
272 {
273 entryString = "PlaneTriPlanar2D";
274 }
275 else if (entry == BufferPartType::PlaneQuadPlanar2D)
276 {
277 entryString = "PlaneQuadPlanar2D";
278 }
279 else if (entry == BufferPartType::Image3D)
280 {
281 entryString = "Image3D";
282 }
283 else if (entry == BufferPartType::PlaneBiPlanar3D)
284 {
285 entryString = "PlaneBiPlanar3D";
286 }
287 else if (entry == BufferPartType::PlaneTriPlanar3D)
288 {
289 entryString = "PlaneTriPlanar3D";
290 }
291 else if (entry == BufferPartType::PlaneQuadPlanar3D)
292 {
293 entryString = "PlaneQuadPlanar3D";
294 }
295 else if (entry == BufferPartType::ConfidenceMap)
296 {
297 entryString = "ConfidenceMap";
298 }
299 else if (entry >= BufferPartType::Custom)
300 {
301 entryString = "Custom";
302 }
303
304 return entryString;
305}
306
307inline BufferPart::BufferPart(PEAK_BUFFER_PART_HANDLE bufferPartHandle, const std::weak_ptr<Buffer>& parentBuffer)
308 : m_backendHandle(bufferPartHandle)
309 , m_parentBuffer(parentBuffer)
310{}
311
313{
314 (void)PEAK_C_ABI_PREFIX PEAK_BufferPart_Destruct(m_backendHandle);
315}
316
318{
319 return ImageView(shared_from_this());
320}
321
323{
324 return ImageView(shared_from_this(), mode);
325}
326
327inline RawInformation BufferPart::Info(int32_t infoCommand) const
328{
329 return QueryRawInformationFromCInterfaceFunction([&](int32_t* dataType, uint8_t* buffer, size_t* bufferSize) {
331 m_backendHandle, infoCommand, dataType, buffer, bufferSize);
332 });
333}
334
335inline uint64_t BufferPart::SourceID() const
336{
337 return QueryNumericFromCInterfaceFunction<uint64_t>([&](uint64_t* sourceId) {
338 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetSourceID(m_backendHandle, sourceId);
339 });
340}
341
342inline void* BufferPart::BasePtr() const
343{
344 return QueryNumericFromCInterfaceFunction<void*>(
345 [&](void** basePtr) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetBasePtr(m_backendHandle, basePtr); });
346}
347
348inline size_t BufferPart::Size() const
349{
350 return QueryNumericFromCInterfaceFunction<size_t>(
351 [&](size_t* size) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetSize(m_backendHandle, size); });
352}
353
355{
356 return static_cast<BufferPartType>(
357 QueryNumericFromCInterfaceFunction<PEAK_BUFFER_PART_TYPE>([&](PEAK_BUFFER_PART_TYPE* type) {
358 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetType(m_backendHandle, type);
359 }));
360}
361
362inline uint64_t BufferPart::Format() const
363{
364 return QueryNumericFromCInterfaceFunction<uint64_t>(
365 [&](uint64_t* format) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetFormat(m_backendHandle, format); });
366}
367
368inline uint64_t BufferPart::FormatNamespace() const
369{
370 return QueryNumericFromCInterfaceFunction<uint64_t>([&](uint64_t* formatNamespace) {
371 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetFormatNamespace(m_backendHandle, formatNamespace);
372 });
373}
374
375inline size_t BufferPart::Width() const
376{
377 return QueryNumericFromCInterfaceFunction<size_t>(
378 [&](size_t* width) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetWidth(m_backendHandle, width); });
379}
380
381inline size_t BufferPart::Height() const
382{
383 return QueryNumericFromCInterfaceFunction<size_t>(
384 [&](size_t* height) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetHeight(m_backendHandle, height); });
385}
386
387inline size_t BufferPart::XOffset() const
388{
389 return QueryNumericFromCInterfaceFunction<size_t>(
390 [&](size_t* xOffset) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetXOffset(m_backendHandle, xOffset); });
391}
392
393inline size_t BufferPart::YOffset() const
394{
395 return QueryNumericFromCInterfaceFunction<size_t>(
396 [&](size_t* yOffset) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetYOffset(m_backendHandle, yOffset); });
397}
398
399inline size_t BufferPart::XPadding() const
400{
401 return QueryNumericFromCInterfaceFunction<size_t>([&](size_t* xPadding) {
402 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetXPadding(m_backendHandle, xPadding);
403 });
404}
405
407{
408 return QueryNumericFromCInterfaceFunction<size_t>([&](size_t* deliveredImageHeight) {
409 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetDeliveredImageHeight(m_backendHandle, deliveredImageHeight);
410 });
411}
412
413inline std::shared_ptr<Buffer> BufferPart::ParentBuffer() const
414{
415 return LockOrThrow(m_parentBuffer);
416}
417
418} /* namespace core */
419} /* namespace peak */
PEAK_COMMON_NO_DISCARD size_t XPadding() const
Returns the x padding.
Definition peak_buffer_part.hpp:399
PEAK_COMMON_NO_DISCARD BufferPartType Type() const
Returns the type.
Definition peak_buffer_part.hpp:354
PEAK_COMMON_NO_DISCARD uint64_t FormatNamespace() const
Returns the format namespace.
Definition peak_buffer_part.hpp:368
PEAK_COMMON_NO_DISCARD void * BasePtr() const
Returns the base pointer.
Definition peak_buffer_part.hpp:342
PEAK_COMMON_NO_DISCARD size_t DeliveredImageHeight() const
Returns the delivered image height.
Definition peak_buffer_part.hpp:406
PEAK_COMMON_NO_DISCARD size_t YOffset() const
Returns the y offset.
Definition peak_buffer_part.hpp:393
PEAK_COMMON_NO_DISCARD size_t Size() const
Returns the size in bytes.
Definition peak_buffer_part.hpp:348
PEAK_COMMON_NO_DISCARD uint64_t SourceID() const
Returns the source ID.
Definition peak_buffer_part.hpp:335
PEAK_COMMON_NO_DISCARD std::shared_ptr< Buffer > ParentBuffer() const
Returns the parent buffer.
Definition peak_buffer_part.hpp:413
PEAK_COMMON_NO_DISCARD size_t Height() const
Returns the height.
Definition peak_buffer_part.hpp:381
~BufferPart()
Definition peak_buffer_part.hpp:312
BufferPart & operator=(const BufferPart &other)=delete
PEAK_COMMON_NO_DISCARD RawInformation Info(int32_t infoCommand) const
Delivers information based on the given GenTL info command.
Definition peak_buffer_part.hpp:327
PEAK_COMMON_NO_DISCARD size_t XOffset() const
Returns the x offset.
Definition peak_buffer_part.hpp:387
PEAK_COMMON_NO_DISCARD ImageView ToImageView()
Create an ImageView from this buffer part.
Definition peak_buffer_part.hpp:317
PEAK_COMMON_NO_DISCARD size_t Width() const
Returns the width.
Definition peak_buffer_part.hpp:375
PEAK_COMMON_NO_DISCARD uint64_t Format() const
Returns the format.
Definition peak_buffer_part.hpp:362
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:83
BufferPartType
Data type of the buffer part.
Definition peak_buffer_part.hpp:34
@ PlaneBiPlanar3D
Definition peak_buffer_part.hpp:41
@ Image3D
Definition peak_buffer_part.hpp:40
@ PlaneTriPlanar2D
Definition peak_buffer_part.hpp:38
@ PlaneQuadPlanar2D
Definition peak_buffer_part.hpp:39
@ ConfidenceMap
Definition peak_buffer_part.hpp:44
@ Unknown
Definition peak_buffer_part.hpp:35
@ Custom
Definition peak_buffer_part.hpp:46
@ Image2D
Definition peak_buffer_part.hpp:36
@ PlaneTriPlanar3D
Definition peak_buffer_part.hpp:42
@ PlaneQuadPlanar3D
Definition peak_buffer_part.hpp:43
@ PlaneBiPlanar2D
Definition peak_buffer_part.hpp:37
@ Unknown
Definition peak_buffer.hpp:42
@ Custom
Definition peak_buffer.hpp:54
The "core" namespace contains the direct GenAPI and GenTL wrapper.
Definition peak_buffer.hpp:32
std::string ToString(BufferPayloadType entry)
Definition peak_buffer.hpp:635
MetadataExtractionMode
Controls how metadata is extracted when constructing an ImageView.
Definition peak_image_view.hpp:50
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_buffer.hpp:29
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:78
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:411
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_COMMON_NO_DISCARD
Definition peak_common_defines.h:89
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:13
The struct returned by all raw information functions.
Definition peak_common_structs.hpp:21