Mira Grudzinska
4786ffc315
lottie_loader: fixing error with math consts
...
The math.h was included before the _USE_MATH_DEFINES
was defined (in tvgMath.h) causing an error while
MinGw was used.
Since non of these header is needed directly, the header
is removed.
2023-08-01 14:53:36 +02:00
Hermet Park
816f179c74
loader lottie: fix the last memory leak.
2023-07-29 16:16:37 +09:00
Hermet Park
e0ed2c7ace
loader lottie: ++safety.
...
It shouldn't corrupt, even if it doesn't support certain features.
2023-07-29 10:29:03 +09:00
Hermet Park
229efd7807
loader lottie: fixed the memory leaks.
...
All memory leaks detected by the sanitizer have been fixed.
2023-07-29 10:29:03 +09:00
Hermet Park
a74062d5f1
loader tvg: add missing strokeFirst property.
...
tvg binary missed the stroke order,
this patch implements the missing condition.
@Issue: https://github.com/thorvg/thorvg/issues/1499
2023-07-28 21:57:40 +09:00
Hermet Park
68b8fce501
loader lottie: ++optimization.
...
Aggressive parallelization is implemented to perform updates
on every frame in an asynchronous manner.
2023-07-28 16:54:44 +09:00
Hermet Park
023b38ad3c
loader lottie: fix a missing initialization.
...
this breaks 0 frame lottie rendering, now it's fixed.
2023-07-28 16:54:44 +09:00
Mira Grudzinska
4f9f125454
svg_loader: update style in defs
...
In the defs node the style was not updated, hence
the inheritance wasn't applied causing wrong results.
2023-07-28 12:11:24 +09:00
Mira Grudzinska
b0e41b2b9f
svg_loader: support the '!important' directive
...
The directive is used to give a specific style property
higher priority, ensuring that it overrides other style
declarations for the same property.
@Issue: https://github.com/thorvg/thorvg/issues/1255
2023-07-27 11:51:45 +09:00
Hermet Park
193a9833a8
lottie loader: implement the necessary interaces.
2023-07-27 00:31:27 +09:00
Hermet Park
73a8792eae
loader lottie: add lottie builder.
2023-07-27 00:31:27 +09:00
Hermet Park
03f878bb2e
loader lottie: adds the lottie property, model and parser.
2023-07-27 00:31:27 +09:00
Hermet Park
b060959e0d
loader lottie: add a lottie specific interpolator.
2023-07-27 00:31:27 +09:00
Hermet Park
60f81b7da7
loader lottie: added empty interface body
...
This marks the first step towards implementing the Lottie feature.
2023-07-27 00:31:27 +09:00
Hermet Park
0f40eb90ae
common loader: adds animatable() interface
...
This interface returns a value indicating
whether the current loader supports animation or not.
2023-07-27 00:31:27 +09:00
Hermet Park
250e2d7d34
loader lottie: +rapidjson for lottie json parser.
...
We've investigated two json parsers, simdjson & rapidjson.
Since the size is higer priorty for thorvg, we adopted rapidjson.
It's under MIT license.
See: https://github.com/Tencent/rapidjson
2023-07-27 00:31:27 +09:00
Hermet Park
de6df1fb21
loader svg: --compiler warning
...
warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
2023-07-26 00:46:30 +09:00
Mira Grudzinska
de41853bcf
svg_loader: custom strndup moved into utils
...
The custom _strndup was used only in one file
as an internal function and wasn't accessible
in other parts of the code. Now function
is available as svgUtilStrndup.
2023-07-26 00:21:56 +09:00
Hermet Park
a1f0b06f41
common array: revise code.
...
maintain code with an optimial size.
2023-07-25 19:57:12 +09:00
Hermet Park
accb8c5699
svg loader: --compiler warnings
...
../src/loaders/svg/tvgSvgLoader.cpp: In function ‘void _copyAttr(SvgNode*, const SvgNode*)’:
../src/loaders/svg/tvgSvgLoader.cpp:2911:44: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
2911 | if (to->node.polygon.pts.count = from->node.polygon.pts.count) {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/loaders/svg/tvgSvgLoader.cpp:2917:45: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
2917 | if (to->node.polyline.pts.count = from->node.polyline.pts.count) {
2023-07-04 01:17:25 +09:00
Hermet Park
d72d6aa51f
loader svg: code cleanup
...
Use array instead of individual dynamic array implementation.
This also fixes wrong polygon & polyline data access during copy & paste...
2023-07-04 01:09:23 +09:00
Hermet Park
95ebbe4339
common array: + copy constructor
...
introduce the copy constructor to prevent duplicated code.
2023-07-04 01:09:23 +09:00
Hermet Park
075e3e6b2a
tvg: support stroke miterlimit property.
...
implement the miterlimit property that was introduced by
44a750ee5d
@Issue: https://github.com/thorvg/thorvg/issues/1490
2023-06-14 10:46:12 +09:00
Hermet Park
8398fdbca7
tvg: recover the broken compatibility.
...
The issue was introduced by b214fd23bc
2023-06-13 12:23:17 +09:00
Martin Capitanio
44a750ee5d
API, CAPI, sw_engine: add suport for stroke-miterlimit.
2023-06-13 10:42:20 +09:00
JunsuChoi
595cc56e86
webp_loader: Introduce Webp image loader
...
Add external_webp loader which uses libwebp library.
2023-06-09 10:58:01 +09:00
Hermet Park
b214fd23bc
common canvas/scene: introduce paints() api that returns the list of the paints.
...
These new apis would enable users to easily modify the motion scene,
The data structure of the paints has been changed from an array to a list.
@APIs:
std::list<Paint*>& Canvas::paints() noexcept;
std::list<Paint*>& Scene::paints() noexcept;
@Deprecated:
Result Canvas::reserve(uint32_t size) noexcept;
Result Scene::reserve(uint32_t size) noexcept;
@Issue: https://github.com/thorvg/thorvg/issues/1203
2023-06-09 10:54:03 +09:00
Hermet Park
6cbc1de570
api: enhance Shape::stroke() method usage.
...
Designate a default value for alpha which is mostly optional.
2023-06-07 12:10:31 +09:00
Hermet Park
1ae92daa9d
api: enhance Shape::fill() method usage.
...
Designate a default value for alpha which is mostly optional.
2023-06-07 12:10:31 +09:00
Martin Capitanio
8b810bed87
tvgJpgd.cpp: Warnings - set but unused variables.
...
[41/145] Compiling C++ object src/libthorvg.a.p/loaders_jpg_tvgJpgd.cpp.o
../src/loaders/jpg/tvgJpgd.cpp:1339:17: warning: variable 'bytes' set but not used [-Wunused-but-set-variable]
uint32_t c, bytes = 0;
^
../src/loaders/jpg/tvgJpgd.cpp:1773:29: warning: variable 'row_block' set but not used [-Wunused-but-set-variable]
int mcu_row, mcu_block, row_block = 0;
^
../src/loaders/jpg/tvgJpgd.cpp:1876:9: warning: variable 'row_block' set but not used [-Wunused-but-set-variable]
int row_block = 0;
^
3 warnings generated.
2023-05-24 10:12:57 +09:00
Hermet Park
5ceeb32ef0
api: remove a beta api.
...
- Result Picture::viewbox(float* x, float* y, float* w, float* h) const; //c++
- vg_Result tvg_picture_get_viewbox(const Tvg_Paint* paint, float* x, float* y, float* w, float* h); //c
@Issue: https://github.com/thorvg/thorvg/issues/1372
2023-05-20 13:22:52 +09:00
Hermet Park
f2fdc380b4
fix compiler warnings on MacOS
...
warning: unqualified call to 'std::move' [-Wunqualified-std-cast-call]
2023-05-19 10:56:59 +09:00
Mira Grudzinska
2cfa5505c3
svg_loader: fixing finding defs node
...
In the case when a 'use' node was used
in a 'defs' block and the element it
referenced was also defined within the same
'defs' block, the reference node could not
be cloned. This was because the 'defs' node
could not be located.
@Issue: https://github.com/thorvg/thorvg/issues/1451
2023-05-16 10:43:45 +09:00
Mira Grudzinska
40ef9031ba
svg_loader: copy the use node properties
...
A bug was observed when a 'use' node was
referenced in another 'use' node.
@Issue: https://github.com/thorvg/thorvg/issues/1451
2023-05-16 10:42:35 +09:00
JunsuChoi
597b88b118
jpg_loader: Add file existence check
...
Prevent memory leaks.
==2277==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 24 byte(s) in 1 object(s) allocated from:
#0 0x7f71c4ff2587 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cc:104
#1 0x7f71c4a8d56a in jpgdHeader(char const*, int*, int*) ../src/loaders/jpg/tvgJpgd.cpp:2930
#2 0x7f71c4ad4f85 in JpgLoader::open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ../src/loaders/jpg/tvgJpgLoader.cpp:59
#3 0x7f71c497d663 in LoaderMgr::loader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool*) ../src/lib/tvgLoader.cpp:174
#4 0x7f71c4992d81 in tvg::Picture::Impl::load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ../src/lib/tvgPictureImpl.h:220
#5 0x7f71c498aa86 in tvg::Picture::load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ../src/lib/tvgPicture.cpp:58
#6 0x55df238cb293 in C_A_T_C_H_T_E_S_T_24 ../test/testPicture.cpp:371
#7 0x55df2366d499 in Catch::RunContext::invokeActiveTestCase() ../test/catch.hpp:13025
#8 0x55df236dee1b in Catch::RunContext::runCurrentTest(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) ../test/catch.hpp:12998
#9 0x55df23710586 in Catch::RunContext::runTest(Catch::TestCase const&) ../test/catch.hpp:12759
#10 0x55df237252d4 in execute ../test/catch.hpp:13352
#11 0x55df237252d4 in Catch::Session::runInternal() ../test/catch.hpp:13562
#12 0x55df23726b86 in Catch::Session::run() ../test/catch.hpp:13518
#13 0x55df235f7179 in int Catch::Session::run<char>(int, char const* const*) ../test/catch.hpp:13236
#14 0x55df235f7179 in main ../test/catch.hpp:17543
#15 0x7f71c3791082 in __libc_start_main ../csu/libc-start.c:308
SUMMARY: AddressSanitizer: 24 byte(s) leaked in 1 allocation(s).
2023-05-11 23:44:46 +09:00
Hermet Park
da6216f9bf
sw_engine: specify buffer size so that we can clearly access the buffer data.
...
Also, it introduces the 'pixel_t' type to ensure that anonymous pixel data
follows the system's decision.
2023-05-08 10:55:03 +09:00
Hermet Park
527b1af926
common sw_engine: applied colorspace format size.
...
Now backend engines know which channel size is required for
compositions.
@Issue: https://github.com/thorvg/thorvg/issues/976
2023-05-08 10:55:03 +09:00
Mira Grudzinska
4599067bee
svg_loader: fixing percent. calculations of width/height
...
The conversion to percentages was applied twice.
Additionally, when a viewbox value was provided before the width/height,
incorrect scaling occurred.
@Issue: https://github.com/thorvg/thorvg/issues/1414
2023-05-04 09:52:55 +09:00
Hermet Park
9a9c0e7907
svg_loader: code refactoring.
...
simplify the logic and remove unnecessary member data.
2023-05-03 22:08:16 +09:00
Hermet Park
f82c274444
svg_loader: fix memory violation.
...
LoadModule data is designed to be returned to the user's call.
and should not be writable in Task::run()
@Issue: https://github.com/thorvg/thorvg/issues/1409
2023-05-03 22:08:16 +09:00
Mira Grudzinska
92346c4119
svg_loader: handling svg width/height in percentages
...
The percentages should refer to the size of the viewbox.
This was not the case for not knowing the viewbox before
reading the width/height.
@Issue: https://github.com/thorvg/thorvg/issues/1409
2023-05-03 20:35:08 +09:00
Hermet Park
e9b12aa9f7
engine/loaders: Migrate alpha premultiplying to the engine side.
...
It's not efficient to handle alpha premultiplying in every loader.
The backend engine should be responsible for it.
Now, we can remove duplicate code.
2023-04-29 12:37:09 +09:00
Hermet Park
c710af2560
loaders: Remove the color space conversion on the loader side.
...
Now, the job is completely delegated to the backend engine.
2023-04-28 15:27:53 +09:00
Hermet Park
cf4484c1ad
engine/loaders: develop the ColorSpace feature infrastructure
...
Replace the existing fragile usage of the colorspace data type
with a new and robust concrete ColorSpace type.
2023-04-28 15:27:53 +09:00
Hermet Park
1e370712e0
loader svg: ++code readability
...
Use own bit operation helpers.
2023-04-26 11:15:48 +09:00
Mira Grudzinska
bf2b348343
svg_loader: removed unused code
...
While css styling applied one of conditions was
always false. It is now removed and the function
that was called is refactored
2023-04-25 14:30:40 +09:00
Mira Grudzinska
83ffe9f612
svg_loader: fixing grad overwritting
...
Gradient was mistakenly overwritten in
files in which the <def> section existed,
but grad was defined outside it.
2023-04-25 14:30:23 +09:00
Mira Grudzinska
ef93a45d56
svg_loader: removing setting the locale
...
The locale was set while reading the path attr,
which could have caused race conditions between
threads and potentially led to crashes.
Now removed as unnecessary.
@Issue: https://github.com/thorvg/thorvg/issues/1389
2023-04-25 09:17:00 +09:00
Mira Grudzinska
74c9a5f795
svg_loader: changed update order
...
The gradient was updated before the style,
which resulted in only the URL tag being
inherited, but the gradient itself was not
applied to the node.
2023-04-25 09:01:19 +09:00
Mira Grudzinska
b0991b6ce7
svg_loader: fixing 'infinity' handling in svgUtilStrtof
...
The word 'infinity' was not read to the end due to
the pointer shifting.
2023-04-24 10:47:17 +09:00