26 #if defined(_WIN32) && !defined(__clang__)
29 #define TVG_API __declspec(dllexport)
34 #define TVG_API __declspec(dllimport)
36 #define TVG_DEPRECATED __declspec(deprecated)
40 #define TVG_API __attribute__ ((visibility ("default")))
47 #define TVG_DEPRECATED __attribute__ ((__deprecated__))
54 #define _TVG_DECLARE_PRIVATE(A) \
58 A(const A&) = delete; \
59 const A& operator=(const A&) = delete; \
62 #define _TVG_DISABLE_CTOR(A) \
66 #define _TVG_DECLARE_ACCESSOR() \
71 friend IteratorAccessor
78 class IteratorAccessor;
337 TVG_DEPRECATED
Result bounds(
float* x,
float* y,
float* w,
float* h) const noexcept;
354 Result bounds(
float* x,
float* y,
float* w,
float* h,
bool transformed) const noexcept;
370 uint8_t opacity() const noexcept;
390 uint32_t identifier() const noexcept;
392 _TVG_DECLARE_ACCESSOR();
393 _TVG_DECLARE_PRIVATE(
Paint);
487 Fill* duplicate() const noexcept;
496 uint32_t identifier() const noexcept;
498 _TVG_DECLARE_PRIVATE(
Fill);
596 _TVG_DECLARE_PRIVATE(
Canvas);
645 Result linear(
float* x1,
float* y1,
float* x2,
float* y2)
const noexcept;
652 static std::unique_ptr<LinearGradient>
gen() noexcept;
661 static uint32_t identifier() noexcept;
709 static std::unique_ptr<RadialGradient>
gen() noexcept;
718 static uint32_t identifier() noexcept;
762 Result moveTo(
float x,
float y) noexcept;
776 Result lineTo(
float x,
float y) noexcept;
795 Result cubicTo(
float cx1,
float cy1,
float cx2,
float cy2,
float x,
float y) noexcept;
832 Result appendRect(
float x,
float y,
float w,
float h,
float rx,
float ry) noexcept;
850 Result appendCircle(
float cx,
float cy,
float rx,
float ry) noexcept;
869 Result appendArc(
float cx,
float cy,
float radius,
float startAngle,
float sweep,
bool pie) noexcept;
908 Result stroke(uint8_t r, uint8_t g, uint8_t b, uint8_t a) noexcept;
934 Result stroke(const
float* dashPattern, uint32_t cnt) noexcept;
971 Result fill(uint8_t r, uint8_t g, uint8_t b, uint8_t a) noexcept;
1023 uint32_t pathCoords(const
Point** pts) const noexcept;
1042 Result fillColor(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a) const noexcept;
1056 float strokeWidth() const noexcept;
1068 Result strokeColor(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a) const noexcept;
1075 const
Fill* strokeFill() const noexcept;
1084 uint32_t strokeDash(const
float** dashPattern) const noexcept;
1105 static std::unique_ptr<
Shape> gen() noexcept;
1114 static uint32_t identifier() noexcept;
1116 _TVG_DECLARE_PRIVATE(
Shape);
1164 TVG_DEPRECATED
Result load(
const char* data, uint32_t size,
bool copy =
false) noexcept;
1183 Result load(const
char* data, uint32_t size, const std::
string& mimeType,
bool copy = false) noexcept;
1206 Result size(
float* w,
float* h) const noexcept;
1217 const uint32_t* data(uint32_t* w, uint32_t* h) const noexcept;
1227 Result load(uint32_t* data, uint32_t w, uint32_t h,
bool copy) noexcept;
1265 uint32_t mesh(const
Polygon** triangles) const noexcept;
1274 Result viewbox(
float* x,
float* y,
float* w,
float* h) const noexcept;
1290 static uint32_t identifier() noexcept;
1292 _TVG_DECLARE_PRIVATE(
Picture);
1359 static std::unique_ptr<
Scene> gen() noexcept;
1368 static uint32_t identifier() noexcept;
1370 _TVG_DECLARE_PRIVATE(
Scene);
1455 static std::unique_ptr<SwCanvas>
gen() noexcept;
1482 Result target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t h) noexcept;
1491 static std::unique_ptr<GlCanvas>
gen() noexcept;
1591 Result save(std::unique_ptr<Paint> paint,
const std::string& path,
bool compress =
true) noexcept;
1617 static std::unique_ptr<
Saver> gen() noexcept;
1619 _TVG_DECLARE_PRIVATE(
Saver);
1651 std::unique_ptr<Picture>
set(std::unique_ptr<Picture> picture, std::function<
bool(
const Paint* paint)> func) noexcept;
1660 static std::unique_ptr<Accessor>
gen() noexcept;
The Accessor is a utility class to debug the Scene structure by traversing the scene-tree.
Definition: thorvg.h:1635
std::unique_ptr< Picture > set(std::unique_ptr< Picture > picture, std::function< bool(const Paint *paint)> func) noexcept
Set the access function for traversing the Picture scene tree nodes.
static std::unique_ptr< Accessor > gen() noexcept
Creates a new Accessor object.
An abstract class for drawing graphical elements.
Definition: thorvg.h:513
Result reserve(uint32_t n) noexcept
Sets the size of the container, where all the paints pushed into the Canvas are stored.
virtual Result push(std::unique_ptr< Paint > paint) noexcept
Passes drawing elements to the Canvas using Paint objects.
virtual Result clear(bool free=true) noexcept
Sets the total number of the paints pushed into the canvas to be zero. Depending on the value of the ...
An abstract class representing the gradient fill of the Shape object.
Definition: thorvg.h:409
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:1471
Result target(uint32_t *buffer, uint32_t stride, uint32_t w, uint32_t h) noexcept
Sets the target buffer for the 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:1503
static Result term(CanvasEngine engine) noexcept
Terminates TVG engines.
static Result init(CanvasEngine engine, uint32_t threads) noexcept
Initializes TVG engines.
A class representing the linear gradient fill of the Shape object.
Definition: thorvg.h:609
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:241
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:1129
TVG_DEPRECATED Result load(const char *data, uint32_t size, bool copy=false) noexcept
Loads a picture data from a memory block of a given size.
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:674
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:1565
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:1308
Result push(std::unique_ptr< Paint > paint) noexcept
Passes drawing elements to the Scene using Paint objects.
Result reserve(uint32_t size) noexcept
Sets the size of the container, where all the paints pushed into the Scene are stored.
Result clear(bool free=true) noexcept
Sets the total number of the paints pushed into the scene to be zero. Depending on the value of the f...
A class representing two-dimensional figures and their properties.
Definition: thorvg.h:737
Result reset() noexcept
Resets the properties of the shape path.
A class for the rendering graphical elements with a software raster engine.
Definition: thorvg.h:1380
Result target(uint32_t *buffer, uint32_t stride, uint32_t w, uint32_t h, Colorspace cs) noexcept
Sets the target buffer 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:1388
@ ARGB8888_STRAIGHT
@BETA_API The channels are joined in the order: alpha, red, green, blue. Colors are un-alpha-premulti...
Definition: thorvg.h:1392
@ ABGR8888_STRAIGHT
@BETA_API The channels are joined in the order: alpha, blue, green, red. Colors are un-alpha-premulti...
Definition: thorvg.h:1391
@ ARGB8888
The channels are joined in the order: alpha, red, green, blue. Colors are alpha-premultiplied.
Definition: thorvg.h:1390
MempoolPolicy
Enumeration specifying the methods of Memory Pool behavior policy.
Definition: thorvg.h:1400
@ Shareable
Memory Pool is shared among the SwCanvases.
Definition: thorvg.h:1402
static std::unique_ptr< SwCanvas > gen() noexcept
Creates a new SwCanvas object.
FillSpread
Enumeration specifying how to fill the area outside the gradient bounds.
Definition: thorvg.h:143
Result
Enumeration specifying the result from the APIs.
Definition: thorvg.h:95
CanvasEngine
Enumeration specifying the engine type used for the graphics backend. For multiple backends bitwise o...
Definition: thorvg.h:174
StrokeCap
Enumeration determining the ending type of a stroke in the open sub-paths.
Definition: thorvg.h:123
PathCommand
Enumeration specifying the values of the path commands accepted by TVG.
Definition: thorvg.h:112
FillRule
Enumeration specifying the algorithm used to establish which parts of the shape are treated as the in...
Definition: thorvg.h:153
CompositeMethod
Enumeration indicating the method used in the composition of two objects - the target and the source.
Definition: thorvg.h:162
StrokeJoin
Enumeration determining the style used at the corners of joined stroked path segments.
Definition: thorvg.h:133
@ 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 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...
@ 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...
@ 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...
@ LumaMask
The source pixels are converted to the grayscale (luma value) and alpha blended with the target....
@ InvAlphaMask
The pixels of the source and the complement to the target's pixels are alpha blended....
@ ClipPath
The intersection of the source and the target is determined and only the resulting pixels from the so...
@ None
No composition is applied.
@ AlphaMask
The pixels of the source and the target are alpha blended. As a result, only the part of the source,...
@ 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:415
uint8_t g
Definition: thorvg.h:418
float offset
Definition: thorvg.h:416
uint8_t b
Definition: thorvg.h:419
uint8_t r
Definition: thorvg.h:417
uint8_t a
Definition: thorvg.h:420
A data structure representing a three-dimensional matrix.
Definition: thorvg.h:197
A data structure representing a point in two-dimensional space.
Definition: thorvg.h:184
A data structure representing a triange in a texture mesh.
Definition: thorvg.h:226
A data structure representing a texture mesh vertex.
Definition: thorvg.h:212