16#ifndef AEONGUI_SKIACANVAS_H
17#define AEONGUI_SKIACANVAS_H
21#include <include/core/SkRefCnt.h>
22#include "aeongui/Canvas.hpp"
43 DLL
SkiaCanvas ( uint32_t aWidth, uint32_t aHeight );
45 DLL
void ResizeViewport ( uint32_t aWidth, uint32_t aHeight ) final;
46 DLL const uint8_t*
GetPixels() const final;
50 DLL
void Clear() final;
51 DLL
void Draw ( const
Path& aPath ) final;
52 DLL
void DrawImage ( const uint8_t* aPixels,
60 double aOpacity ) final;
61 DLL
void DrawText ( const std::
string& aText,
double aX,
double aY,
62 const std::
string& aFontFamily,
double aFontSize,
63 int aFontWeight,
int aFontStyle ) final;
65 const std::
string& aFontFamily,
double aFontSize,
66 int aFontWeight,
int aFontStyle ) const final;
70 const std::
string& aFontFamily,
double aFontSize,
71 int aFontWeight,
int aFontStyle,
72 bool aReverse = false,
bool aClosed = false ) final;
88 DLL
void Save() final;
94 double aStdDeviationX,
double aStdDeviationY,
95 const
Color& aFloodColor,
double aFloodOpacity ) final;
96 DLL uint8_t
PickAtPoint (
double aX,
double aY ) const final;
98 DLL
void SetClipRect (
double aX,
double aY,
double aWidth,
double aHeight ) final;
101 void InitSurfaces ( uint32_t aWidth, uint32_t aHeight );
103 sk_sp<SkSurface> mSurface;
106 std::vector<uint8_t> mPickPixels;
110 mutable std::vector<uint8_t> mPixelCache;
111 mutable bool mPixelCacheDirty{
true};
113 ColorAttr mFillColor{};
114 ColorAttr mStrokeColor{};
115 double mStrokeWidth{1};
116 double mStrokeOpacity{1};
117 double mFillOpacity{1};
122 sk_sp<SkSurface> surface;
125 std::vector<SavedLayer> mGroupStack;
Abstract 2D rendering surface.
Definition Canvas.hpp:40
2x3 affine transformation matrix.
Definition Matrix2x3.hpp:37
Abstract base class for renderable path data.
Definition Path.hpp:40
SVG preserveAspectRatio attribute.
Definition Attribute.hpp:44
uint8_t PickAtPoint(double aX, double aY) const final
Read the pick ID at the given viewport coordinates.
Definition SkiaCanvas.cpp:966
size_t GetHeight() const final
Get the height of the canvas in pixels.
Definition SkiaCanvas.cpp:95
void DrawText(const std::string &aText, double aX, double aY, const std::string &aFontFamily, double aFontSize, int aFontWeight, int aFontStyle) final
Definition SkiaCanvas.cpp:515
void DrawTextOnPath(const std::string &aText, const Path &aPath, double aStartOffset, const std::string &aFontFamily, double aFontSize, int aFontWeight, int aFontStyle, bool aReverse=false, bool aClosed=false) final
Definition SkiaCanvas.cpp:624
void Draw(const Path &aPath) final
Draw a path using the current fill and stroke settings.
Definition SkiaCanvas.cpp:317
void SetViewBox(const ViewBox &aViewBox, const PreserveAspectRatio &aPreserveAspectRatio) final
Set the SVG viewBox and preserveAspectRatio.
Definition SkiaCanvas.cpp:773
size_t GetStride() const final
Get the stride (bytes per row) of the pixel buffer.
Definition SkiaCanvas.cpp:99
std::unique_ptr< Path > CreatePath() const final
Create a new Path object suitable for this canvas backend.
Definition SkiaCanvas.cpp:997
void ResizeViewport(uint32_t aWidth, uint32_t aHeight) final
Resize the rendering viewport.
Definition SkiaCanvas.cpp:65
void SetFillColor(const ColorAttr &aColor) final
Set the fill color.
Definition SkiaCanvas.cpp:113
double MeasureText(const std::string &aText, const std::string &aFontFamily, double aFontSize, int aFontWeight, int aFontStyle) const final
Definition SkiaCanvas.cpp:594
const ColorAttr & GetStrokeColor() const final
Get the current stroke color.
Definition SkiaCanvas.cpp:125
void DrawImage(const uint8_t *aPixels, size_t aImageWidth, size_t aImageHeight, size_t aImageStride, double aX, double aY, double aWidth, double aHeight, double aOpacity) final
Draw a raster image.
Definition SkiaCanvas.cpp:475
SkiaCanvas()
Construct an empty (zero-size) SkiaCanvas.
void ApplyDropShadow(double aDx, double aDy, double aStdDeviationX, double aStdDeviationY, const Color &aFloodColor, double aFloodOpacity) final
Apply a drop-shadow filter to the current group content.
Definition SkiaCanvas.cpp:914
void Save() final
Save the current graphics state (transform, clipping, etc.).
Definition SkiaCanvas.cpp:850
size_t GetWidth() const final
Get the width of the canvas in pixels.
Definition SkiaCanvas.cpp:91
void * GetNativeSurface() const final
Get the native rendering surface handle.
Definition SkiaCanvas.cpp:866
void SetStrokeWidth(double aWidth) final
Set the stroke width.
Definition SkiaCanvas.cpp:129
double GetStrokeWidth() const final
Get the current stroke width.
Definition SkiaCanvas.cpp:133
void SetTransform(const Matrix2x3 &aMatrix) final
Replace the current transformation matrix.
Definition SkiaCanvas.cpp:824
void SetStrokeOpacity(double aWidth) final
Set the stroke opacity.
Definition SkiaCanvas.cpp:137
void Clear() final
Clear the canvas to transparent.
Definition SkiaCanvas.cpp:104
void ResetPick() final
Clear the pick buffer and reset for a new frame.
Definition SkiaCanvas.cpp:977
const ColorAttr & GetFillColor() const final
Get the current fill color.
Definition SkiaCanvas.cpp:117
void SetClipRect(double aX, double aY, double aWidth, double aHeight) final
Set a device-space clip rectangle on both render and pick surfaces.
Definition SkiaCanvas.cpp:983
const uint8_t * GetPixels() const final
Get a pointer to the raw pixel data.
Definition SkiaCanvas.cpp:74
double GetStrokeOpacity() const final
Get the current stroke opacity.
Definition SkiaCanvas.cpp:141
void SetOpacity(double aWidth) final
Set the global opacity.
Definition SkiaCanvas.cpp:153
void PopGroup() final
End an offscreen group and composite back.
Definition SkiaCanvas.cpp:890
void SetStrokeColor(const ColorAttr &aColor) final
Set the stroke color.
Definition SkiaCanvas.cpp:121
void SetFillOpacity(double aWidth) final
Set the fill opacity.
Definition SkiaCanvas.cpp:145
void Restore() final
Restore the previously saved graphics state.
Definition SkiaCanvas.cpp:858
double GetFillOpacity() const final
Get the current fill opacity.
Definition SkiaCanvas.cpp:149
void PushGroup() final
Begin an offscreen group for filter/compositing.
Definition SkiaCanvas.cpp:871
void Transform(const Matrix2x3 &aMatrix) final
Pre-multiply the current transformation matrix.
Definition SkiaCanvas.cpp:837
double GetOpacity() const final
Get the current global opacity.
Definition SkiaCanvas.cpp:157
SVG viewBox attribute value.
Definition Attribute.hpp:31
Pixel Color Union. The Color union allows access to each unsigned 8 bit RGBA color component individu...
Definition Color.hpp:185