IDS peak genericC++ v1.9.0
Loading...
Searching...
No Matches
peak_buffer_part.hpp
Go to the documentation of this file.
1
11#pragma once
12
13
16#include <peak/dll_interface/peak_dll_interface_util.hpp>
17
18#include <cstddef>
19#include <cstdint>
20#include <memory>
21
22
23namespace peak
24{
25namespace core
26{
27
48
49class Buffer;
50
57{
58public:
59 BufferPart() = delete;
61 BufferPart(const BufferPart& other) = delete;
62 BufferPart& operator=(const BufferPart& other) = delete;
63 BufferPart(BufferPart&& other) = delete;
64 BufferPart& operator=(BufferPart&& other) = delete;
65
67 RawInformation Info(int32_t infoCommand) const;
68
78 uint64_t SourceID() const;
79
89 void* BasePtr() const;
90
100 size_t Size() const;
101
111 BufferPartType Type() const;
112
122 uint64_t Format() const;
123
133 uint64_t FormatNamespace() const;
134
144 size_t Width() const;
145
155 size_t Height() const;
156
166 size_t XOffset() const;
167
177 size_t YOffset() const;
178
188 size_t XPadding() const;
189
199 size_t DeliveredImageHeight() const;
200
210 std::shared_ptr<Buffer> ParentBuffer() const;
211
212private:
213 friend ClassCreator<BufferPart>;
214 BufferPart(PEAK_BUFFER_PART_HANDLE bufferPartHandle, const std::weak_ptr<Buffer>& parentBuffer);
215 PEAK_BUFFER_PART_HANDLE m_backendHandle;
216
217 std::weak_ptr<Buffer> m_parentBuffer;
218};
219
220} /* namespace core */
221} /* namespace peak */
222
223/* Implementation */
224namespace peak
225{
226namespace core
227{
228
229inline std::string ToString(BufferPartType entry)
230{
231 std::string entryString;
232
233 if (entry == BufferPartType::Unknown)
234 {
235 entryString = "Unknown";
236 }
237 else if (entry == BufferPartType::Image2D)
238 {
239 entryString = "Image2D";
240 }
241 else if (entry == BufferPartType::PlaneBiPlanar2D)
242 {
243 entryString = "PlaneBiPlanar2D";
244 }
245 else if (entry == BufferPartType::PlaneTriPlanar2D)
246 {
247 entryString = "PlaneTriPlanar2D";
248 }
249 else if (entry == BufferPartType::PlaneQuadPlanar2D)
250 {
251 entryString = "PlaneQuadPlanar2D";
252 }
253 else if (entry == BufferPartType::Image3D)
254 {
255 entryString = "Image3D";
256 }
257 else if (entry == BufferPartType::PlaneBiPlanar3D)
258 {
259 entryString = "PlaneBiPlanar3D";
260 }
261 else if (entry == BufferPartType::PlaneTriPlanar3D)
262 {
263 entryString = "PlaneTriPlanar3D";
264 }
265 else if (entry == BufferPartType::PlaneQuadPlanar3D)
266 {
267 entryString = "PlaneQuadPlanar3D";
268 }
269 else if (entry == BufferPartType::ConfidenceMap)
270 {
271 entryString = "ConfidenceMap";
272 }
273 else if (entry >= BufferPartType::Custom)
274 {
275 entryString = "Custom";
276 }
277
278 return entryString;
279}
280
281inline BufferPart::BufferPart(PEAK_BUFFER_PART_HANDLE bufferPartHandle, const std::weak_ptr<Buffer>& parentBuffer)
282 : m_backendHandle(bufferPartHandle)
283 , m_parentBuffer(parentBuffer)
284{}
285
287{
288 (void)PEAK_C_ABI_PREFIX PEAK_BufferPart_Destruct(m_backendHandle);
289}
290
291inline RawInformation BufferPart::Info(int32_t infoCommand) const
292{
293 return QueryRawInformationFromCInterfaceFunction([&](int32_t* dataType, uint8_t* buffer, size_t* bufferSize) {
295 m_backendHandle, infoCommand, dataType, buffer, bufferSize);
296 });
297}
298
299inline uint64_t BufferPart::SourceID() const
300{
301 return QueryNumericFromCInterfaceFunction<uint64_t>([&](uint64_t* sourceId) {
302 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetSourceID(m_backendHandle, sourceId);
303 });
304}
305
306inline void* BufferPart::BasePtr() const
307{
308 return QueryNumericFromCInterfaceFunction<void*>(
309 [&](void** basePtr) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetBasePtr(m_backendHandle, basePtr); });
310}
311
312inline size_t BufferPart::Size() const
313{
314 return QueryNumericFromCInterfaceFunction<size_t>(
315 [&](size_t* size) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetSize(m_backendHandle, size); });
316}
317
319{
320 return static_cast<BufferPartType>(
321 QueryNumericFromCInterfaceFunction<PEAK_BUFFER_PART_TYPE>([&](PEAK_BUFFER_PART_TYPE* type) {
322 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetType(m_backendHandle, type);
323 }));
324}
325
326inline uint64_t BufferPart::Format() const
327{
328 return QueryNumericFromCInterfaceFunction<uint64_t>(
329 [&](uint64_t* format) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetFormat(m_backendHandle, format); });
330}
331
332inline uint64_t BufferPart::FormatNamespace() const
333{
334 return QueryNumericFromCInterfaceFunction<uint64_t>([&](uint64_t* formatNamespace) {
335 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetFormatNamespace(m_backendHandle, formatNamespace);
336 });
337}
338
339inline size_t BufferPart::Width() const
340{
341 return QueryNumericFromCInterfaceFunction<size_t>(
342 [&](size_t* width) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetWidth(m_backendHandle, width); });
343}
344
345inline size_t BufferPart::Height() const
346{
347 return QueryNumericFromCInterfaceFunction<size_t>(
348 [&](size_t* height) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetHeight(m_backendHandle, height); });
349}
350
351inline size_t BufferPart::XOffset() const
352{
353 return QueryNumericFromCInterfaceFunction<size_t>(
354 [&](size_t* xOffset) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetXOffset(m_backendHandle, xOffset); });
355}
356
357inline size_t BufferPart::YOffset() const
358{
359 return QueryNumericFromCInterfaceFunction<size_t>(
360 [&](size_t* yOffset) { return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetYOffset(m_backendHandle, yOffset); });
361}
362
363inline size_t BufferPart::XPadding() const
364{
365 return QueryNumericFromCInterfaceFunction<size_t>([&](size_t* xPadding) {
366 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetXPadding(m_backendHandle, xPadding);
367 });
368}
369
371{
372 return QueryNumericFromCInterfaceFunction<size_t>([&](size_t* deliveredImageHeight) {
373 return PEAK_C_ABI_PREFIX PEAK_BufferPart_GetDeliveredImageHeight(m_backendHandle, deliveredImageHeight);
374 });
375}
376
377inline std::shared_ptr<Buffer> BufferPart::ParentBuffer() const
378{
379 return LockOrThrow(m_parentBuffer);
380}
381
382} /* namespace core */
383} /* namespace peak */
Represents a buffer part.
Definition peak_buffer_part.hpp:57
size_t XPadding() const
Returns the x padding.
Definition peak_buffer_part.hpp:363
BufferPartType Type() const
Returns the type.
Definition peak_buffer_part.hpp:318
uint64_t FormatNamespace() const
Returns the format namespace.
Definition peak_buffer_part.hpp:332
void * BasePtr() const
Returns the base pointer.
Definition peak_buffer_part.hpp:306
size_t DeliveredImageHeight() const
Returns the delivered image height.
Definition peak_buffer_part.hpp:370
size_t YOffset() const
Returns the y offset.
Definition peak_buffer_part.hpp:357
size_t Size() const
Returns the size in bytes.
Definition peak_buffer_part.hpp:312
uint64_t SourceID() const
Returns the source ID.
Definition peak_buffer_part.hpp:299
std::shared_ptr< Buffer > ParentBuffer() const
Returns the parent buffer.
Definition peak_buffer_part.hpp:377
size_t Height() const
Returns the height.
Definition peak_buffer_part.hpp:345
~BufferPart()
Definition peak_buffer_part.hpp:286
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:291
size_t XOffset() const
Returns the x offset.
Definition peak_buffer_part.hpp:351
size_t Width() const
Returns the width.
Definition peak_buffer_part.hpp:339
uint64_t Format() const
Returns the format.
Definition peak_buffer_part.hpp:326
BufferPart(BufferPart &&other)=delete
BufferPart(const BufferPart &other)=delete
BufferPart & operator=(BufferPart &&other)=delete
BufferPartType
Data type of the buffer part.
Definition peak_buffer_part.hpp:34
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:63
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:396
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