Michal Maciola [Fri, 16 Jul 2021 00:48:35 +0000 (02:48 +0200)]
svg_loader: image tag: force size equal to the viewbox (#603)
* svg_loader: image tag: force size equal to the viewbox
For some svg files it is needed to force size equal the viewbox
for proper scaling
* svg_loader: image tag: force size equal to the viewbox fix #1
Change-Id: I480e832b1f5a184ef0ef6ee597a320d5bbf7b508
Michal Maciola [Wed, 14 Jul 2021 07:50:15 +0000 (09:50 +0200)]
test: testPicture added .jpg and .png loading tests
Michal Maciola [Thu, 15 Jul 2021 15:34:54 +0000 (17:34 +0200)]
test capi: added missing canvas, paint and shape tests
Added tests for tvg_canvas_reserve, tvg_canvas_update_paint, tvg_paint_duplicate, tvg_paint_set_composite_method, tvg_shape_cubic_to, tvg_shape_close
Michal Maciola [Thu, 15 Jul 2021 15:32:41 +0000 (17:32 +0200)]
test capi: Stroke Radial Gradient
Added tvg_shape_get_gradient
Michal Maciola [Thu, 15 Jul 2021 09:13:20 +0000 (11:13 +0200)]
test: render jpg and png files
Michal Maciola [Wed, 14 Jul 2021 14:32:43 +0000 (16:32 +0200)]
test capi: Stroke Linear Gradient fix #2
Michal Maciola [Wed, 14 Jul 2021 08:40:40 +0000 (10:40 +0200)]
test capi: Stroke Linear Gradient fix #1
Added tvg_shape_get_gradient
Michal Maciola [Wed, 14 Jul 2021 07:38:34 +0000 (09:38 +0200)]
test capi: Stroke Linear Gradient
Michal Maciola [Thu, 15 Jul 2021 00:24:13 +0000 (02:24 +0200)]
github actions: added tvg and jpg loaders (#613)
* github actions: added tvg and jpg loaders
* github actions: added tvg and jpg loaders fix #1
Added install libturbojpeg
Michal Maciola [Wed, 14 Jul 2021 09:27:19 +0000 (11:27 +0200)]
test: svg rendering
Added SVG file loading and rendering for increasing TC Line coverage
Line coverage for src/loaders/svg: 85.5%
Michal Maciola [Wed, 14 Jul 2021 09:59:50 +0000 (11:59 +0200)]
test capi: scene added negative tests
Michal Maciola [Wed, 14 Jul 2021 11:57:32 +0000 (13:57 +0200)]
example: logo_test.svg (#617)
Manually created svg with edited logo.svg that test most of the svg tags
and attributes
Michal Maciola [Wed, 14 Jul 2021 10:19:42 +0000 (12:19 +0200)]
capi binding: added missing null paint check (#616)
Michal Maciola [Tue, 13 Jul 2021 09:26:15 +0000 (11:26 +0200)]
svg_loader: image tag: fixed utf8 decode
Fixed svgUtilURLDecode function.
Deleted snippet was not needed and it broken decoding when space.
Change-Id: I1f14ff60c10f8c73006c7ab4fc6bf0b0f945d02e
Michal Maciola [Tue, 13 Jul 2021 12:28:52 +0000 (14:28 +0200)]
svg_loader: race condition on arc processing
Unneeded static keyword in _pathAppendArcTo function led to race
conditioning
@issue: #604
Change-Id: I1741b56f6cf210b7709f513aceb657840851b3bf
JunsuChoi [Mon, 12 Jul 2021 02:55:33 +0000 (11:55 +0900)]
svg_loader SvgPath: Skip invalid path
If the d attribute of SVG path is not parsed through _nextCommand(),
it is regarded as an invalid data.
Hermet Park [Mon, 12 Jul 2021 04:47:10 +0000 (04:47 +0000)]
Merge "bump up version v0.3.0" into tizen
JunsuChoi [Mon, 12 Jul 2021 04:26:32 +0000 (13:26 +0900)]
svg_loader SvgUtil: Move nullcheck to before use
prevent invalid access
JunsuChoi [Mon, 12 Jul 2021 00:57:48 +0000 (09:57 +0900)]
svg_loader SvgLoader: Initialize to flag value of SvgParser
This patch fixes valgrind detection
$valgrind --leak-check=yes ./Svg
==21410== Conditional jump or move depends on uninitialised value(s)
==21410== at 0x505DB66: _attrParseStops(void*, char const*, char const*) (tvgSvgLoader.cpp:2099)
==21410== by 0x5064F6D: simpleXmlParseAttributes(char const*, unsigned int, bool ()(void, char const*, char const*), void const*) (tvgXmlParser.cpp:319)
==21410== by 0x5061774: _svgLoaderParserXmlOpen(SvgLoaderData*, char const*, unsigned int, bool) (tvgSvgLoader.cpp:2387)
==21410== by 0x5061857: _svgLoaderParser(void*, SimpleXMLType, char const*, unsigned int) (tvgSvgLoader.cpp:2408)
==21410== by 0x5065052: simpleXmlParse(char const*, unsigned int, bool, bool ()(void, SimpleXMLType, char const*, unsigned int), void const*) (tvgXmlParser.cpp:425)
==21410== by 0x5061993: SvgLoader::run(unsigned int) (tvgSvgLoader.cpp:2757)
==21410== by 0x5052F5E: operator() (tvgTaskScheduler.h:68)
==21410== by 0x5052F5E: tvg::TaskSchedulerImpl::run(unsigned int) (tvgTaskScheduler.cpp:138)
==21410== by 0x62C36DE: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==21410== by 0x6DA36DA: start_thread (pthread_create.c:463)
==21410== by 0x68C871E: clone (clone.S:95)
JunsuChoi [Mon, 12 Jul 2021 01:14:51 +0000 (10:14 +0900)]
svg_loader SvgLoader: Fix memory leak of duplicate declared id
Duplicate declaration of id attribute is invaild.
We do not have a separate policy for invalid svg files.
Therefore, it is a priority to prevent crashes or memory leaks.
If an id is declared as duplicate, the last declared id is used.
Hermet Park [Mon, 12 Jul 2021 03:34:10 +0000 (12:34 +0900)]
bump up version v0.3.0
Change-Id: I14dee32b383a9af4e4a334df4b88a9767d210ad6
Hermet Park [Sun, 11 Jul 2021 02:37:28 +0000 (11:37 +0900)]
Update README.md
Hermet Park [Sun, 11 Jul 2021 02:34:59 +0000 (11:34 +0900)]
Update LICENSE
Hermet Park [Sun, 11 Jul 2021 02:33:43 +0000 (11:33 +0900)]
Update AUTHORS
Hermet Park [Sat, 10 Jul 2021 14:48:17 +0000 (23:48 +0900)]
commong shape: --sanitizer report
null pointer passed as argument 2, which is declared to never be null
Hermet Park [Fri, 9 Jul 2021 15:34:57 +0000 (00:34 +0900)]
Update CONTRIBUTING.md
Hermet Park [Fri, 9 Jul 2021 08:37:58 +0000 (17:37 +0900)]
jpg_loader: code refactoring
keep it clean and neat code add some TODO comments for the future tasks.
This also fixes potential data memory leak.
Michal Maciola [Thu, 1 Jul 2021 08:53:06 +0000 (10:53 +0200)]
example svg: 'image-embeded.svg' added fix #2
Chenaged indent to tabs
Michal Maciola [Thu, 1 Jul 2021 08:44:15 +0000 (10:44 +0200)]
example svg: 'image-embeded.svg' added fix #1
Added png image with composition applied
Michal Maciola [Thu, 1 Jul 2021 08:03:32 +0000 (10:03 +0200)]
example svg: 'image-embeded.svg' added
Hermet Park [Fri, 9 Jul 2021 07:53:08 +0000 (16:53 +0900)]
jpg_loader: change source file mode 664
JunsuChoi [Fri, 9 Jul 2021 04:22:43 +0000 (13:22 +0900)]
jpg_loader JpgLoader: Prevent memory leak
If the copied data in JpgLoader's data open is invalid,
it is processed without being cleared.
Therefore, data memory free is handled in the destructor.
Michal Maciola [Thu, 8 Jul 2021 08:49:21 +0000 (10:49 +0200)]
svg_loader: <image> tag introduced fix #9
Fixed Base64 and utf8 for new line and whitespace
Changed tvgSvgLoaderCommon.h to single line convention
Michal Maciola [Tue, 6 Jul 2021 09:33:44 +0000 (11:33 +0200)]
svg_loader: <image> tag introduced fix #8
Disable embedded svg files to protect against recursive svg image loading
Michal Maciola [Mon, 5 Jul 2021 07:12:40 +0000 (09:12 +0200)]
svg_loader: <image> tag introduced fix #7
fixed auto and new lines in tvgSvgUtil.cpp
Michal Maciola [Fri, 2 Jul 2021 11:05:10 +0000 (13:05 +0200)]
svg_loader: <image> tag introduced fix #6
Moved file:// removing into _imageBuildHelper
Michal Maciola [Fri, 2 Jul 2021 09:22:26 +0000 (11:22 +0200)]
svg_loader: <image> tag introduced fix #5
Added copyAttr for image
Michal Maciola [Thu, 1 Jul 2021 08:59:44 +0000 (10:59 +0200)]
svg_loader: <image> tag introduced fix #4
fixed mistyped vw to w and vh to h
Michal Maciola [Thu, 1 Jul 2021 08:42:17 +0000 (10:42 +0200)]
svg_loader: <image> tag introduced fix #3
Added working composition
Michal Maciola [Thu, 1 Jul 2021 08:08:12 +0000 (10:08 +0200)]
svg_loader: <image> tag introduced fix #2
Removed #ifdef from tvgSvgSceneBuilder.cpp
Michal Maciola [Thu, 1 Jul 2021 07:59:36 +0000 (09:59 +0200)]
svg_loader: <image> tag introduced fix #1
Fixed href string deleting
Michal Maciola [Wed, 30 Jun 2021 17:08:38 +0000 (19:08 +0200)]
svg_loader: <image> tag introduced
This patch introduces embeded <image> tag for svg files.
Images can be now loaded from local path or using data URI Scheme (RFC2397).
Base64 and utf8/uri are welcome.
@issue: #518
Hermet Park [Thu, 8 Jul 2021 11:05:24 +0000 (20:05 +0900)]
svg_loader: fix gradient memory leak.
@Issue: https://github.com/Samsung/thorvg/issues/548
Hermet Park [Thu, 8 Jul 2021 10:25:50 +0000 (19:25 +0900)]
svg_loader: optimize memory usage.
-- unnecessary memory fragmentation.
Michal Maciola [Thu, 8 Jul 2021 13:50:21 +0000 (15:50 +0200)]
example: PictureJpg.cpp
Created an example for testing jpg loading
Hermet Park [Thu, 8 Jul 2021 11:20:49 +0000 (20:20 +0900)]
sw_engine renderer: fix memory leak.
prepared compositors can be dangled if the rendering is not occured.
free them by doubl-checking in the destructor.
@Issue: https://github.com/Samsung/thorvg/issues/547
Hermet Park [Thu, 8 Jul 2021 08:52:10 +0000 (17:52 +0900)]
test capi: complement scene test cases.
jykeon [Fri, 2 Jul 2021 01:20:20 +0000 (10:20 +0900)]
tests capi: Add capi Scene TC.
Michal Maciola [Wed, 7 Jul 2021 06:34:15 +0000 (08:34 +0200)]
svg_loader: postpone cloneNode()
Some svg export software puts <defs> element at the end of the file.
If so, the <defs> element won't be found, when parsing <use>.
In such scenario, this patch postpone node cloning until the whole file
is parsed.
@issue: #568
Hermet Park [Wed, 7 Jul 2021 04:48:27 +0000 (13:48 +0900)]
infra: ++ jpg support meson message
Michal Maciola [Fri, 2 Jul 2021 08:23:13 +0000 (10:23 +0200)]
jpg_loader: introduced jpg decode using libjpeg-turbo fix #1
Added bool open(const char* data, uint32_t size, bool copy);
Michal Maciola [Fri, 2 Jul 2021 07:23:57 +0000 (09:23 +0200)]
jpg_loader: introduced jpg decode using libjpeg-turbo
This patch introduces a jpg loader.
For decoding the image, libjpeg-turbo library is used. Library was found to be
fast (SIMD instructions accelerated) and portable.
@issue: #517
JunsuChoi [Tue, 6 Jul 2021 01:39:00 +0000 (10:39 +0900)]
svg_loader: Support percentage unit of dash-array
Refers to the diagonal length of the viewport.
https://www.w3.org/TR/SVG2/coords.html#Units
Michal Maciola [Fri, 2 Jul 2021 12:03:18 +0000 (14:03 +0200)]
png_loader: added open from memory
Added PngLoader::open(const char* data, uint32_t size, bool copy)
Changed variables visibility to private
Mira Grudzinska [Tue, 29 Jun 2021 14:17:41 +0000 (16:17 +0200)]
svg_loader: set the priority for the style attribute for stop properties
Stop properies stop-color and stop-opacity set using a style attribute should
have higher priority than properties set in a different way.
Mira Grudzinska [Tue, 29 Jun 2021 12:30:56 +0000 (14:30 +0200)]
svg_loader: set the higher priority of style attributes
issue #515
Hermet Park [Tue, 6 Jul 2021 02:13:16 +0000 (11:13 +0900)]
common: code refactoring.
remove unnecessary comments,
its field name is enough descriptive. (It has to be!)
Mira Grudzinska [Thu, 24 Jun 2021 23:11:28 +0000 (01:11 +0200)]
tvg_loader: change values of flags
It's a middle stage leading to removing flags from the tvgBinaryDesc.h file
and use the corresponding enums from the thorvg.h file.
Hermet Park [Tue, 6 Jul 2021 01:43:36 +0000 (10:43 +0900)]
sw_engine fill: correct the range of opacity,
also some minor code refactors.
Michal Maciola [Sat, 3 Jul 2021 10:48:42 +0000 (12:48 +0200)]
svg_loader: fix dead loop on none digit char in stroke-dasharray fix #3
Added zero and negative value protection
Michal Maciola [Fri, 2 Jul 2021 18:10:02 +0000 (20:10 +0200)]
svg_loader: fix dead loop on none digit char in stroke-dasharray fix #2
Moved _skipComma at the begining of the loop
Michal Maciola [Fri, 2 Jul 2021 13:57:12 +0000 (15:57 +0200)]
svg_loader: fix dead loop on none digit char in stroke-dasharray
Mira Grudzinska [Mon, 5 Jul 2021 22:28:10 +0000 (00:28 +0200)]
sw_engine: stop-opacity value should be interpolated between stops
The opacity value is interpolated as are all color channels.
It's similar to the reverted commit ac95433, but with two slight changes
(alpha_blend was missing in the ctable init and 'a' was used in an if
statement instead of 'a2').
Hermet Park [Sat, 3 Jul 2021 06:36:01 +0000 (15:36 +0900)]
infra: enable capi unit-test in default
Hermet Park [Sat, 3 Jul 2021 16:23:18 +0000 (01:23 +0900)]
test filling: add fill/linear/radial gradients.
Hermet Park [Sat, 3 Jul 2021 16:36:51 +0000 (01:36 +0900)]
common linear_gradient: fix to allow zero size linear.
We can't judge zero size gradient is error case.
Non-filled linear is possibly intended by calculation.
Hermet Park [Sat, 3 Jul 2021 07:47:09 +0000 (16:47 +0900)]
test capi: code refactoring
use catch Approx functions to compare floating-point values.
Hermet Park [Sat, 3 Jul 2021 07:09:56 +0000 (16:09 +0900)]
common picture: fix invalid size returns from raw image.
picture/raw should update the size if the raw image
with size values are entered.
Hermet Park [Sat, 3 Jul 2021 06:56:38 +0000 (15:56 +0900)]
test picture: ++ raw data loading.
Hermet Park [Sat, 3 Jul 2021 06:28:14 +0000 (15:28 +0900)]
test capi: add Picture unit test
Hermet Park [Sat, 3 Jul 2021 05:58:17 +0000 (14:58 +0900)]
infra: print enabled features in the meson summary list.
instead removed individual messages.
Michal Maciola [Thu, 1 Jul 2021 09:29:22 +0000 (11:29 +0200)]
svg_loader: multiple composition memory leak
Multiple composition are still not supported, but this patch fixes a
memory leak if it is tried to be applied.
Michal Maciola [Fri, 2 Jul 2021 08:38:21 +0000 (10:38 +0200)]
svg_loader: memory leak after improper stop tag fix #1
Updated printf message
Michal Maciola [Thu, 1 Jul 2021 10:32:28 +0000 (12:32 +0200)]
svg_loader: memory leak after improper stop tag
<stop> tag should be always a child of a <linearGradient> or
<radialGradient> element, but there were files with <stop> tag inside <rect>.
This patch fixes a memory leak if no gradient is defined before <stop> tag.
Hermet Park [Sat, 3 Jul 2021 04:08:50 +0000 (13:08 +0900)]
infra: just released v0.3.0
Hermet Park [Fri, 2 Jul 2021 02:24:37 +0000 (11:24 +0900)]
test Picture: add Picture unit tests
Hermet Park [Fri, 2 Jul 2021 03:40:39 +0000 (12:40 +0900)]
common picture: ++exception case.
Fixed load() to return InvalidArgument if the file path is invalid.
JunsuChoi [Fri, 2 Jul 2021 02:14:56 +0000 (11:14 +0900)]
svg_loader SvgPath: Added corner case handling for flags of Arc
Moved the if statement to check if it is a float.
This patch is that reverts and fixes the reverted patch 55a5b9.
Hermet Park [Fri, 2 Jul 2021 03:04:08 +0000 (12:04 +0900)]
infra: ++ strict build test
Enable png loader in default.
Hermet Park [Fri, 2 Jul 2021 02:37:35 +0000 (11:37 +0900)]
common picture: ++ exception case.
size() returns InsufficientCondition if it doesn't have any loaded data.
Hermet Park [Fri, 2 Jul 2021 01:38:28 +0000 (10:38 +0900)]
test Shape: add Shape unit tests
Hermet Park [Thu, 1 Jul 2021 11:04:30 +0000 (20:04 +0900)]
common shape: allow to reset stroke dash.
user may need to reset stroke dash to off,
now stroke api allows it.
Hermet Park [Sat, 3 Jul 2021 04:47:54 +0000 (13:47 +0900)]
fix build break.
This is a temporary fix for dali-integration.
Change-Id: I8204612b62dbe7f86f73e1cd8d6ceebc53e12e08
Hermet Park [Fri, 2 Jul 2021 01:52:32 +0000 (10:52 +0900)]
bump up version v0.2.2
Change-Id: Iddbdbfa6480c12f40a7b53516fba255184f52379
Hermet Park [Thu, 1 Jul 2021 11:34:27 +0000 (20:34 +0900)]
test scene: revert section usage.
Dismiss this usage for consistency.
Yet we have no practical necessity,
we can apply this to *all test suites later.
Change-Id: I382f9df4bea65063a4351f2fa9aebe9d7f2008b5
Hermet Park [Thu, 1 Jul 2021 09:01:29 +0000 (18:01 +0900)]
Revert "svg_loader SvgPath: Added corner case handling for flags of Arc"
This reverts commit
5da4c8113803de9068aa7a1c495b7bddfc530cf4.
Please double-check this regression bug:
examples/images/samsung-galaxy-s.svg
Change-Id: I0c1991fdae15b44979c81458e46522fefde37c26
Hermet Park [Thu, 1 Jul 2021 08:51:10 +0000 (17:51 +0900)]
sw_engine: --sanitizer errors
runtime error: load of value 190, which is not a valid value for type 'bool'
@Issue: https://github.com/Samsung/thorvg/issues/544
Change-Id: Id6b1cd6bae263ac413fd4c198dc905312b9def26
Hermet Park [Thu, 1 Jul 2021 08:38:34 +0000 (17:38 +0900)]
common array: -- sanitizer errors
runtime error: null pointer passed as argument 1, which is declared to never be null
@Issue: https://github.com/Samsung/thorvg/issues/543
Change-Id: I4a584f715cc71a7c0aeca921586e6b8f1fa1a7fe
Hermet Park [Thu, 1 Jul 2021 08:34:59 +0000 (17:34 +0900)]
Revert "sw_engine: stop-opacity value should be interpolated between stops"
This reverts commit
ac95433b53f5fd4a375b7d1952694f17eeda3d0f.
Ahh this breaks examples/images/rg1024_eggs.svg
Change-Id: Id73d4d0ce976de8a6c3f2ca198e7510e78e2838f
Hermet Park [Thu, 1 Jul 2021 03:59:02 +0000 (12:59 +0900)]
update CONTRIBUTING
Change-Id: I22d407a2fd88cdf3dc275e71c7646e670ea55639
Hermet Park [Thu, 1 Jul 2021 03:50:09 +0000 (12:50 +0900)]
Update CONTRIBUTING.md
Change-Id: I61acd2972bd62640d75fbb1309a32c91be473f2c
Hermet Park [Thu, 1 Jul 2021 03:26:52 +0000 (12:26 +0900)]
res: updated images
Change-Id: I1bb0f49832e29ddfddeaea5528e3c78cadcdb40a
Mira Grudzinska [Fri, 25 Jun 2021 11:53:00 +0000 (13:53 +0200)]
svg_loader: recalculating the default values of grads
The default values of gradient properties were handled differently
than the values given by a user/in an svg file.
Change-Id: Iff7edabe33b77593bd74c89e9d9c7efdedcfb381
Hermet Park [Thu, 1 Jul 2021 03:01:27 +0000 (12:01 +0900)]
sw_engine: fix broken MSVC compatibility.
error: use of undeclared identifier 'ulong'
@Issue: https://github.com/Samsung/thorvg/issues/541
Change-Id: Ic0554c2e0160d46c0762b619a62a7eddabcf3743
Mira Grudzinska [Tue, 29 Jun 2021 22:21:48 +0000 (00:21 +0200)]
sw_engine: stop-opacity value should be interpolated between stops
The opacity value is interpolated as are all color channels.
Change-Id: Ib7cf0d33cc354b23d6afa406e50d6ff9b001966a
Michal Maciola [Wed, 30 Jun 2021 08:21:30 +0000 (10:21 +0200)]
svg_loader: allow multiple <defs> tags without data and memory leak (#528)
* svg_loader: allow multiple defs without data and memory leak
If the svg file contained multiple <defs> tags, each subsequent tag
overwritten the previous tag. This resulted in incorrect rendering of the
file and memory leaks.
@Issues: 491
* svg_loader: allow multiple defs without data and memory leak- fix #1
Changed the idea to abandon node creating instead of deleting it after
creation. Removed simpleXmlParseAttributes for _createDefsNode.
Change-Id: Iada1c467949228e116a637c8fd37ceabb5dc34bb
Hermet Park [Wed, 30 Jun 2021 06:27:25 +0000 (15:27 +0900)]
svg_loader: fix a infinite loop error by circular dependency.
Composition can be applied recursively if its children nodes have composition target to this one.
This can be occured by wrong svg description, and tvg prevents this exception case.
@Issue: https://github.com/Samsung/thorvg/issues/494
Change-Id: I9bddf19b1da5317109533260f336cdea54294620
Hermet Park [Wed, 30 Jun 2021 06:15:00 +0000 (15:15 +0900)]
infra: ++ strict build test
Enable log in default.
Change-Id: I3cc0f7debbebb281fe90c2ddb5a4baaaccfba8b3
Hermet Park [Wed, 30 Jun 2021 05:16:27 +0000 (14:16 +0900)]
svg_loader: code refactoring
unify to tvg fill rule.
Change-Id: Ia6cd5d8e64aab410409492f03177322e2073a968
Hermet Park [Wed, 30 Jun 2021 06:12:15 +0000 (15:12 +0900)]
svg_loader: recover partial code from
3e7888b5387a57568c558afc59526d5e672e1859
oops, log was not tested in the patch...
Change-Id: Ia607f4b6095a370c18de9be65c31cbe9f77be15e