IDS peak genericC++ v1.12.0
Loading...
Searching...
No Matches
peak_image_view.hpp
Go to the documentation of this file.
1
10
11#pragma once
12
17
18#include <memory>
19
23namespace peak
24{
25namespace core
26{
27class Buffer;
28class BufferPart;
29
30
44{
45public:
46 explicit ImageView(const std::shared_ptr<peak::core::Buffer>& buffer);
47
48 explicit ImageView(const std::shared_ptr<core::BufferPart>& part);
49
56 PEAK_COMMON_NO_DISCARD const uint8_t* GetData() const override;
57
64 PEAK_COMMON_NO_DISCARD uint8_t* GetData() override;
65
72 PEAK_COMMON_NO_DISCARD std::size_t GetSizeInBytes() const override;
73
80
87
94
100 PEAK_COMMON_NO_DISCARD uint32_t GetWidth() const override;
101
107 PEAK_COMMON_NO_DISCARD uint32_t GetHeight() const override;
108
114 PEAK_COMMON_NO_DISCARD size_t GetBitsPerPixel() const override;
115
121 PEAK_COMMON_NO_DISCARD size_t GetBytesPerLine() const override;
122
128 PEAK_COMMON_NO_DISCARD std::shared_ptr<peak::common::Metadata> GetMetadata() override;
129
135 PEAK_COMMON_NO_DISCARD std::shared_ptr<const peak::common::Metadata> GetMetadata() const override;
136
137private:
138 struct ExtractedPayload
139 {
140 peak::common::Size m_size;
141 peak::common::PixelFormat m_pixelFormat{};
142 uint8_t* m_rawData{};
143 size_t m_sizeInBytes{};
144 };
145
146 static ExtractedPayload ExtractPayloadTypeImage(const std::shared_ptr<peak::core::Buffer>& buffer);
147 static ExtractedPayload ExtractPayloadTypeChunk(const std::shared_ptr<peak::core::Buffer>& buffer);
148 static ExtractedPayload ExtractPayload(const std::shared_ptr<peak::core::Buffer>& buffer);
149 static ExtractedPayload ExtractPayloadFromBufferPart(const std::shared_ptr<core::BufferPart>& part);
150 explicit ImageView(const ExtractedPayload& payload);
151 std::shared_ptr<peak::common::Metadata> m_metadata;
152 const ExtractedPayload m_payload;
153};
154
155} // namespace core
156} // namespace peak
Interface for viewing image pixel data from arbitrary sources.
Definition peak_common_iimageview.hpp:42
Provides information and utility functions for pixel formats.
Definition peak_common_pixel_format.hpp:141
Represents a GenTL buffer module.
Definition peak_buffer.hpp:84
Represents a buffer part.
Definition peak_buffer_part.hpp:58
PEAK_COMMON_NO_DISCARD uint32_t GetHeight() const override
Height of the image in pixels.
Definition peak_image_view_impl.hpp:252
PEAK_COMMON_NO_DISCARD std::size_t GetSizeInBytes() const override
Size of the image in bytes.
Definition peak_image_view_impl.hpp:227
PEAK_COMMON_NO_DISCARD size_t GetBytesPerLine() const override
The amount of bytes per line.
Definition peak_image_view_impl.hpp:262
PEAK_COMMON_NO_DISCARD peak::common::PixelFormatInfo GetPixelFormatInfo() const override
Information object for the PixelFormat of the contained image.
Definition peak_image_view_impl.hpp:237
PEAK_COMMON_NO_DISCARD size_t GetBitsPerPixel() const override
The amount of bits in one pixel.
Definition peak_image_view_impl.hpp:257
PEAK_COMMON_NO_DISCARD uint32_t GetWidth() const override
Width of the image in pixels.
Definition peak_image_view_impl.hpp:247
PEAK_COMMON_NO_DISCARD const uint8_t * GetData() const override
Get pointer to the first byte of the image (read-only).
Definition peak_image_view_impl.hpp:217
PEAK_COMMON_NO_DISCARD peak::common::PixelFormat GetPixelFormat() const override
PixelFormat of the contained image.
Definition peak_image_view_impl.hpp:232
PEAK_COMMON_NO_DISCARD peak::common::Size GetSize() const override
Get the dimensions of the image. I.e. Width, Height, etc.
Definition peak_image_view_impl.hpp:242
ImageView(const std::shared_ptr< peak::core::Buffer > &buffer)
Definition peak_image_view_impl.hpp:38
PEAK_COMMON_NO_DISCARD std::shared_ptr< peak::common::Metadata > GetMetadata() override
The metadata object belonging to the image.
Definition peak_image_view_impl.hpp:269
#define PEAK_COMMON_NO_DISCARD
Compatability macro for the nodiscard attribute.
Definition peak_common_defines.hpp:91
detail::SizeT< uint32_t > Size
Size with unsigned 32-bit integer dimensions.
Definition peak_common_size.hpp:273
PixelFormat
Enum listing all supported pixel formats and their internal IDs.
Definition peak_common_pixel_format.hpp:45
The "core" namespace contains the direct GenAPI and GenTL wrapper.
Definition peak_buffer.hpp:34
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_dynamic_loader.h:33
Enum holding the possible pixel format names.