IDS peak genericC++ v1.12.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
49
50class Buffer;
51
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
73
75 RawInformation Info(int32_t infoCommand) const;
76
86 uint64_t SourceID() const;
87
97 void* BasePtr() const;
98
108 size_t Size() const;
109
119 BufferPartType Type() const;
120
130 uint64_t Format() const;
131
141 uint64_t FormatNamespace() const;
142
152 size_t Width() const;
153
163 size_t Height() const;
164
174 size_t XOffset() const;
175
185 size_t YOffset() const;
186
196 size_t XPadding() const;
197
207 size_t DeliveredImageHeight() const;
208
218 std::shared_ptr<Buffer> ParentBuffer() const;
219
220private:
221 friend ClassCreator<BufferPart>;
222 BufferPart(PEAK_BUFFER_PART_HANDLE bufferPartHandle, const std::weak_ptr<Buffer>& parentBuffer);
223 PEAK_BUFFER_PART_HANDLE m_backendHandle;
224
225 std::weak_ptr<Buffer> m_parentBuffer;
226};
227
228} /* namespace core */
229} /* namespace peak */
230
231/* Implementation */
232namespace peak
233{
234namespace core
235{
236
237inline std::string ToString(BufferPartType entry)
238{
239 std::string entryString;
240
241 if (entry == BufferPartType::Unknown)
242 {
243 entryString = "Unknown";
244 }
245 else if (entry == BufferPartType::Image2D)
246 {
247 entryString = "Image2D";
248 }
249 else if (entry == BufferPartType::PlaneBiPlanar2D)
250 {
251 entryString = "PlaneBiPlanar2D";
252 }
253 else if (entry == BufferPartType::PlaneTriPlanar2D)
254 {
255 entryString = "PlaneTriPlanar2D";
256 }
257 else if (entry == BufferPartType::PlaneQuadPlanar2D)
258 {
259 entryString = "PlaneQuadPlanar2D";
260 }
261 else if (entry == BufferPartType::Image3D)
262 {
263 entryString = "Image3D";
264 }
265 else if (entry == BufferPartType::PlaneBiPlanar3D)
266 {
267 entryString = "PlaneBiPlanar3D";
268 }
269 else if (entry == BufferPartType::PlaneTriPlanar3D)
270 {
271 entryString = "PlaneTriPlanar3D";
272 }
273 else if (entry == BufferPartType::PlaneQuadPlanar3D)
274 {
275 entryString = "PlaneQuadPlanar3D";
276 }
277 else if (entry == BufferPartType::ConfidenceMap)
278 {
279 entryString = "ConfidenceMap";
280 }
281 else if (entry >= BufferPartType::Custom)
282 {
283 entryString = "Custom";
284 }
285
286 return entryString;
287}
288
289inline BufferPart::BufferPart(PEAK_BUFFER_PART_HANDLE bufferPartHandle, const std::weak_ptr<Buffer>& parentBuffer)
290 : m_backendHandle(bufferPartHandle)
291 , m_parentBuffer(parentBuffer)
292{}
293
295{
296 (void)PEAK_C_ABI_PREFIX PEAK_BufferPart_Destruct(m_backendHandle);
297}
298
300{
301 return ImageView(shared_from_this());
302}
303
304inline RawInformation BufferPart::Info(int32_t infoCommand) const
305{
306 return QueryRawInformationFromCInterfaceFunction([&](int32_t* dataType, uint8_t* buffer, size_t* bufferSize) {
308 m_backendHandle, infoCommand, dataType, buffer, bufferSize);
309 });
310}
311
312inline uint64_t BufferPart::SourceID() const
313{
314 return QueryNumericFromCInterfaceFunction<uint64_t>([&](uint64_t* sourceId) {
315 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetSourceID(m_backendHandle, sourceId);
316 });
317}
318
319inline void* BufferPart::BasePtr() const
320{
321 return QueryNumericFromCInterfaceFunction<void*>(
322 [&](void** basePtr) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetBasePtr(m_backendHandle, basePtr); });
323}
324
325inline size_t BufferPart::Size() const
326{
327 return QueryNumericFromCInterfaceFunction<size_t>(
328 [&](size_t* size) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetSize(m_backendHandle, size); });
329}
330
332{
333 return static_cast<BufferPartType>(
334 QueryNumericFromCInterfaceFunction<PEAK_BUFFER_PART_TYPE>([&](PEAK_BUFFER_PART_TYPE* type) {
335 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetType(m_backendHandle, type);
336 }));
337}
338
339inline uint64_t BufferPart::Format() const
340{
341 return QueryNumericFromCInterfaceFunction<uint64_t>(
342 [&](uint64_t* format) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetFormat(m_backendHandle, format); });
343}
344
345inline uint64_t BufferPart::FormatNamespace() const
346{
347 return QueryNumericFromCInterfaceFunction<uint64_t>([&](uint64_t* formatNamespace) {
348 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetFormatNamespace(m_backendHandle, formatNamespace);
349 });
350}
351
352inline size_t BufferPart::Width() const
353{
354 return QueryNumericFromCInterfaceFunction<size_t>(
355 [&](size_t* width) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetWidth(m_backendHandle, width); });
356}
357
358inline size_t BufferPart::Height() const
359{
360 return QueryNumericFromCInterfaceFunction<size_t>(
361 [&](size_t* height) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetHeight(m_backendHandle, height); });
362}
363
364inline size_t BufferPart::XOffset() const
365{
366 return QueryNumericFromCInterfaceFunction<size_t>(
367 [&](size_t* xOffset) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetXOffset(m_backendHandle, xOffset); });
368}
369
370inline size_t BufferPart::YOffset() const
371{
372 return QueryNumericFromCInterfaceFunction<size_t>(
373 [&](size_t* yOffset) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetYOffset(m_backendHandle, yOffset); });
374}
375
376inline size_t BufferPart::XPadding() const
377{
378 return QueryNumericFromCInterfaceFunction<size_t>([&](size_t* xPadding) {
379 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetXPadding(m_backendHandle, xPadding);
380 });
381}
382
384{
385 return QueryNumericFromCInterfaceFunction<size_t>([&](size_t* deliveredImageHeight) {
386 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetDeliveredImageHeight(m_backendHandle, deliveredImageHeight);
387 });
388}
389
390inline std::shared_ptr<Buffer> BufferPart::ParentBuffer() const
391{
392 return LockOrThrow(m_parentBuffer);
393}
394
395} /* namespace core */
396} /* namespace peak */
size_t XPadding() const
Returns the x padding.
Definition peak_buffer_part.hpp:376
BufferPartType Type() const
Returns the type.
Definition peak_buffer_part.hpp:331
uint64_t FormatNamespace() const
Returns the format namespace.
Definition peak_buffer_part.hpp:345
void * BasePtr() const
Returns the base pointer.
Definition peak_buffer_part.hpp:319
size_t DeliveredImageHeight() const
Returns the delivered image height.
Definition peak_buffer_part.hpp:383
size_t YOffset() const
Returns the y offset.
Definition peak_buffer_part.hpp:370
size_t Size() const
Returns the size in bytes.
Definition peak_buffer_part.hpp:325
uint64_t SourceID() const
Returns the source ID.
Definition peak_buffer_part.hpp:312
std::shared_ptr< Buffer > ParentBuffer() const
Returns the parent buffer.
Definition peak_buffer_part.hpp:390
size_t Height() const
Returns the height.
Definition peak_buffer_part.hpp:358
~BufferPart()
Definition peak_buffer_part.hpp:294
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:304
size_t XOffset() const
Returns the x offset.
Definition peak_buffer_part.hpp:364
ImageView ToImageView()
Create an ImageView object from this buffer part.
Definition peak_buffer_part.hpp:299
size_t Width() const
Returns the width.
Definition peak_buffer_part.hpp:352
uint64_t Format() const
Returns the format.
Definition peak_buffer_part.hpp:339
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:44
The "core" namespace contains the direct GenAPI and GenTL wrapper.
Definition peak_buffer.hpp:34
BufferPartType
Data type of the buffer part.
Definition peak_buffer_part.hpp:35
@ PlaneBiPlanar3D
Definition peak_buffer_part.hpp:42
@ Image3D
Definition peak_buffer_part.hpp:41
@ PlaneTriPlanar2D
Definition peak_buffer_part.hpp:39
@ PlaneQuadPlanar2D
Definition peak_buffer_part.hpp:40
@ ConfidenceMap
Definition peak_buffer_part.hpp:45
@ Unknown
Definition peak_buffer_part.hpp:36
@ Custom
Definition peak_buffer_part.hpp:47
@ Image2D
Definition peak_buffer_part.hpp:37
@ PlaneTriPlanar3D
Definition peak_buffer_part.hpp:43
@ PlaneQuadPlanar3D
Definition peak_buffer_part.hpp:44
@ PlaneBiPlanar2D
Definition peak_buffer_part.hpp:38
std::string ToString(BufferPayloadType entry)
Definition peak_buffer.hpp:554
@ Unknown
Definition peak_buffer.hpp:43
@ Custom
Definition peak_buffer.hpp:55
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_dynamic_loader.h:33
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