32#include <Pt/Gfx/Api.h>
33#include <Pt/Gfx/ImageFormat.h>
34#include <Pt/Gfx/View.h>
35#include <Pt/Gfx/PixelView.h>
36#include <Pt/Gfx/LineView.h>
37#include <Pt/Gfx/ImageTraits.h>
81template <
typename FormatT,
typename TraitsT>
85 typedef FormatT Format;
86 typedef TraitsT Traits;
91 explicit BasicImage(
const Format& format = FormatT::get() );
95 BasicImage(Pt::ssize_t width, Pt::ssize_t height, Pt::ssize_t padding,
96 const Format& format = FormatT::get() );
101 const Format& format = FormatT::get() );
106 Pt::ssize_t padding,
const Format& format = FormatT::get() );
111 const Format& format = FormatT::get() );
129 const Format& format()
const
132 Pt::ssize_t padding()
const
133 {
return stride() - width() * pixelStride(); }
137 void reset(Pt::ssize_t width, Pt::ssize_t height,
138 Pt::ssize_t padding,
const Format& format);
140 void reset(Pt::ssize_t width, Pt::ssize_t height,
141 const Format& format);
145 void reset(Pt::ssize_t width, Pt::ssize_t height,
146 Pt::ssize_t padding);
148 void reset(Pt::ssize_t width, Pt::ssize_t height);
153 Pt::ssize_t padding,
const Format& format);
156 const Format& format);
161 Pt::ssize_t padding);
169 Pt::ssize_t pixelStride()
const;
171 std::size_t size()
const;
174 std::unique_ptr<FormatT> _format;
175 std::vector<Pt::uint8_t> _buffer;
187template <
typename FormatT,
typename TraitsT>
188class BasicConstImage :
public ViewBase
191 typedef FormatT Format;
192 typedef TraitsT Traits;
195 explicit BasicConstImage(
const Format& format = FormatT::get() );
197 BasicConstImage(
const Pt::uint8_t* data, Pt::ssize_t width, Pt::ssize_t height,
198 Pt::ssize_t padding,
const Format& format = FormatT::get() );
200 BasicConstImage(
const Pt::uint8_t* data, Pt::ssize_t width, Pt::ssize_t height,
201 const Format& format = FormatT::get() );
205 BasicConstImage(
const BasicConstImage& image);
207 virtual ~BasicConstImage();
212 const Format& format()
const
215 Pt::ssize_t padding()
const
216 {
return stride() - width() * pixelStride(); }
218 void reset(
const BasicConstImage& image);
225 Pt::ssize_t padding,
const Format& format);
227 void reset(
const Pt::uint8_t* data, Pt::ssize_t width, Pt::ssize_t height,
228 const Format& format);
233 Pt::ssize_t padding);
235 void reset(
const Pt::uint8_t* data, Pt::ssize_t width, Pt::ssize_t height);
239 Pt::ssize_t pixelStride()
const;
241 std::size_t size()
const;
244 std::unique_ptr<FormatT> _format;
254#include <Pt/Gfx/Image.hpp>
void reset(const Pt::uint8_t *data, Pt::ssize_t width, Pt::ssize_t height, Pt::ssize_t padding)
Reset to new data, keep existing format.
void reset(const Pt::uint8_t *data, Pt::ssize_t width, Pt::ssize_t height, Pt::ssize_t padding, const Format &format)
Reset to new data.
Image that owns or wraps pixel data.
Definition Image.h:83
void reset(Pt::ssize_t width, Pt::ssize_t height, Pt::ssize_t padding, const Format &format)
Reset to new size.
BasicImage(Pt::ssize_t width, Pt::ssize_t height, Pt::ssize_t padding, const Format &format=FormatT::get())
Constructs an image of the given size with row padding.
void reset(Pt::uint8_t *data, Pt::ssize_t width, Pt::ssize_t height, Pt::ssize_t padding)
Reset to new data, keep existing format.
BasicImage(const Format &format=FormatT::get())
Constructs an empty image.
void reset(Pt::uint8_t *data, Pt::ssize_t width, Pt::ssize_t height, Pt::ssize_t padding, const Format &format)
Reset to new data.
BasicImage(Pt::uint8_t *data, Pt::ssize_t width, Pt::ssize_t height, const Format &format=FormatT::get())
Constructs an image over external pixel data.
void reset(Pt::ssize_t width, Pt::ssize_t height, Pt::ssize_t padding)
Reset to new size, keep existing format.
void clear()
Clears the image.
virtual ~BasicImage()
Destructor.
BasicImage(Pt::ssize_t width, Pt::ssize_t height, const Format &format=FormatT::get())
Constructs an image of the given size.
BasicImage(Pt::uint8_t *data, Pt::ssize_t width, Pt::ssize_t height, Pt::ssize_t padding, const Format &format=FormatT::get())
Constructs an image over external pixel data with row padding.
BasicImage(const BasicImage &image)
Copy constructor.
uint_type uint8_t
Unsigned 8-bit integer type.
Definition Api-Types.h:24
Graphics and imaging services.
Definition Api-Argb32Image.h:12
Core module.
Definition Allocator.h:33