Xu Xingliang
d113540d61
capi: fix compile warning
...
Fix warning during build with lvgl https://github.com/lvgl/lvgl/pull/6081/
error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
Signed-off-by: Xu Xingliang <xuxingliang@xiaomi.com>
2024-05-27 23:13:34 +09:00
Abdelrahman Ashraf
178cf2944d
fix: 🐛 missing binding for tvg_canvas_set_viewport c api
2024-05-24 13:19:48 +02:00
Hermet Park
c9f05526a8
wasm: code clean up
...
binary reduction by -188
2024-05-21 16:05:53 +09:00
Hermet Park
c784ed7362
renderer/canvas: tweak the viewport behavior.
...
reset the viewport context when target buffer is reset.
2024-05-20 14:44:15 +09:00
Hermet Park
7ea17d4e72
capi: support canvas viewport api
...
New Experimental API:
- Tvg_Result tvg_canvas_set_viewport(Tvg_Canvas* canvas, int32_t x, int32_t y, int32_t w, int32_t h);
2024-05-18 18:10:50 +09:00
Hermet Park
38bd34b01f
animation/lottie: improved the precision of frame values.
...
Refined the logic for updating frame numbers
to ensure greater accuracy in value precision.
issue: https://github.com/thorvg/thorvg/issues/2266
2024-05-14 15:28:48 +09:00
Jinny You
55c4d6fe28
bindings/capi: Fix incompatible parameter
...
C API doesn't support default parameter, removed it.
Issue: #2228
2024-04-30 23:19:24 +09:00
Hermet Park
7a9ba52d0c
doc: adds the api version history
2024-04-30 14:32:07 +02:00
Mira Grudzinska
51eec98aae
build: add missing ifdef
...
The thorvg_lottie.h file wasn’t accessible
if the lottie loader was not activated,
causing a compilation error.
2024-04-17 00:00:32 +09:00
Jinny You
3de7580d96
lottie/common: Fix typo in API documentation comment
2024-04-16 10:30:01 +09:00
Jinny You
2ea79746e3
bindings/capi: Support lottie segment and marker
...
new experimental apis for animation segment and lottie marker.
APIs:
- TVG_API Tvg_Result tvg_animation_set_segment(Tvg_Animation* animation, float begin, float end)
- TVG_API Tvg_Result tvg_animation_get_segment(Tvg_Animation* animation, float* begin, float* end = nullptr)
- TVG_API Tvg_Result tvg_lottie_animation_set_marker(Tvg_Animation* animation, const char* marker)
- TVG_API Tvg_Result tvg_lottie_animation_get_marker_cnt(Tvg_Animation* animation, uint32_t* cnt)
- TVG_API Tvg_Result tvg_lottie_animation_get_marker(Tvg_Animation* animation, uint32_t idx, const char** name)
2024-04-14 23:54:26 +09:00
Hermet Park
50707482ba
lottie: rectify the frame updates.
...
Currently, tvg ignores the frame value if the difference
is less than 0.001. In most cases, updating the frames
when the change is less than 1ms is just an unnecessary
burden on the system.
Instead, this ensures that the perfect last frame is reached.
issue: https://github.com/thorvg/thorvg/issues/2147
2024-04-11 10:54:02 +09:00
Hermet Park
d37ed535d1
wasm: update the gif conversion function
...
re-implement the gif conversion function with the correct approach.
The input data is not reusable as it undergoes modifications during parsing.
To address this, the function now creates a backup of the original data for use in GIF conversion.
This also resolves issues where the GIF viewport was incorrectly matched.
This implementation may be revisited upon
the availability of Animation::duplicate().
2024-04-05 01:10:39 +09:00
Hermet Park
059939f2ed
wasm: optimize TVG saving Logic
...
Optimized the saving logic for TVG.
Copying the picture is unnecessary;
the logic now directly utilizes the currently held picture.
2024-04-05 01:10:39 +09:00
Hermet Park
d6504ed35d
doc: List the parameters in their respective order.
2024-03-28 14:01:17 +09:00
Hermet Park
e4775727eb
api: Promote experimental Animation APIs to official status.
...
These APIs have been thoroughly tested and verified.
New API:
- Result Animation::frame(float no)
- Picture* Animation::picture() const
- float Animation::curFrame() const
- float Animation::totalFrame() const
- float Animation::duration() const
- static Animation::std::unique_ptr<Animation> gen()
New CAPI:
- Tvg_Animation* tvg_animation_new()
- Tvg_Result tvg_animation_set_frame(Tvg_Animation* animation, float no)
- Tvg_Paint* tvg_animation_get_picture(Tvg_Animation* animation)
- Tvg_Result tvg_animation_get_frame(Tvg_Animation* animation, float* no)
- Tvg_Result tvg_animation_get_total_frame(Tvg_Animation* animation, float* cnt)
- Tvg_Result tvg_animation_get_duration(Tvg_Animation* animation, float* duration)
- Tvg_Result tvg_animation_del(Tvg_Animation* animation)
issue: https://github.com/thorvg/thorvg/issues/2067
2024-03-27 16:18:42 +09:00
Jinny You
b3f09cab6b
lottie: Support the slot reverting feature
...
Implemented the ability to revert Lottie slots by calling override with nullptr.
This functionality allows for the complete reversal of applied slots.
usage:
- `animation->override(nullptr)`
Co-Authored-By: Hermet Park <hermet@lottiefiles.com>
2024-03-21 16:56:28 +09:00
Hermet Park
58eab98e20
capi: Add two additional ColorSpace options to align with C++ APIs.
...
APIs:
- Tvg_Colorspace::TVG_COLORSPACE_ABGR8888S
- Tvg_Colorspace::TVG_COLORSPACE_ARGB8888S
Issue: https://github.com/thorvg/thorvg/issues/2053
2024-03-14 14:45:38 +09:00
Jinny You
449cee7cf0
lottie/api: specify clear result for override API
...
In case the given JSON is invalid, it's more closed to `Result::InvalidArguments`.
2024-03-06 17:32:02 +09:00
Hermet Park
1e4bf308da
renderer/loader: revamping the caching mechanism.
...
The previous loader cache mechanism encountered a problem
when the user changed the content of the cached data.
In such cases, a new request would not be processed
because the renderer would use the previously cached content.
So far, the TVG cache mechanism utilizes a pointer hash key
for the fastest hashing mechanism available.
One limitation is that it assumes the address is unique for the data.
To resolve this, we modified the caching policy.
Now, the renderer will not cache copied data;
it will only cache the given data when it is deemed shareable.
issue: https://github.com/thorvg/thorvg/issues/2020
2024-03-06 14:34:58 +09:00
Jinny You
bd1fec2dca
capi: added missing lottie header
...
Currently, the Lottie Animation API is not working due to the missing header.
2024-03-06 11:51:13 +09:00
Hermet Park
71a5c3ad02
binding/capi: support lottie extensions
...
these experimental apis are allowed to use
when the lottie loader is enabled.
APIs:
- Tvg_Animation* tvg_lottie_animation_new()
- Tvg_Result tvg_lottie_animation_override(Tvg_Animation* animation, const char* slot)
2024-02-24 01:57:35 +09:00
Jinny You
1c04cab904
wasm: Add canvas clear on update
...
Fixed bug that canvas draws wrong frame at alpha area
2024-01-04 17:14:42 +09:00
Jinny You
5f088a2357
wasm: Revise saver methods
2024-01-03 13:51:42 +09:00
Jinny You
2c6c8d3b21
updated copyright date ( #1866 )
2023-12-28 10:43:25 +09:00
Jinny You
99a841b404
wasm: Revise the wasm binding for lottie-player
...
- removed and replaced `tvgWasm`
2023-12-20 15:45:14 +09:00
Hermet Park
f2c29063d2
api: updated the recent changed api again.
...
Reordered by the data packing size.
Also removed a wrong capi default parameter value.
Result Picture::load(const char* data, uint32_t size, const std::string& mimeType, bool copy = false, const std::string& rpath = "")
-> Result load(const char* data, uint32_t size, const std::string& mimeType, const std::string& rpath = "", bool copy = false)
Tvg_Result tvg_picture_load_data(Tvg_Paint* paint, const char *data, uint32_t size, const char *mimetype, bool copy, const char* resourcePath)
-> Tvg_Result tvg_picture_load_data(Tvg_Paint* paint, const char *data, uint32_t size, const char *mimetype, const char* resourcePath, bool copy);
2023-11-23 11:59:38 +09:00
Jinny You
c30019e6dd
capi: support loading external image feature for lottie
...
Updated API:
- Tvg_Result tvg_picture_load_data(Tvg_Paint* paint, const char *data, uint32_t size, const char *mimetype, bool copy, const string& resourcePath)
2023-11-22 18:04:35 +09:00
Sergii Liebodkin
548962f5f8
apis/engines: Revise the clear() buffer behavior.
...
ThorVG has offered an option to clear the buffer since version 1.0.
This is essential when users utilize the canvas target buffer
with the main render target. They share the buffer
and need to draw contents onto the existing contents.
API:
Result Canvas::clear(bool free = true)
-> Result Canvas::clear(bool paints = true, bool buffer = true)
Tvg_Result tvg_canvas_clear(Tvg_Canvas* canvas, bool free);
-> Tvg_Result tvg_canvas_clear(Tvg_Canvas* canvas, bool paints, bool buffer);
Issue: https://github.com/thorvg/thorvg/issues/1779
Co-Authored-By: Hermet Park <hermet@lottiefiles.com>
2023-11-20 18:23:00 +09:00
Hermet Park
08252990a6
wasm: Set a GIF background color.
...
Use a white background by default.
2023-11-14 10:47:52 +09:00
Hermet Park
2082343463
doc: make it up missing parameter information.
2023-11-09 14:46:14 +09:00
Hermet Park
d1bae0b44c
capi: udpated the doc.
...
BETA_API -> Experimental API
2023-11-08 10:53:39 +09:00
Sergii
4da90b2847
picture: added ability to support premultiplied for picture raw loader
...
[issues 1479: picture raw loader to support premultiplied](https://github.com/thorvg/thorvg/issues/1764 )
api changes:
Result Picture::load(uint32_t* data, uint32_t w, uint32_t h, bool copy);
Result Picture::load(uint32_t* data, uint32_t w, uint32_t h, bool premultiplied, bool copy);
capi changes
TVG_API Tvg_Result tvg_picture_load_raw(Tvg_Paint* paint, uint32_t *data, uint32_t w, uint32_t h, bool copy);
TVG_API Tvg_Result tvg_picture_load_raw(Tvg_Paint* paint, uint32_t *data, uint32_t w, uint32_t h, bool premultiplied, bool copy);
2023-11-08 10:46:23 +09:00
Hermet Park
2f8c920654
gif: corrected the wrong aspect ratio scaling.
2023-11-06 20:18:13 +09:00
Hermet Park
7bf958e913
binding/wasm: remove layer functionality.
...
We will revisit this function later with a proper design.
2023-11-06 16:54:01 +09:00
Hermet Park
12534e6934
binding/wasm: updated save features
...
- removed the compression option
- added an animation save function.
2023-11-06 16:54:01 +09:00
Hermet Park
0687b09c72
doc: keep the style clean & neat
2023-11-03 23:54:58 +09:00
Hermet Park
0819fc9058
binding/wasm: updated save features
...
- removed the compression option
- added an animation save function.
2023-11-03 23:54:58 +09:00
Jinny You
a60c881b60
docs: Remove all warnings from doxygen
2023-11-03 12:05:21 +09:00
Hermet Park
d879e56856
saver: Revised the API for the 1.0 release
...
replaced the 'compress' option with 'quality'
API changes:
Result Saver::save(std::unique_ptr<Paint> paint, const std::string& path, bool compress) ->
Result Saver::save(std::unique_ptr<Paint> paint, const std::string& path, uint32_t quality = 100)
TVG_API Tvg_Result tvg_saver_save(Tvg_Saver* saver, Tvg_Paint* paint, const char* path, bool compress) ->
Tvg_Result tvg_saver_save(Tvg_Saver* saver, Tvg_Paint* paint, const char* path, uint32_t quality)
Issue: #1372
2023-11-02 11:58:23 +09:00
Hermet Park
2d2928652b
wasm: fix a regression bug.
...
The Animation::frame() method has been modified.
It will now return InsufficientCondition,
if the frame value is the same as the previous one.
In addition to this change, we have also updated its usage accordingly.
2023-10-31 12:03:32 +09:00
Hermet Park
d6fffd13c2
api: revise the engine initializer for the 1.0 release.
...
This change introduces the CanvasEngine::All type to automatically
initialize the engines available on the current system.
These revisions improve the usability of these APIs.
Addtions:
- enum class CanvasEngine::All
Modifications:
- Result Initializer::init(CanvasEngine engine, uint32_t threads) ->
Result Initializer::init(uint32_t threads, CanvasEngine engine = tvg::CanvasEngine::All)
2023-10-30 11:48:02 +09:00
Mira Grudzinska
25a1321243
common: stroke dash offset support with new apis.
...
This change just allows users to use the offset of the stroke dash.
Actually feature enhacement has been introduced by
478e45f9f3
.
@APIs:
uint32_t Shape::strokeDash(const float** dashPattern) ->
uint32_t Shape::strokeDash(const float** dashPattern, float* offset = nullptr)
Result Shape::strokeDash(const float* dashPattern, uint32_t cnt) ->
Result Shape::strokeDash(const float* dashPattern, uint32_t cnt, float offset = 0.0f)
Tvg_Result tvg_shape_set_stroke_dash(Tvg_Paint* paint, const float* dashPattern, uint32_t cnt) ->
Tvg_Result tvg_shape_set_stroke_dash(Tvg_Paint* paint, const float* dashPattern, uint32_t cnt, float offset)
Tvg_Result tvg_shape_get_stroke_dash(const Tvg_Paint* paint, const float** dashPattern, uint32_t* cnt) ->
Tvg_Result tvg_shape_get_stroke_dash(const Tvg_Paint* paint, const float** dashPattern, uint32_t* cnt, float* offset)
@Issue: https://github.com/thorvg/thorvg/issues/1372
2023-10-30 11:47:51 +09:00
Hermet Park
db55481e97
renamed stroke apis family.
...
float Shape::stroke(float width) -> float Shape::strokeWidth(float width)
Result Shape::stroke(uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) -> Result Shape::strokeFill(uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255)
Result Shape::stroke(std::unique_ptr<Fill> f) -> Result Shape::strokeFill(std::unique_ptr<Fill> f)
Result Shape::stroke(const float* dashPattern, uint32_t cnt, float offset = 0.0f) -> Result Shape::strokeDash(const float* dashPattern, uint32_t cnt, float offset = 0.0f)
Result Shape::stroke(StrokeCap cap) -> Result Shape::strokeCap(StrokeCap cap)
Result Shape::stroke(StrokeJoin join) -> Result Shape::strokeJoin(StrokeJoin join)
Result Shape::strokeColor(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a = nullptr) const -> Result Shape::strokeFill(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a = nullptr) const
@Issue: https://github.com/thorvg/thorvg/issues/1372
2023-10-27 11:46:51 +09:00
Hermet Park
e570064eba
animation/lottie: updated the frame count unit.
...
replace the frame count unit from the int32_t to float
since animations could smoothly interpolate key-frames.
This notificably improve the animation smoothness in Lottie
Beta API changes:
Result Animation::frame(uint32_t no) -> Result Animation::frame(float no)
uint32_t Animation::curFrame() const -> float Animation::curFrame() const
uint32_t Animation::totalFrame() const -> float Animation::totalFrame() const
2023-10-24 11:49:57 +09:00
Hermet Park
a6d7a19047
api: enhance the API usage.
...
Allow users to omit the default type casting for added convenience.
2023-10-18 14:35:57 +09:00
Sergii Liebodkin
ce2a3f6040
capi: introduce missing blend functions in capi bindings
2023-10-18 10:39:45 +09:00
Hermet Park
2b7c47f2b5
doc/capi: updated
2023-09-26 19:06:57 +09:00
Hermet Park
ac82234360
capi: api sync up.
...
added beta apis:
- enum Tvg_Composite_Method::TVG_COMPOSITE_METHOD_INVERSE_LUMA_MASK;
promote apis:
- TVG_API Tvg_Result tvg_shape_set_stroke_miterlimit(Tvg_Paint* paint, float miterlimit);
- TVG_API Tvg_Result tvg_shape_get_stroke_miterlimit(const Tvg_Paint* paint, float* miterlimit);
@Issue: https://github.com/thorvg/thorvg/issues/1669
2023-09-25 21:33:23 +09:00
Hermet Park
749523b709
capi/animation: support animation features under the beta.
...
New APIs:
- Tvg_Animation* tvg_animation_new();
- Tvg_Result tvg_animation_set_frame(Tvg_Animation* animation, uint32_t no);
- Tvg_Paint* tvg_animation_get_picture(Tvg_Animation* animation);
- Tvg_Result tvg_animation_get_cur_frame(Tvg_Animation* animation, uint32_t* no);
- Tvg_Result tvg_animation_get_total_frame(Tvg_Animation* animation, uint32_t* cnt);
- Tvg_Result tvg_animatoon_get_duration(Tvg_Animation* animation, float* duration);
- Tvg_Result tvg_animation_del(Tvg_Animation* animation);
2023-09-25 12:27:22 +09:00