16 #define TVG_API __declspec(dllexport)
18 #define TVG_API __declspec(dllimport)
20 #elif (defined(__SUNPRO_C) || defined(__SUNPRO_CC))
21 #define TVG_API __global
23 #if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__INTEL_COMPILER)
24 #define TVG_API __attribute__ ((visibility("default")))
38 #define TVG_DEPRECATED __declspec(deprecated)
39 #elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
40 #define TVG_DEPRECATED __attribute__ ((__deprecated__))
42 #define TVG_DEPRECATED
45 #define _TVG_DECLARE_PRIVATE(A) \
49 A(const A&) = delete; \
50 const A& operator=(const A&) = delete; \
53 #define _TVG_DISABLE_CTOR(A) \
57 #define _TVG_DECLARE_ACCESSOR(A) \
399 TVG_DEPRECATED
Result bounds(
float* x,
float* y,
float* w,
float* h) const noexcept;
415 Result bounds(
float* x,
float* y,
float* w,
float* h,
bool transformed) const noexcept;
431 uint8_t opacity() const noexcept;
453 virtual
Type type() const noexcept = 0;
467 TVG_DEPRECATED uint32_t identifier() const noexcept;
469 _TVG_DECLARE_PRIVATE(
Paint);
557 Fill* duplicate() const noexcept;
568 virtual
Type type() const noexcept = 0;
573 TVG_DEPRECATED uint32_t identifier() const noexcept;
575 _TVG_DECLARE_PRIVATE(
Fill);
595 TVG_DEPRECATED
Result reserve(uint32_t n) noexcept;
638 virtual
Result clear(
bool free = true) noexcept;
680 virtual
Result viewport(int32_t x, int32_t y, int32_t w, int32_t h) noexcept;
694 _TVG_DECLARE_PRIVATE(
Canvas);
740 Result linear(
float* x1,
float* y1,
float* x2,
float* y2)
const noexcept;
747 static std::unique_ptr<LinearGradient>
gen() noexcept;
758 Type type() const noexcept override;
763 TVG_DEPRECATED static uint32_t identifier() noexcept;
812 static std::unique_ptr<RadialGradient>
gen() noexcept;
823 Type type() const noexcept override;
828 TVG_DEPRECATED static uint32_t identifier() noexcept;
868 Result moveTo(
float x,
float y) noexcept;
880 Result lineTo(
float x,
float y) noexcept;
897 Result cubicTo(
float cx1,
float cy1,
float cx2,
float cy2,
float x,
float y) noexcept;
930 Result appendRect(
float x,
float y,
float w,
float h,
float rx = 0,
float ry = 0) noexcept;
947 Result appendCircle(
float cx,
float cy,
float rx,
float ry) noexcept;
964 TVG_DEPRECATED
Result appendArc(
float cx,
float cy,
float radius,
float startAngle,
float sweep,
bool pie) noexcept;
999 Result stroke(uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) noexcept;
1021 Result stroke(const
float* dashPattern, uint32_t cnt) noexcept;
1050 Result strokeMiterlimit(
float miterlimit) noexcept;
1064 Result strokeTrim(
float begin,
float end,
bool simultaneous = true) noexcept;
1078 Result fill(uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) noexcept;
1123 uint32_t pathCoords(const
Point** pts) const noexcept;
1141 Result fillColor(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a =
nullptr) const noexcept;
1155 float strokeWidth() const noexcept;
1166 Result strokeColor(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a =
nullptr) const noexcept;
1173 const
Fill* strokeFill() const noexcept;
1182 uint32_t strokeDash(const
float** dashPattern) const noexcept;
1205 float strokeMiterlimit() const noexcept;
1212 static std::unique_ptr<
Shape> gen() noexcept;
1223 Type type() const noexcept override;
1228 TVG_DEPRECATED static uint32_t identifier() noexcept;
1230 _TVG_DECLARE_PRIVATE(
Shape);
1268 TVG_DEPRECATED
Result load(
const char* data, uint32_t size,
bool copy =
false) noexcept;
1290 Result load(const
char* data, uint32_t size, const std::
string& mimeType,
bool copy = false) noexcept;
1311 Result size(
float* w,
float* h) const noexcept;
1328 Result load(uint32_t* data, uint32_t w, uint32_t h,
bool copy) noexcept;
1343 const
Paint* paint(uint32_t
id) noexcept;
1361 Type type() const noexcept override;
1366 TVG_DEPRECATED static uint32_t identifier() noexcept;
1369 _TVG_DECLARE_PRIVATE(
Picture);
1403 TVG_DEPRECATED
Result reserve(uint32_t size) noexcept;
1450 static std::unique_ptr<
Scene> gen() noexcept;
1461 Type type() const noexcept override;
1466 TVG_DEPRECATED static uint32_t identifier() noexcept;
1468 _TVG_DECLARE_PRIVATE(
Scene);
1499 Result font(
const char* name,
float size,
const char* style =
nullptr) noexcept;
1524 Result fill(uint8_t r, uint8_t g, uint8_t b) noexcept;
1556 static
Result load(const std::
string& path) noexcept;
1583 static
Result load(const
char* name, const
char* data, uint32_t size, const std::
string& mimeType = "ttf",
bool copy = false) noexcept;
1599 static
Result unload(const std::
string& path) noexcept;
1608 static std::unique_ptr<
Text> gen() noexcept;
1619 Type type() const noexcept override;
1621 _TVG_DECLARE_PRIVATE(
Text);
1707 static std::unique_ptr<SwCanvas>
gen() noexcept;
1753 static std::unique_ptr<GlCanvas>
gen() noexcept;
1790 Result target(
void* instance,
void* surface, uint32_t w, uint32_t h,
void* device =
nullptr) noexcept;
1855 static const char*
version(uint32_t* major, uint32_t* minor, uint32_t* micro) noexcept;
1918 float curFrame() const noexcept;
1929 float totalFrame() const noexcept;
1939 float duration() const noexcept;
1961 Result segment(
float begin,
float end) noexcept;
1974 Result segment(
float* begin,
float* end =
nullptr) noexcept;
2039 Result save(std::unique_ptr<Paint> paint,
const std::string& path,
bool compress =
true) noexcept;
2062 Result save(std::unique_ptr<
Animation> animation, const std::
string& path, uint32_t quality = 100, uint32_t fps = 0) noexcept;
2085 static std::unique_ptr<
Saver> gen() noexcept;
2087 _TVG_DECLARE_PRIVATE(
Saver);
2107 TVG_DEPRECATED std::unique_ptr<Picture> set(std::unique_ptr<Picture> picture, std::function<
bool(
const Paint* paint)> func) noexcept;
2136 static uint32_t
id(
const char* name) noexcept;
2143 static std::unique_ptr<Accessor>
gen() noexcept;
2153 template<typename T = tvg::
Paint>
2156 return std::unique_ptr<T>(
static_cast<T*
>(paint));
2164 template<
typename T = tvg::Fill>
2167 return std::unique_ptr<T>(
static_cast<T*
>(fill));
The Accessor is a utility class to debug the Scene structure by traversing the scene-tree.
Definition: thorvg.h:2103
Result set(const Picture *picture, std::function< bool(const Paint *paint, void *data)> func, void *data) noexcept
Set the access function for traversing the Picture scene tree nodes.
static uint32_t id(const char *name) noexcept
Generate a unique ID (hash key) from a given name.
static std::unique_ptr< Accessor > gen() noexcept
Creates a new Accessor object.
The Animation class enables manipulation of animatable images.
Definition: thorvg.h:1872
Picture * picture() const noexcept
Retrieves a picture instance associated with this animation instance.
Result frame(float no) noexcept
Specifies the current frame in the animation.
An abstract class for drawing graphical elements.
Definition: thorvg.h:590
std::list< Paint * > & paints() noexcept
Returns the list of the paints that currently held by the Canvas.
An abstract class representing the gradient fill of the Shape object.
Definition: thorvg.h:485
FillSpread spread() const noexcept
Gets the FillSpread value of the fill.
Result colorStops(const ColorStop *colorStops, uint32_t cnt) noexcept
Sets the parameters of the colors of the gradient and their position.
Result transform(const Matrix &m) noexcept
Sets the matrix of the affine transformation for the gradient fill.
uint32_t colorStops(const ColorStop **colorStops) const noexcept
Gets the parameters of the colors of the gradient, their position and number.
Result spread(FillSpread s) noexcept
Sets the FillSpread value, which specifies how to fill the area outside the gradient bounds.
A class for the rendering graphic elements with a GL raster engine.
Definition: thorvg.h:1721
Result target(int32_t id, uint32_t w, uint32_t h) noexcept
Sets the drawing target for rasterization.
static std::unique_ptr< GlCanvas > gen() noexcept
Creates a new GlCanvas object.
A class that enables initialization and termination of the TVG engines.
Definition: thorvg.h:1811
static Result term(CanvasEngine engine) noexcept
Terminates TVG engines.
static Result init(CanvasEngine engine, uint32_t threads) noexcept
Initializes TVG engines.
static const char * version(uint32_t *major, uint32_t *minor, uint32_t *micro) noexcept
Retrieves the version of the TVG engine.
A class representing the linear gradient fill of the Shape object.
Definition: thorvg.h:707
static std::unique_ptr< LinearGradient > gen() noexcept
Creates a new LinearGradient object.
Result linear(float *x1, float *y1, float *x2, float *y2) const noexcept
Gets the linear gradient bounds.
Result linear(float x1, float y1, float x2, float y2) noexcept
Sets the linear gradient bounds.
An abstract class for managing graphical elements.
Definition: thorvg.h:290
Result scale(float factor) noexcept
Sets the scale value of the object.
Result rotate(float degree) noexcept
Sets the angle by which the object is rotated.
Result transform(const Matrix &m) noexcept
Sets the matrix of the affine transformation for the object.
Matrix transform() noexcept
Gets the matrix of the affine transformation of the object.
Result translate(float x, float y) noexcept
Sets the values by which the object is moved in a two-dimensional space.
A class representing an image read in one of the supported formats: raw, svg, png,...
Definition: thorvg.h:1244
TVG_DEPRECATED Result load(const char *data, uint32_t size, bool copy=false) noexcept
Result load(const std::string &path) noexcept
Loads a picture data directly from a file.
A class representing the radial gradient fill of the Shape object.
Definition: thorvg.h:776
Result radial(float cx, float cy, float radius) noexcept
Sets the radial gradient bounds.
Result radial(float *cx, float *cy, float *radius) const noexcept
Gets the radial gradient bounds.
static std::unique_ptr< RadialGradient > gen() noexcept
Creates a new RadialGradient object.
A class for exporting a paint object into a specified file, from which to recover the paint data late...
Definition: thorvg.h:2006
Result background(std::unique_ptr< Paint > paint) noexcept
Sets the base background content for the saved image.
Result save(std::unique_ptr< Paint > paint, const std::string &path, bool compress=true) noexcept
Exports the given paint data to the given path.
A class to composite children paints.
Definition: thorvg.h:1385
Result push(std::unique_ptr< Paint > paint) noexcept
Passes drawing elements to the Scene using Paint objects.
std::list< Paint * > & paints() noexcept
Returns the list of the paints that currently held by the Scene.
A class representing two-dimensional figures and their properties.
Definition: thorvg.h:847
Result reset() noexcept
Resets the shape path.
A class for the rendering graphical elements with a software raster engine.
Definition: thorvg.h:1631
Result target(uint32_t *buffer, uint32_t stride, uint32_t w, uint32_t h, Colorspace cs) noexcept
Sets the drawing target for the rasterization.
Result mempool(MempoolPolicy policy) noexcept
Set sw engine memory pool behavior policy.
Colorspace
Enumeration specifying the methods of combining the 8-bit color channels into 32-bit color.
Definition: thorvg.h:1639
@ ARGB8888S
The channels are joined in the order: alpha, red, green, blue. Colors are un-alpha-premultiplied.
Definition: thorvg.h:1643
@ ABGR8888S
The channels are joined in the order: alpha, blue, green, red. Colors are un-alpha-premultiplied.
Definition: thorvg.h:1642
@ ARGB8888
The channels are joined in the order: alpha, red, green, blue. Colors are alpha-premultiplied....
Definition: thorvg.h:1641
MempoolPolicy
Enumeration specifying the methods of Memory Pool behavior policy.
Definition: thorvg.h:1651
@ Shareable
Memory Pool is shared among the SwCanvases.
Definition: thorvg.h:1653
static std::unique_ptr< SwCanvas > gen() noexcept
Creates a new SwCanvas object.
A class to represent text objects in a graphical context, allowing for rendering and manipulation of ...
Definition: thorvg.h:1480
Result font(const char *name, float size, const char *style=nullptr) noexcept
Sets the font properties for the text.
A class for the rendering graphic elements with a WebGPU raster engine.
Definition: thorvg.h:1769
Result target(void *instance, void *surface, uint32_t w, uint32_t h, void *device=nullptr) noexcept
Sets the drawing target for the rasterization.
FillSpread
Enumeration specifying how to fill the area outside the gradient bounds.
Definition: thorvg.h:133
std::unique_ptr< T > cast(Fill *fill)
The cast() function is a utility function used to cast a 'Fill' to type 'T'.
Definition: thorvg.h:2165
Result
Enumeration specifying the result from the APIs.
Definition: thorvg.h:81
CanvasEngine
Enumeration specifying the engine type used for the graphics backend. For multiple backends bitwise o...
Definition: thorvg.h:227
BlendMethod
Enumeration indicates the method used for blending paint. Please refer to the respective formulas for...
Definition: thorvg.h:184
Type
Enumeration specifying the ThorVG class type value.
Definition: thorvg.h:245
StrokeCap
Enumeration determining the ending type of a stroke in the open sub-paths.
Definition: thorvg.h:111
PathCommand
Enumeration specifying the values of the path commands accepted by TVG.
Definition: thorvg.h:99
SceneEffect
Enumeration that defines methods used for Scene Effects.
Definition: thorvg.h:217
FillRule
Enumeration specifying the algorithm used to establish which parts of the shape are treated as the in...
Definition: thorvg.h:144
CompositeMethod
Enumeration indicating the method used in the composition of two objects - the target and the source.
Definition: thorvg.h:158
StrokeJoin
Enumeration determining the style used at the corners of joined stroked path segments.
Definition: thorvg.h:122
@ Repeat
The gradient pattern is repeated continuously beyond the gradient area until the expected region is f...
@ Reflect
The gradient pattern is reflected outside the gradient area until the expected region is filled.
@ Pad
The remaining area is filled with the closest stop color.
@ InsufficientCondition
The value returned in case the request cannot be processed - e.g. asking for properties of an object,...
@ Success
The value returned in case of a correct request execution.
@ Unknown
The value returned in all other cases.
@ NonSupport
The value returned in case of choosing unsupported engine features(options).
@ FailedAllocation
The value returned in case of unsuccessful memory allocation.
@ InvalidArguments
The value returned in the event of a problem with the arguments given to the API - e....
@ MemoryCorruption
The value returned in the event of bad memory handling - e.g. failing in pointer releasing or casting...
@ SoftLight
The same as Overlay but with applying pure black or white does not result in pure black or white....
@ Lighten
Only has the opposite action of Darken Only. max(S, D)
@ Exclusion
The result is twice the product of the top and bottom layers, subtracted from their sum....
@ Difference
Subtracts the bottom layer from the top layer or the other way around, to always get a non-negative v...
@ Saturation
Reserved. Not supported.
@ Screen
The values of the pixels in the two layers are inverted, multiplied, and then inverted again....
@ Luminosity
Reserved. Not supported.
@ Overlay
Combines Multiply and Screen blend modes. (2 * S * D) if (2 * D < Da), otherwise (Sa * Da) - 2 * (Da ...
@ Normal
Perform the alpha blending(default). S if (Sa == 255), otherwise (Sa * S) + (255 - Sa) * D.
@ ColorBurn
Divides the inverted bottom layer by the top layer, and then inverts the result. 255 - (255 - D) / S.
@ Color
Reserved. Not supported.
@ HardLight
The same as Overlay but with the color roles reversed. (2 * S * D) if (S < Sa), otherwise (Sa * Da) -...
@ Multiply
Takes the RGB channel values from 0 to 255 of each pixel in the top layer and multiples them with the...
@ Add
Simply adds pixel values of one layer with the other. (S + D)
@ ColorDodge
Divides the bottom layer by the inverted top layer. D / (255 - S)
@ Darken
Creates a pixel that retains the smallest components of the top and bottom layer pixels....
@ Hue
Reserved. Not supported.
@ HardMix
Reserved. Not supported.
@ Butt
The stroke ends exactly at each of the two end-points of a sub-path. For zero length sub-paths no str...
@ Round
The stroke is extended in both end-points of a sub-path by a half circle, with a radius equal to the ...
@ Square
The stroke is extended in both end-points of a sub-path by a rectangle, with the width equal to the s...
@ LineTo
Draws a line from the current point to the given point and sets a new value of the current point....
@ CubicTo
Draws a cubic Bezier curve from the current point to the given point using two given control points a...
@ Close
Ends the current sub-path and connects it with its initial point. This command doesn't expect any poi...
@ MoveTo
Sets a new initial point of the sub-path and a new current point. This command expects 1 point: the s...
@ GaussianBlur
Apply a blur effect with a Gaussian filter. Param(3) = {sigma(float)[> 0], direction(int)[both: 0 / h...
@ ClearAll
Reset all previously applied scene effects, restoring the scene to its original state.
@ Winding
A line from the point to a location outside the shape is drawn. The intersections of the line with th...
@ EvenOdd
A line from the point to a location outside the shape is drawn and its intersections with the path se...
@ InvLumaMask
Alpha Masking using the grayscale (0.2125R + 0.7154G + 0.0721*B) of the complement to the compositing...
@ LumaMask
Alpha Masking using the grayscale (0.2125R + 0.7154G + 0.0721*B) of the compositing target's pixels.
@ InvAlphaMask
Alpha Masking using the complement to the compositing target's pixels as an alpha value.
@ ClipPath
The intersection of the source and the target is determined and only the resulting pixels from the so...
@ None
No composition is applied.
@ DarkenMask
Where multiple masks intersect, the lowest transparency value is used. (Experimental API)
@ DifferenceMask
Calculates the absolute difference between the target color and the source color multiplied by the co...
@ AddMask
Combines the target and source objects pixels using target alpha. (T * TA) + (S * (255 - TA)) (Experi...
@ SubtractMask
Subtracts the source color from the target color while considering their respective target alpha....
@ AlphaMask
Alpha Masking using the compositing target's pixels as an alpha value.
@ IntersectMask
Computes the result by taking the minimum value between the target alpha and the source alpha and mul...
@ LightenMask
Where multiple masks intersect, the highest transparency value is used. (Experimental API)
@ Bevel
The outer corner of the joined path segments is bevelled at the join point. The triangular region of ...
@ Round
The outer corner of the joined path segments is rounded. The circular region is centered at the join ...
@ Miter
The outer corner of the joined path segments is spiked. The spike is created by extension beyond the ...
A data structure storing the information about the color and its relative position inside the gradien...
Definition: thorvg.h:491
uint8_t g
Definition: thorvg.h:494
float offset
Definition: thorvg.h:492
uint8_t b
Definition: thorvg.h:495
uint8_t r
Definition: thorvg.h:493
uint8_t a
Definition: thorvg.h:496
A data structure representing a three-dimensional matrix.
Definition: thorvg.h:273
A data structure representing a point in two-dimensional space.
Definition: thorvg.h:260