Hermet Park [Wed, 21 Jul 2021 02:14:11 +0000 (11:14 +0900)]
tvg format: code refactoring #9
revise format of the macro names, no logical changes.
++ comments for maintenence.
Hermet Park [Tue, 20 Jul 2021 11:03:45 +0000 (20:03 +0900)]
tvg format: code refactoring #8
Hide iterator APIs, simplify it as much as it's necessary.
Hermet Park [Tue, 20 Jul 2021 06:48:15 +0000 (15:48 +0900)]
tvg format: code refactoring #7
remove return type values.
Hermet Park [Tue, 20 Jul 2021 06:39:29 +0000 (15:39 +0900)]
tvg format: code refactoring #6
++ neat & clean code
Hermet Park [Tue, 20 Jul 2021 05:33:11 +0000 (14:33 +0900)]
tvg format: code refactoring #5
replace from ofstream to FILE
We know both have the same purpose, we always prefer the less binary size.
So... this brings the binary size reduction.
1918496 =>
1913528
Hermet Park [Tue, 20 Jul 2021 04:53:17 +0000 (13:53 +0900)]
examples: split Tvg to TvgSaver, PictureTvg
We'd like to clearly split showcases TvgSaver & Picture.
Hermet Park [Tue, 20 Jul 2021 04:42:10 +0000 (13:42 +0900)]
examples: sort file list alphabetical.
Mira Grudzinska [Mon, 19 Jul 2021 11:03:37 +0000 (13:03 +0200)]
tvg_saver: Tvg.cpp example modyfied
Previously the 'test.tvg' file was loaded from the EXAMPLE_DIR.
Now the 'test.tvg' file is created using the tvg saver module
(if in the EXAMPLE_DIR is alread a 'test.tvg' file, it is overwriten)
and then it's loaded using the tvg loader module.
Hermet Park [Tue, 20 Jul 2021 04:33:44 +0000 (13:33 +0900)]
tvg format: code refactoring #4
Remove an unnecessary internal reference.
Hermet Park [Tue, 20 Jul 2021 04:31:25 +0000 (13:31 +0900)]
tvg format: code refactoring #3
use the Array function instead of own implementation.
Hermet Park [Tue, 20 Jul 2021 03:53:16 +0000 (12:53 +0900)]
tvg format: code refactoring #2
code clean up, removed reserved data sector
Hermet Park [Mon, 19 Jul 2021 11:32:31 +0000 (20:32 +0900)]
common saver: change to instance based for future sync/async behavior.
reserve sync() method TODO
Hermet Park [Mon, 19 Jul 2021 11:07:58 +0000 (20:07 +0900)]
common: code refactoring
unify tvg class identifiers
Mira Grudzinska [Mon, 19 Jul 2021 08:31:36 +0000 (10:31 +0200)]
tvg_saver: implementation of the Saver class
The Saver class enables to save any Paint object (Scene, Shape, Picture)
in a binary file. To read the file the tvg loader should be used.
To save a paint a new API was introduced - tvg::Saver::save.
Mira Grudzinska [Mon, 19 Jul 2021 08:28:14 +0000 (10:28 +0200)]
common: introducing basic iterators functionality
The introduced Iterator class enables to access the children nodes
of a given Paint.
Hermet Park [Mon, 19 Jul 2021 07:26:27 +0000 (16:26 +0900)]
sw_engine renderer: code refactoring
+ trivial changes while reading the code.
Hermet Park [Mon, 19 Jul 2021 06:06:44 +0000 (15:06 +0900)]
jpg_loader: code refactoring
remove unnecessary member variables.
Mira Grudzinska [Mon, 19 Jul 2021 07:02:10 +0000 (09:02 +0200)]
sw_engine: preventing a double application of the opacity (#540)
For filled and stroked shapes with a gradient, the opacity
was applied during the composition and during the ctable update.
To prevent this, in case the composition occured, ctable
is updated with the opacity = 255.
Michal Maciola [Mon, 19 Jul 2021 05:55:23 +0000 (07:55 +0200)]
jpg_loader: decompress header on opening
Hermet Park [Mon, 19 Jul 2021 05:31:18 +0000 (14:31 +0900)]
infra: seprate test image resources from the examples.
change for removing dependency.
Hermet Park [Mon, 19 Jul 2021 03:06:47 +0000 (12:06 +0900)]
bump up version 0.3.1
Change-Id: Id0aee760027f288fbfe547d974e4241aa500e40b
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.