236 return d->pixelFormat();
246 return d->createPixel(comps, compCount);
255 return d->createPixel(&
c1, 1);
266 return d->createPixel(data, 2);
278 return d->createPixel(data, 3);
291 return d->createPixel(data, 4);
356 return d->drawLines(
pixel, &line, 1);
370 return d->drawLines(
pixel, &line, 1);
379 return d->fill(
pixel);
Raster image with pixel format, planes, and metadata.
Definition image.h:48
Dynamic array container wrapping std::vector.
Definition list.h:40
size_t size() const noexcept
Returns the number of elements in the list.
Definition list.h:301
T * data() noexcept
Returns a pointer to the underlying contiguous storage.
Definition list.h:286
Abstract implementation backend for PaintEngine.
Definition paintengine.h:51
virtual bool fill(const Pixel &pixel) const
Fills the entire surface with a single pixel value.
virtual size_t drawRect(const Pixel &pixel, const Rect< int32_t > &rect) const
Draws a rectangle outline.
virtual size_t drawLines(const Pixel &pixel, const Line2Di32 *lines, size_t count) const
Draws a set of line segments onto the surface.
const PixelFormat * pixelFormat() const
Returns the pixel format used by this implementation.
Definition paintengine.h:61
const PixelFormat * _pixelFormat
Pixel format for this implementation.
Definition paintengine.h:209
virtual bool blit(const Point2Di32 &destTopLeft, const Image &src, const Point2Di32 &srcTopLeft, const Size2Du32 &srcSize) const
Blits a rectangular region from a source image onto the surface.
virtual size_t drawEllipse(const Pixel &pixel, const Point2Di32 ¢er, const Size2Du32 &size) const
Draws an ellipse outline.
virtual Pixel createPixel(const uint16_t *comps, size_t compCount) const
Creates a Pixel value from component values.
virtual size_t drawPoints(const Pixel &pixel, const Point2Di32 *points, size_t pointCount) const
Draws a set of points onto the surface.
virtual size_t fillRect(const Pixel &pixel, const Rect< int32_t > &rect) const
Fills a rectangle with a solid color.
virtual size_t compositePoints(const Pixel &pixel, const Point2Di32 *points, const float *alphas, size_t pointCount) const
Composites a set of points onto the surface with per-point alpha.
virtual ~Impl()
Virtual destructor.
virtual size_t fillEllipse(const Pixel &pixel, const Point2Di32 ¢er, const Size2Du32 &size) const
Fills an ellipse with a solid color.
virtual size_t drawCircle(const Pixel &pixel, const Point2Di32 ¢er, int radius) const
Draws a circle outline.
virtual size_t fillCircle(const Pixel &pixel, const Point2Di32 ¢er, int radius) const
Fills a circle with a solid color.
2D drawing engine for rendering primitives onto images.
Definition paintengine.h:30
size_t fillCircle(const Pixel &pixel, const Point2Di32 ¢er, int radius) const
Fills a circle with a solid color.
Definition paintengine.h:420
Pixel createPixel(const uint16_t *comps, size_t compCount) const
Creates a Pixel from an array of component values.
Definition paintengine.h:245
size_t compositePoints(const Pixel &pixel, const PointList &points, const AlphaList &alphas) const
Composites points from lists onto the surface with per-point alpha.
Definition paintengine.h:334
PaintEngine(Impl *impl)
Constructs a PaintEngine that takes ownership of the given Impl.
Definition paintengine.h:229
Pixel createPixel(uint16_t c1, uint16_t c2, uint16_t c3, uint16_t c4) const
Creates a Pixel from four component values.
Definition paintengine.h:289
size_t drawRect(const Pixel &pixel, const Rect< int32_t > &rect) const
Draws a rectangle outline.
Definition paintengine.h:388
size_t drawLine(const Pixel &pixel, const Line2Di32 &line) const
Draws a single line segment onto the surface.
Definition paintengine.h:355
size_t fillEllipse(const Pixel &pixel, const Point2Di32 ¢er, const Size2Du32 &size) const
Fills an ellipse with a solid color.
Definition paintengine.h:442
Pixel createPixel(uint16_t c1, uint16_t c2) const
Creates a Pixel from two component values.
Definition paintengine.h:264
size_t drawPoints(const Pixel &pixel, const PointList &points) const
Draws points from a PointList onto the surface.
Definition paintengine.h:311
Pixel createPixel(uint16_t c1, uint16_t c2, uint16_t c3) const
Creates a Pixel from three component values.
Definition paintengine.h:276
size_t drawPoints(const Pixel &pixel, const Point2Di32 *points, size_t pointCount) const
Draws points onto the surface.
Definition paintengine.h:301
const PixelFormat * pixelFormat() const
Returns the pixel format of the underlying implementation.
Definition paintengine.h:235
size_t compositePoints(const Pixel &pixel, const Point2Di32 *points, const float *alphas, size_t pointCount) const
Composites points onto the surface with per-point alpha.
Definition paintengine.h:323
Pixel createPixel(uint16_t c1) const
Creates a Pixel from a single component value.
Definition paintengine.h:254
size_t drawLine(const Pixel &pixel, int x1, int y1, int x2, int y2) const
Draws a single line segment specified by endpoint coordinates.
Definition paintengine.h:368
size_t drawCircle(const Pixel &pixel, const Point2Di32 ¢er, int radius) const
Draws a circle outline.
Definition paintengine.h:409
bool fill(const Pixel &pixel)
Fills the entire surface with a single pixel value.
Definition paintengine.h:378
size_t fillRect(const Pixel &pixel, const Rect< int32_t > &rect) const
Fills a rectangle with a solid color.
Definition paintengine.h:398
size_t drawLines(const Pixel &pixel, const Line2Di32 *lines, size_t lineCount) const
Draws multiple line segments onto the surface.
Definition paintengine.h:345
static PointList plotLine(int x1, int y1, int x2, int y2)
Plots a line using Bresenham's algorithm.
PaintEngine()
Constructs a PaintEngine with a default (no-op) implementation.
Definition paintengine.h:223
size_t drawEllipse(const Pixel &pixel, const Point2Di32 ¢er, const Size2Du32 &size) const
Draws an ellipse outline.
Definition paintengine.h:431
bool blit(const Point2Di32 &destTopLeft, const Image &src, const Point2Di32 &srcTopLeft=Point2Di32(0, 0), const Size2Du32 &srcSize=Size2Du32()) const
Blits a rectangular region from a source image onto the surface.
Definition paintengine.h:454
A smart pointer class with reference counting and optional copy-on-write semantics.
Definition sharedptr.h:252
#define PROMEKI_SHARED(BASE)
Macro to simplify making a base object into a native shared object.
Definition sharedptr.h:44
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19
Point< int32_t, 2 > Point2Di32
2D point with int32_t components.
Definition point.h:275
Size2DTemplate< uint32_t > Size2Du32
2D size with uint32_t components.
Definition size2d.h:107
TextStream & center(TextStream &s)
Sets field alignment to Center.
Definition textstream.h:457