ThorVG  v0.13
Paint

An abstract class for managing graphical elements. More...

Inheritance diagram for Paint:

Public Member Functions

Result rotate (float degree) noexcept
 Sets the angle by which the object is rotated. More...
 
Result scale (float factor) noexcept
 Sets the scale value of the object. More...
 
Result translate (float x, float y) noexcept
 Sets the values by which the object is moved in a two-dimensional space. More...
 
Result transform (const Matrix &m) noexcept
 Sets the matrix of the affine transformation for the object. More...
 
Matrix transform () noexcept
 Gets the matrix of the affine transformation of the object. More...
 
Result opacity (uint8_t o) noexcept
 Sets the opacity of the object. More...
 
Result composite (std::unique_ptr< Paint > target, CompositeMethod method) noexcept
 Sets the composition target object and the composition method. More...
 
Result blend (BlendMethod method) const noexcept
 Sets the blending method for the paint object. More...
 
TVG_DEPRECATED Result bounds (float *x, float *y, float *w, float *h) const noexcept
 Gets the bounding box of the paint object before any transformation. More...
 
Result bounds (float *x, float *y, float *w, float *h, bool transformed) const noexcept
 Gets the axis-aligned bounding box of the paint object. More...
 
Paintduplicate () const noexcept
 Duplicates the object. More...
 
uint8_t opacity () const noexcept
 Gets the opacity value of the object. More...
 
CompositeMethod composite (const Paint **target) const noexcept
 Gets the composition target object and the composition method. More...
 
BlendMethod blend () const noexcept
 Gets the blending method of the object. More...
 
uint32_t identifier () const noexcept
 Return the unique id value of the paint instance. More...
 

Detailed Description

An abstract class for managing graphical elements.

A graphical element in TVG is any object composed into a Canvas. Paint represents such a graphical object and its behaviors such as duplication, transformation and composition. TVG recommends the user to regard a paint as a set of volatile commands. They can prepare a Paint and then request a Canvas to run them.

Member Function Documentation

◆ blend() [1/2]

BlendMethod blend ( ) const
noexcept

Gets the blending method of the object.

Returns
The blending method
Note
Experimental API

◆ blend() [2/2]

Result blend ( BlendMethod  method) const
noexcept

Sets the blending method for the paint object.

The blending feature allows you to combine colors to create visually appealing effects, including transparency, lighting, shading, and color mixing, among others. its process involves the combination of colors or images from the source paint object with the destination (the lower layer image) using blending operations. The blending operation is determined by the chosen BlendMethod, which specifies how the colors or images are combined.

Parameters
[in]methodThe blending method to be set.
Return values
Result::Successwhen the blending method is successfully set.
Note
Experimental API

◆ bounds() [1/2]

TVG_DEPRECATED Result bounds ( float *  x,
float *  y,
float *  w,
float *  h 
) const
noexcept

Gets the bounding box of the paint object before any transformation.

Parameters
[out]xThe x coordinate of the upper left corner of the object.
[out]yThe y coordinate of the upper left corner of the object.
[out]wThe width of the object.
[out]hThe height of the object.
Returns
Result::Success when succeed, Result::InsufficientCondition otherwise.
Note
The bounding box doesn't indicate the final rendered region. It's the smallest rectangle that encloses the object.
See also
Paint::bounds(float* x, float* y, float* w, float* h, bool transformed);

◆ bounds() [2/2]

Result bounds ( float *  x,
float *  y,
float *  w,
float *  h,
bool  transformed 
) const
noexcept

Gets the axis-aligned bounding box of the paint object.

In case transform is true, all object's transformations are applied first, and then the bounding box is established. Otherwise, the bounding box is determined before any transformations.

Parameters
[out]xThe x coordinate of the upper left corner of the object.
[out]yThe y coordinate of the upper left corner of the object.
[out]wThe width of the object.
[out]hThe height of the object.
[in]transformedIf true, the paint's transformations are taken into account, otherwise they aren't.
Return values
Result::Successwhen succeed, Result::InsufficientCondition otherwise.
Note
The bounding box doesn't indicate the actual drawing region. It's the smallest rectangle that encloses the object.

◆ composite() [1/2]

CompositeMethod composite ( const Paint **  target) const
noexcept

Gets the composition target object and the composition method.

Parameters
[out]targetThe paint of the target object.
Returns
The method used to composite the source object with the target.
Since
0.5

◆ composite() [2/2]

Result composite ( std::unique_ptr< Paint target,
CompositeMethod  method 
)
noexcept

Sets the composition target object and the composition method.

Parameters
[in]targetThe paint of the target object.
[in]methodThe method used to composite the source object with the target.
Return values
Result::Successwhen succeed, Result::InvalidArguments otherwise.

◆ duplicate()

Paint* duplicate ( ) const
noexcept

Duplicates the object.

Creates a new object and sets its all properties as in the original object.

Returns
The created object when succeed, nullptr otherwise.

◆ identifier()

uint32_t identifier ( ) const
noexcept

Return the unique id value of the paint instance.

This method can be called for checking the current concrete instance type.

Returns
The type id of the Paint instance.

◆ opacity() [1/2]

uint8_t opacity ( ) const
noexcept

Gets the opacity value of the object.

Returns
The opacity value in the range [0 ~ 255], where 0 is completely transparent and 255 is opaque.

◆ opacity() [2/2]

Result opacity ( uint8_t  o)
noexcept

Sets the opacity of the object.

Parameters
[in]oThe opacity value in the range [0 ~ 255], where 0 is completely transparent and 255 is opaque.
Return values
Result::Successwhen succeed.
Note
Setting the opacity with this API may require multiple render pass for composition. It is recommended to avoid changing the opacity if possible.
ClipPath won't use the opacity value. (see: enum class CompositeMethod::ClipPath)

◆ rotate()

Result rotate ( float  degree)
noexcept

Sets the angle by which the object is rotated.

The angle in measured clockwise from the horizontal axis. The rotational axis passes through the point on the object with zero coordinates.

Parameters
[in]degreeThe value of the angle in degrees.
Return values
Result::Successwhen succeed, Result::FailedAllocation otherwise.

◆ scale()

Result scale ( float  factor)
noexcept

Sets the scale value of the object.

Parameters
[in]factorThe value of the scaling factor. The default value is 1.
Return values
Result::Successwhen succeed, Result::FailedAllocation otherwise.

◆ transform() [1/2]

Matrix transform ( )
noexcept

Gets the matrix of the affine transformation of the object.

The values of the matrix can be set by the transform() API, as well by the translate(), scale() and rotate(). In case no transformation was applied, the identity matrix is returned.

Returns
The augmented transformation matrix.
Since
0.4

◆ transform() [2/2]

Result transform ( const Matrix m)
noexcept

Sets the matrix of the affine transformation for the object.

The augmented matrix of the transformation is expected to be given.

Parameters
[in]mThe 3x3 augmented matrix.
Return values
Result::Successwhen succeed, Result::FailedAllocation otherwise.

◆ translate()

Result translate ( float  x,
float  y 
)
noexcept

Sets the values by which the object is moved in a two-dimensional space.

The origin of the coordinate system is in the upper left corner of the canvas. The horizontal and vertical axes point to the right and down, respectively.

Parameters
[in]xThe value of the horizontal shift.
[in]yThe value of the vertical shift.
Return values
Result::Successwhen succeed, Result::FailedAllocation otherwise.