platform/core/graphics/tizenvg.git
3 years agoexamples: move tests to src/examples
Hermet Park [Fri, 18 Sep 2020 15:34:46 +0000 (00:34 +0900)]
examples: move tests to src/examples

tests is now officially placed in src/examples,
default is turned off, only necessaries turn it on.

ex) meson . build -Dexamples=true

+ this examples are required efl 'elementary' package.

Change-Id: I60be4a45d520eab138e25212fbc4de3691bf1127

3 years agobindings/capi: fix c compatibility warnings.
Hermet Park [Fri, 18 Sep 2020 14:36:33 +0000 (23:36 +0900)]
bindings/capi: fix c compatibility warnings.

Change-Id: Idcd5736851950459ea7ad4af96662ea64013be75
warning: empty struct has size 0 in C, size 1 in C++ [-Wextern-c-compat]

3 years agocommon: binary optimization. (#65)
Hermet Park [Fri, 18 Sep 2020 07:34:12 +0000 (16:34 +0900)]
common: binary optimization. (#65)

removed unique_ptr usages from pImpl pattern.
that increased binary size.

2204082 -> 2045672

Change-Id: Idb2c25769704b246d51dce6da5bf85b240787205

3 years agocommon: code refactoring. accepted/tizen/unified/20200923.024103 submit/tizen/20200920.213436
Hermet Park [Fri, 18 Sep 2020 03:14:01 +0000 (12:14 +0900)]
common: code refactoring.

revise duplicate() approach with stategy pattern.

Change-Id: Id829e6ed5bad481ed317f036ee82991a01faa1c1

3 years agoUpdate README.md
Hermet Park [Thu, 17 Sep 2020 11:57:43 +0000 (20:57 +0900)]
Update README.md

fix typos.

Change-Id: Ibd3b4b860e2223f2366cb7867d468c7cb913171c

3 years agobuild: renamed utilities to tools
Hermet Park [Thu, 17 Sep 2020 11:53:25 +0000 (20:53 +0900)]
build: renamed utilities to tools

Change-Id: Ia0675ebbbdfec9aeb8f97ff43804457b68cb30b4

3 years agoUpdate README.md
Hermet Park [Thu, 17 Sep 2020 11:49:47 +0000 (20:49 +0900)]
Update README.md

Change-Id: I7b1f3868b35cee3f1f10cb4606758607a8f57534

3 years agoUpdate README.md
Hermet Park [Thu, 17 Sep 2020 11:49:10 +0000 (20:49 +0900)]
Update README.md

Updated Svg to Png section.

Change-Id: I669fac4f0c2d05e4a55251ffedd8cae8b7ef4f76

3 years agoReadMe: Add description for svg2png (#62)
JunsuChoi [Thu, 17 Sep 2020 11:35:43 +0000 (20:35 +0900)]
ReadMe: Add description for svg2png (#62)

Change-Id: Ieec329b35070308614fa6f774e1b92f2c52e62b1

3 years agoUpdate README.md
Hermet Park [Thu, 17 Sep 2020 03:06:42 +0000 (12:06 +0900)]
Update README.md

retouch the layout and fix some grammars.

Change-Id: I9ee6a7abaa0a1b4e160639b7f3dbea5fc81851c5

3 years agoupdated gitignore
Hermet Park [Thu, 17 Sep 2020 02:30:31 +0000 (11:30 +0900)]
updated gitignore

Change-Id: I44923c66890b746c8fb09156aad093a315d48e52

3 years agocommon shape: fix grammar mistake.
Hermet Park [Thu, 17 Sep 2020 02:29:02 +0000 (11:29 +0900)]
common shape: fix grammar mistake.

array values are not copied by *a = *b;

Change-Id: Ic7b4efa9597778f0a6545a8f80155ba692abe08f

3 years agocommon path: code refactoring.
Hermet Park [Thu, 17 Sep 2020 02:28:05 +0000 (11:28 +0900)]
common path: code refactoring.

revise duplicate() method for clean & neat code.

Change-Id: I040c2a5f05094a284f870806faf2eaf569d8657d

3 years agoshape: added duplicate api.
Michal Szczecinski [Thu, 10 Sep 2020 10:55:08 +0000 (12:55 +0200)]
shape: added duplicate api.

Changes:
1. New shape->duplicate(Shape) api.
2. New example: testDuplicate
3. Added capi binding for duploicate api
4. Added capi duplication test in testCapi.c

Description:

Added implementation of duplicate api. For now it supports stroke
properties and shape properties (fill color, path) duplication.

TODO:
Implement gradient properties duplication

Change-Id: I69e006982aec946fd5a26e5be6d29c6191cd461f

3 years agotest: fix typo
Hermet Park [Wed, 16 Sep 2020 12:01:43 +0000 (21:01 +0900)]
test: fix typo

dash size must be 2, not 4.

Change-Id: Iefaa241bb330ca0a83401518d0415a9480197727

3 years agoUpdate README.md
Hermet Park [Wed, 16 Sep 2020 11:58:00 +0000 (20:58 +0900)]
Update README.md

Change-Id: I4f0e7f7749db9ef9424a17371d37cc3afaaf358a

3 years agoUpdate README.md
Hermet Park [Wed, 16 Sep 2020 11:48:29 +0000 (20:48 +0900)]
Update README.md

Change-Id: Ie4a13d75348c8e63b4822a497d60c16df077c77d

3 years agoUpdate README.md
Hermet Park [Wed, 16 Sep 2020 11:31:49 +0000 (20:31 +0900)]
Update README.md

Change-Id: I1d7067b871f51051611424cb209258349e2be1f9

3 years agoUpdate README.md
Hermet Park [Wed, 16 Sep 2020 11:28:56 +0000 (20:28 +0900)]
Update README.md

Change-Id: I7185f92c51a33f189eac4f8e46fdde9f027d3436

3 years agoREADME: updated example
Hermet Park [Wed, 16 Sep 2020 11:27:50 +0000 (20:27 +0900)]
README: updated example

Change-Id: I9dd2006af98a74766da63bd6f3192c3b5ba7a677

3 years agoUpdate README.md
Hermet Park [Wed, 16 Sep 2020 10:48:12 +0000 (19:48 +0900)]
Update README.md

Change-Id: I1ef76ccfb58dd8e5ca325174104cd89e4d90d321

3 years agoUpdate README.md
Hermet Park [Wed, 16 Sep 2020 10:45:00 +0000 (19:45 +0900)]
Update README.md

Change-Id: Ieb4a1e7135c88b79302d5a9fa9f41f08ca718b6e

3 years agoupdated README
Hermet Park [Wed, 16 Sep 2020 10:42:42 +0000 (19:42 +0900)]
updated README

Change-Id: Ie90c9db06824ce2028e35969b777e5d582018d58

3 years agoUpdate README.md
Hermet Park [Wed, 16 Sep 2020 10:32:43 +0000 (19:32 +0900)]
Update README.md

updated sample code

Change-Id: I9af0929d93da1d768876f4d02852dc8111ee9cc6

3 years agocapi: code refactoring (#58)
Hermet Park [Wed, 16 Sep 2020 10:00:19 +0000 (19:00 +0900)]
capi: code refactoring  (#58)

* capi: refactoring code.

init/term method allows mixing enum values,
we don't need to call them separatetly.

Change-Id: I900137b5578173895ba695c86703ee0035f19e69

3 years agocapi: correct interfaces.
Hermet Park [Wed, 16 Sep 2020 08:53:24 +0000 (17:53 +0900)]
capi: correct interfaces.

put missing const parameter and correct set/get naming.

attention, these two apis are changed!

tvg_gradient_color_stops() => tvg_gradient_set_color_stops()
tvg_gradient_spread() = tvg_gradient_set_spread()

Change-Id: I309b973b8e88bdf33232f95e5da30061b9c2a22b

3 years agobindings/capi: Added path getters + test in testCapi.c
Piotr Kalota [Tue, 15 Sep 2020 12:06:05 +0000 (14:06 +0200)]
bindings/capi: Added path getters + test in testCapi.c

Change-Id: I5ce453509d16c06f5649f08fcd2d16414e7e0f18

3 years agobin svg2png: revise abe7187f5bd3041609ee27b8637b6d55d7353bf0
Hermet Park [Wed, 16 Sep 2020 02:22:54 +0000 (11:22 +0900)]
bin svg2png: revise abe7187f5bd3041609ee27b8637b6d55d7353bf0

revise previous patch code.

1. turned off it in default.
2. + copyright declaration.
3. fix coding convention.

Change-Id: I52577a21240a2abec3ee9a99c0f6614740d65540

3 years agoThorVG/Utils: Convert svg to png (#8)
JunsuChoi [Wed, 16 Sep 2020 02:11:50 +0000 (11:11 +0900)]
ThorVG/Utils: Convert svg to png (#8)

* thorVG/example: added thorVG example app to convert svg to png

Rasterazing the svg file and extracting it as a png file.
The png encoder uses the 'lodepng' library.
(https://lodev.org/lodepng/)

Usage:
   svg2png [svgFileName] [Resolution] [bgColor]

Examples:
    $ svg2png input.svg
    $ svg2png input.svg 200x200
    $ svg2png input.svg 200x200 ff00ff

* ThorVG/Utils: Change examples to utils

* ThorVG/Utils: Move svg2png from util to src/bin

Renamed the build option for svg2png.

Change-Id: Ifa4f3bfc94c1df2f6e207b07ad523a882e754886

3 years agobindings/capi: Added stroke/gradient getters.
Michal Szczecinski [Tue, 15 Sep 2020 06:29:32 +0000 (08:29 +0200)]
bindings/capi: Added stroke/gradient getters.

Change-Id: I2b08b9f8867baa4614274c7848e599690c321215

3 years agocommon: fix compiler warnings.
Hermet Park [Tue, 15 Sep 2020 03:35:52 +0000 (12:35 +0900)]
common: fix compiler warnings.

Change-Id: I4462c9ed073e8ed4ae777e21a57f00481406b931
warning: some methods overrides a member function but is not marked 'override' [-Winconsistent-missing-override]

3 years agosw_engine: fix build warning
Hermet Park [Tue, 15 Sep 2020 03:29:54 +0000 (12:29 +0900)]
sw_engine: fix build warning

Change-Id: I5c5e7bcb4e038b10193a02517b9f7598d48154eb
warning: absolute value function 'fabsf' given an argument of type 'double' but has parameter of type 'float' which may cause truncation of value [-Wabsolute-value]

3 years agosw_engine: code refactoring.
Hermet Park [Tue, 15 Sep 2020 03:26:57 +0000 (12:26 +0900)]
sw_engine: code refactoring.

removed unused macro.

Change-Id: I894050103e4c4a939da4f4cb526759a40a9ccd58

3 years agoSvgLoader: Fix wrong display when dasharray size is 1
JunsuChoi [Tue, 15 Sep 2020 02:39:08 +0000 (11:39 +0900)]
SvgLoader: Fix wrong display when dasharray size is 1

If dash array size is 1, it means that dash and gap size are the same.

Change-Id: I40efd6e9152bee013d735a131cbfe5bde65e3783

3 years agoUpdate README.md
JunsuChoi [Mon, 14 Sep 2020 11:54:55 +0000 (20:54 +0900)]
Update README.md

Add build status

Change-Id: Iddc00e94cf865878153a8f445102f437dd51a9f1

3 years agoAdd travis ci build
JunsuChoi [Mon, 14 Sep 2020 11:50:09 +0000 (20:50 +0900)]
Add travis ci build

Change-Id: Iabe0669b1b55f8cdb1c851b7252a6c768e934bdf

3 years agoUpdate README.md
Hermet Park [Fri, 11 Sep 2020 10:49:22 +0000 (19:49 +0900)]
Update README.md

Fix typo

Change-Id: If5af278c08d84b7bb183dda61f3426b16272bfbf

3 years agoSvgLoader: Fixing issues with a A/a command
Mira Grudzinska [Thu, 10 Sep 2020 11:48:06 +0000 (13:48 +0200)]
SvgLoader: Fixing issues with a A/a command

Cmd 'A' from an svg path should not be connected with any other commands via the control points.

Change-Id: I3ef798693660263f16a74d9f068b341f78ecee6e

3 years agosvg_loader: fixing issue with parsing an svg path (A/a cmd)
Mira Grudzinska [Wed, 9 Sep 2020 21:31:30 +0000 (23:31 +0200)]
svg_loader: fixing issue with parsing an svg path (A/a cmd)

The large_arc and sweep flags should be type checked and
whether their value is 1 or 0.

Change-Id: Ia122cd651e8efab06e68cd45cfa252eedbb0e848

3 years agoupdated AUTHORS accepted/tizen/unified/20200914.131341 submit/tizen/20200913.215058
Hermet Park [Fri, 11 Sep 2020 02:15:00 +0000 (11:15 +0900)]
updated AUTHORS

Change-Id: I20ae1591ed854d57eed1063a0ecdc481de86b562

3 years agoSvgLoader: Fix missing doc.gradients update
JunsuChoi [Thu, 10 Sep 2020 11:13:31 +0000 (20:13 +0900)]
SvgLoader: Fix missing doc.gradients update

When both <defs> and <svg> gradients are declared,
the update of gradient declared in <svg> is omitted.
Therefore, this patch fixes any missing gradient updates.

Change-Id: I21f5c31dbc679f8308e19c17bf942b23c4b2bebe

3 years agoSvgLoader: Modify calculation formula of linear gradient matrix
JunsuChoi [Thu, 10 Sep 2020 10:00:16 +0000 (19:00 +0900)]
SvgLoader: Modify calculation formula of linear gradient matrix

When there is a matrix of linear gradient, the applied formula is this.
= T(x - cx, y - cy) x g->transform x T(cx, cy)
This patch has modified this formula to work properly.

Change-Id: I861b796f5c0b375a318e444446eff82a0e922e8a

3 years agosw_engine: code refactoring.
Hermet Park [Thu, 10 Sep 2020 06:28:44 +0000 (15:28 +0900)]
sw_engine: code refactoring.

use macro for single maintenance.

Change-Id: I8a76b5f13abc371cd1f9fa3c9d797becc294f0b2

3 years agosw_engine: the check if the stroke width > 0 after conversion its value from float...
Mira Grudzinska [Tue, 8 Sep 2020 13:30:41 +0000 (15:30 +0200)]
sw_engine: the check if the stroke width > 0 after conversion its value from float to long

During stroke width interpolation, if the width value after conversion
to long was 0, the bbox size was undefined.

Change-Id: I9425b9c16665bdb8346bd00092f73c109cbf9fb9

3 years agoUpdate README.md
Hermet Park [Thu, 10 Sep 2020 01:53:44 +0000 (10:53 +0900)]
Update README.md

Change-Id: I44554322cdca1b716459d197b60e576d0cb81861

3 years agoSvgLoader: Supports case when only rx or ry is declared
JunsuChoi [Wed, 9 Sep 2020 10:36:15 +0000 (19:36 +0900)]
SvgLoader: Supports case when only rx or ry is declared

In relation to the declaration of rx and ry attribute of rect, the following three cases occur.
rx="10" (or ry="10"
rx="10" ry = "0" (or rx="0" ry = "10")
rx="10" ry = "10"
To cover these case, we check the rx and ry declarations.

Change-Id: Ibf1d258a093319ce21b2b907eee58f2a45f17352

3 years agoUpdate README.md
Hermet Park [Wed, 9 Sep 2020 02:11:24 +0000 (11:11 +0900)]
Update README.md

Change-Id: I82d5ff41586a65d4694b766bd5a7979e48e22ae2

3 years agosw_engine: fix shape rendering skip issue.
Hermet Park [Wed, 9 Sep 2020 01:52:45 +0000 (10:52 +0900)]
sw_engine: fix shape rendering skip issue.

tvg canvas must draw retained shapes for every draw call
even though user missed call update() for shapes.

that case canvs must draw shapes without update,
it means drawing them within previous condition.

Change-Id: If15933bd1a04cd3c55dc04a7913f4833094b2b5d

3 years agochanged file permission
Hermet Park [Tue, 8 Sep 2020 11:29:24 +0000 (20:29 +0900)]
changed file permission

Change-Id: Ic39e9e678584f7f46f730799d90c66b063b9817b

3 years agogl_engine: fix by coding convention.
Hermet Park [Tue, 8 Sep 2020 06:24:00 +0000 (15:24 +0900)]
gl_engine: fix by coding convention.

A *a; (x)
A* a; (o)
A &a; (x)
A& a; (o)

Change-Id: I1b9f176293252266938920900fed04996effce7e

3 years agogl_engine: gradient implementation 25/243225/3
Pranay Kumar Samanta [Fri, 4 Sep 2020 04:56:28 +0000 (10:26 +0530)]
gl_engine: gradient implementation

Change-Id: If2413328437847d52ba1badc3b5c510fdd47ccd3

3 years agoUpdate README.md
Hermet Park [Tue, 8 Sep 2020 03:27:30 +0000 (12:27 +0900)]
Update README.md

Change-Id: Ib828a44f2be3876e47d6aa826c2950817ad7b207

3 years agoUpdate README.md
Hermet Park [Tue, 8 Sep 2020 03:26:23 +0000 (12:26 +0900)]
Update README.md

updated logo.

Change-Id: I1bcf3dddecd368247ea60782b5fc9ca09ae0f1fe

3 years agosvg_loader: refactoring code.
Hermet Park [Sat, 5 Sep 2020 10:49:05 +0000 (19:49 +0900)]
svg_loader: refactoring code.

merge loader class with task to simplfy code.

Change-Id: I89953b8842d061503caefe6932d515ce2ae54063

3 years agosvg_loader: remove dead code.
Hermet Park [Mon, 7 Sep 2020 08:57:41 +0000 (17:57 +0900)]
svg_loader: remove dead code.

default covers all left enumeration values.

Change-Id: I917d49a10be00ba9e8aab7a6a9cd3826ca43fddb

3 years agosw_engine: fix memory leak.
Hermet Park [Mon, 7 Sep 2020 08:40:39 +0000 (17:40 +0900)]
sw_engine: fix memory leak.

free resources properly at exceptional case.

Change-Id: Ie6c35f4b3dcb5c25fca945ea0bb4cbcb8aa52a8e

3 years agoUpdate README.md
Hermet Park [Mon, 7 Sep 2020 05:12:07 +0000 (14:12 +0900)]
Update README.md

Change-Id: I07f601da6e86fe32df4772babc8d2637958177cf

3 years agoREADME: introduced our new logo.
Hermet Park [Mon, 7 Sep 2020 05:08:14 +0000 (14:08 +0900)]
README: introduced our new logo.

Change-Id: I41f8f973b33eefe21515317a8ddacd1c32749d7a

3 years agotest: +++ missing test file. accepted/tizen/unified/20200907.045053 submit/tizen/20200906.212734
Hermet Park [Sat, 5 Sep 2020 10:05:17 +0000 (19:05 +0900)]
test: +++ missing test file.

Change-Id: Ib7459b9a31342a144f5bd708a73dd328d2a6bd24

3 years agocommon: fix context corruption among the multiple canvases.
Hermet Park [Sat, 5 Sep 2020 09:33:23 +0000 (18:33 +0900)]
common: fix context corruption among the multiple canvases.

previous implementation didn't consider multiple canvases,
multiple canvas shared one renderer engine that brought corrupted contexts.
Thus, each canvas instances should have designated renderer engine instances.

Now fixed.

Change-Id: I2649d55c4ba3bd44853006332b2ee83096906abe

3 years agoUpdate README.md
Hermet Park [Sat, 5 Sep 2020 05:26:56 +0000 (14:26 +0900)]
Update README.md

Update Sample code

Change-Id: I62cc381f06df664182cf304f4846328b26199fa4

3 years agoSvgLoader: Add Mask, ClipPath nodees as dummy.
JunsuChoi [Fri, 4 Sep 2020 10:34:28 +0000 (19:34 +0900)]
SvgLoader: Add Mask, ClipPath nodees as dummy.

Mask and clippath TAG are not supported yet.
If this TAG is used, the Child TAG declared with this TAG may cause problems.
To prevent that, declare them as Unknown types until they are supported. (display=none)

Change-Id: I0afac47d4e0bda92e7caa2234e605060d6cab901

3 years agoSvgLoader: Support DashArray attribute for stroke
JunsuChoi [Fri, 4 Sep 2020 07:26:12 +0000 (16:26 +0900)]
SvgLoader: Support DashArray attribute for stroke

It supports stroke-dasharray, one of the stroke properties of svg.
https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray

Change-Id: Ief1317f56ec707e2a696fcbf355af805e4f041c5

3 years agoSvgLoader: Fix memory leak for loader's gradient
JunsuChoi [Fri, 4 Sep 2020 05:00:08 +0000 (14:00 +0900)]
SvgLoader: Fix memory leak for loader's gradient

Release the memory that was not released.

Change-Id: I33cd35d69e7a363ebd3292b01fe69aedc04a81f3

3 years agoSvgLoader: Add null check
JunsuChoi [Fri, 4 Sep 2020 04:56:24 +0000 (13:56 +0900)]
SvgLoader: Add null check

Since the pointer actually used inside the if condition is loader->def,
add a null check for this.

Change-Id: I5578553fcfef42b04d02bb0c6de012e5e0f586f2

3 years agoSvgLoaderCommon: Add initialization in SvgVector
JunsuChoi [Fri, 4 Sep 2020 04:53:36 +0000 (13:53 +0900)]
SvgLoaderCommon: Add initialization in SvgVector

A segfault occurs when calling clear() a list without push.
This patch prevents it.

Change-Id: Ifb238def28990c2ac9621affadf23803a5e01fb2

3 years agoSvgLoader: Gradient use non-premultipied color
JunsuChoi [Fri, 4 Sep 2020 03:23:20 +0000 (12:23 +0900)]
SvgLoader: Gradient use non-premultipied color

Follow color policy of tvg:Shape.

Change-Id: Id99f2e3dcfb3cdb245ba5ab947c997cc87b7ce41

3 years agosw_engine: step backward optimization.
Hermet Park [Fri, 4 Sep 2020 03:12:18 +0000 (12:12 +0900)]
sw_engine: step backward optimization.

As profiled, raster parallelization is not so efficient,
we revert this behavior.

We will come again with a better fine-tuned method.

Change-Id: I53ffb683c1b4e7d3be8d01ae79a1f8e9ac5c5019

3 years agoSvgLoader: Use non-premultipied color
JunsuChoi [Fri, 4 Sep 2020 03:11:08 +0000 (12:11 +0900)]
SvgLoader: Use non-premultipied color

Follow color policy of tvg:Shape.

Change-Id: I282c45de62225c01547988ec019cf31146524167

3 years agosvg_loader: prevent dangling node in exception case.
Hermet Park [Fri, 4 Sep 2020 02:47:16 +0000 (11:47 +0900)]
svg_loader: prevent dangling node in exception case.

We prefer the independent unit function behavior.

Change-Id: I1653e9cc0d8a8f3d7d2136a28151636d2c07530d

3 years agoSvgLoader: Remove unnecessary declaration
JunsuChoi [Fri, 4 Sep 2020 01:28:54 +0000 (10:28 +0900)]
SvgLoader: Remove unnecessary declaration

This declaration is no longer needed,
removing unnecessary actions.(69e8b54be2467f17418b84c8bc5819dce92a36b2)

Change-Id: Iac2d80ec420e8e9a3010c6ea7fd83f4416d4e05e

3 years agoSvgLoader: Do not delete the cloned node
JunsuChoi [Thu, 3 Sep 2020 10:18:49 +0000 (19:18 +0900)]
SvgLoader: Do not delete the cloned node

Reverted incorrectly modified code in 3b9bb51321bb9b6aa5aba78ac984915a8eb9d854.

The newly created node becomes a child of the parent parameter
and is deleted together when parsing ends.

Change-Id: I3043e6f115dca83dbcf21c7ec43946eb75b2812e

3 years agoSvgLoader: Fix pointing to wrong parent
JunsuChoi [Thu, 3 Sep 2020 10:18:12 +0000 (19:18 +0900)]
SvgLoader: Fix pointing to wrong parent

If defs type is open empty style, it is not included in stack.

Change-Id: I208fdbd86e47862e5b57f517aff5e34ee4dba91f

3 years agoSvgLoader: Prevent underflow when stack.cnt is 0
JunsuChoi [Wed, 2 Sep 2020 08:10:50 +0000 (17:10 +0900)]
SvgLoader: Prevent underflow when stack.cnt is 0

If graphic node is directly located in the <svg>(root) node,
it may cause underflow because stack.cnt is 0.

Change-Id: I04b8aac9354cb33a9e7b5d277e6681fbcecce975

3 years agoSvgLoader: Defs type nodes are not saved in loader's node list.
JunsuChoi [Wed, 2 Sep 2020 07:05:06 +0000 (16:05 +0900)]
SvgLoader: Defs type nodes are not saved in loader's node list.

If there is an empty (unused) <defs /> inside the svg file, this can cause problems.
<defs> node is managed separately in loader->def.
So it doesn't have to be added to loader's list.

Change-Id: Ic5d9e2ac247dd9ad022f9f7403b71c17537a557d

3 years agobindings/capi: Check invalid parameters in capi.
Michal Szczecinski [Tue, 1 Sep 2020 07:38:07 +0000 (09:38 +0200)]
bindings/capi: Check invalid parameters in capi.

Added checks to capi bindings to avoid crash when api is used
with invalid parameters.

Change-Id: Id141b8448730bea7a23b9a5bebe0fe33b734e2bd

3 years agosvg_loader: fix vector memory leaks.
Hermet Park [Tue, 1 Sep 2020 11:13:07 +0000 (20:13 +0900)]
svg_loader: fix vector memory leaks.

vector is designed for c++ syntaxes,
it works properly when c++ memory allocator is applied,

Here svg_loader uses c style structures which allocated using malloc()/calloc().
That brings the memory broken of stl vectors.

So, we replaced it with our customized SvgVector to easily fix it.

Change-Id: Iccf5090b13322671893bb8b185bba6d8253e96f5

3 years agotest async: fix wrong time unit. submit/tizen/20200901.214039
Hermet Park [Tue, 1 Sep 2020 11:40:18 +0000 (20:40 +0900)]
test async: fix wrong time unit.

Change-Id: I2ea2b2e6176cc3384bdfe2b5f96b7ee1dc42d93f

3 years agocanvas: fix memory leak.
Hermet Park [Tue, 1 Sep 2020 10:47:33 +0000 (19:47 +0900)]
canvas: fix memory leak.

call flush() to make engine sure working done before canvas is terminated.

Change-Id: I5769557801802ab3eb0868d2b6881aa053074bb1

3 years agosvg_loader: code refactoring 52/242852/2
Hermet Park [Tue, 1 Sep 2020 06:42:33 +0000 (15:42 +0900)]
svg_loader: code refactoring

revise code for simple & better readibility.

Change-Id: Idb20ac6c05b8dcd451a1627d796bf422f6d9d39f

3 years agosw_engine: fix memory leak. submit/tizen/20200830.214225
Hermet Park [Fri, 28 Aug 2020 10:16:01 +0000 (19:16 +0900)]
sw_engine: fix memory leak.

free dash outline stroke data memory properly.

Change-Id: I25bebc38c2d6d7f69d04f6288a5b6863324b70d6

3 years agocapi: fix memory leak.
Hermet Park [Fri, 28 Aug 2020 09:55:03 +0000 (18:55 +0900)]
capi: fix memory leak.

Here canvas type should be explicitly defined,
it deleted its instance as a Canvas.

Change-Id: I85664462cad675ba537a3e79f02ccd6f263f613b

3 years agoMerge "tvgShape: fixed missing check in Shape::fill" into tizen
Hermet Park [Fri, 28 Aug 2020 05:03:38 +0000 (05:03 +0000)]
Merge "tvgShape: fixed missing check in Shape::fill" into tizen

3 years agosw_engine: + exceptional handling for safety
Hermet Park [Fri, 28 Aug 2020 02:28:59 +0000 (11:28 +0900)]
sw_engine: + exceptional handling for safety

Change-Id: I3ee6ca40590c5af5fd7243f419eaf96197ba757b

3 years agotvgShape: fixed missing check in Shape::fill 97/242397/1
Mateusz Palkowski [Wed, 26 Aug 2020 09:26:40 +0000 (11:26 +0200)]
tvgShape: fixed missing check in Shape::fill

Without this check, setting same fill twice results in crash later.

Change-Id: I38e7026c52a250f65923c4e3008868ed471bf885

3 years agosw_engine: applied async rasterizing based on task scheduler.
Hermet Park [Wed, 26 Aug 2020 07:39:10 +0000 (16:39 +0900)]
sw_engine: applied async rasterizing based on task scheduler.

Now, we have 2 points for asynchronous behaviors.

1. update shapes:

Each shape update will be performed by async when you push shape to canvas.
Meaning, if you have time gap between update and rendering in process main-loop,
you can have a benefit by this.

2. rasterization by canvas:

Canvas.draw() will be performed asynchnously until you call canvas.sync();
Meaing, if you can trigger tvg rendering eariler than composition time.
You can have a benefit by this.

If these 1, 2 points might not work for your program,
You can just toggle off async by setting threads number zero at initialization.

Or if you could apply either point of them for your program,
It might be good for performance.

But the best approach is to make both async properly.
Though this might need to fine-grained tuning integration between your program & tvg,
You could achieve the best peformance by parallelzing tasks as possible without any jobs delaying.

Change-Id: I04f9a61ebb426fd897624f5b24c83841737e6b5b

3 years agoSwRenderer: fixing unnecessary nesting in prepare() 36/242236/3
Mira Grudzinska [Mon, 24 Aug 2020 21:31:50 +0000 (23:31 +0200)]
SwRenderer: fixing unnecessary nesting in prepare()

Validating the above by adding shape/canvas update to testCapi.cpp

Change-Id: I7db8d014f4aff7b5b2884c2dca5af119329e9d43

3 years agosvg_loader: applied asynchronous threads tasks for optimal performance. 39/242039/6
Hermet Park [Fri, 21 Aug 2020 12:13:39 +0000 (21:13 +0900)]
svg_loader: applied asynchronous threads tasks for optimal performance.

Change-Id: I6575a6a6302c0ae52d1256a5f79f4c080002a4aa

3 years agotaskscheduler: initialize member correctly
Shinwoo Kim [Mon, 24 Aug 2020 08:06:26 +0000 (17:06 +0900)]
taskscheduler: initialize member correctly

This patch will fix runtime crash caused by incorrect init variables.

3 years agoUpdate README.md
Hermet Park [Mon, 24 Aug 2020 05:45:36 +0000 (14:45 +0900)]
Update README.md

update gitter channel address.

3 years agomeson: added compiler flags to optimize binary size 93/241993/1
Subhransu Mohanty [Fri, 21 Aug 2020 07:53:56 +0000 (16:53 +0900)]
meson: added compiler flags to optimize binary size

this reduced library size from 153KB to 119KB.

Change-Id: Ie70e5412b42d864fbaa827eec21b3cbc1e8f26af

3 years agocommon initializer: don't try initialize engine duplicatedly. 64/241964/1 accepted/tizen/unified/20200824.134426 submit/tizen/20200823.213148
Hermet Park [Fri, 21 Aug 2020 06:56:04 +0000 (15:56 +0900)]
common initializer: don't try initialize engine duplicatedly.

Change-Id: I58c715745b8db40fe759582545082f2e6e10626a

3 years agocommon taskscheduler: revise functionalities. 48/241448/10
Hermet Park [Thu, 20 Aug 2020 08:04:32 +0000 (17:04 +0900)]
common taskscheduler: revise functionalities.

initialization interfaces has been changed for threads count.

if you want to set concrete threads count by system, please specify thread count with it.

std threads:
tvg::Initializer::init(tvg::CanvasEngine::Sw, std::thread::hardware_concurrency());

if your system provides designed threads info, you can use it.

efl:
tvg_engine_init(TVG_ENGINE_SW, eina_cpu_count());

I recommend to avoid max threads usage for better performance.

Change-Id: I22cfa315768f73fa941be136956cdbb2cf837c20

3 years agoupdated AUTHORS
Hermet Park [Thu, 20 Aug 2020 08:52:11 +0000 (17:52 +0900)]
updated AUTHORS

Change-Id: Ie0bb862f8ba20e682bf3bb7469455fa52a5d5498

3 years agosvg path: changes in processing cmds T,Q,S 67/240567/4
Mira Grudzinska [Sun, 16 Aug 2020 13:23:42 +0000 (15:23 +0200)]
svg path: changes in processing cmds T,Q,S

Change-Id: I979bb8cbcbdd4fd1374205feac6acedc58bdd3e1

3 years agoMerge "tvg: added task support that runs on a threadpool." into tizen
Hermet Park [Thu, 20 Aug 2020 08:02:07 +0000 (08:02 +0000)]
Merge "tvg: added task support that runs on a  threadpool." into tizen

3 years agocode refactoring 40/241440/1
Hermet Park [Thu, 20 Aug 2020 07:16:46 +0000 (16:16 +0900)]
code refactoring

remove unnecessary condition.
implementation won't be included multiple times not like headers.

Thus this condition is unnecessary.

Change-Id: Id37e675c40ce7213a06c950da8e5ca17ff7245c9

3 years agosw_engine: fix loss of data when it's converting. 14/241414/1
Hermet Park [Thu, 20 Aug 2020 03:18:51 +0000 (12:18 +0900)]
sw_engine: fix loss of data when it's converting.

if SwCoord type is determined to 4byte,
it could lose remarkable value that occur stroking jiggling.

This fixes the issue.

Change-Id: Ib2fed2a3bfc9188a30522f35837439364d446a73

3 years agosw_engine: replace rgba8888 with abgr8888 46/241346/4
Hermet Park [Wed, 19 Aug 2020 09:32:32 +0000 (18:32 +0900)]
sw_engine: replace rgba8888 with abgr8888

Actually Dali rendering system requires abgr8888.

We could add more colorspaces if it's necessary.

Change-Id: Ia42a6575d1313629e55efc3077e302992c47b6c0

3 years agocode refactoring 03/241303/2
Hermet Park [Wed, 19 Aug 2020 05:50:49 +0000 (14:50 +0900)]
code refactoring

Now, stabilizing is pretty enough.

Remove assert code so that we never abort process in any cases.
This also reduce the binary size.

Change-Id: Ia7d2d5c5a0757b12481eaebad7a86aade6a89c1e