platform/core/graphics/tizenvg.git
3 years agocommon: code refactoring 46/239746/2
Hermet Park [Wed, 29 Jul 2020 10:47:28 +0000 (19:47 +0900)]
common: code refactoring

remove exceptional handling which is inevitable scenario.

Change-Id: I761a59a38f4578291ee8bc044c5ca989feedbe79

3 years agocommon: revise transform interfaces. 99/239699/4
Hermet Park [Wed, 29 Jul 2020 05:25:18 +0000 (14:25 +0900)]
common: revise transform interfaces.

transform interfaces are getting duplicated in derived classes.

we moved to the super for smaller apis count.

Applied strategy pattern to hide the inheritance.

Change-Id: I7b0c3ff9317e9bf3c97bb0c849bf55e79ee9a591

3 years agosw_engine: fix out of cell memory. 93/239693/1
Hermet Park [Wed, 29 Jul 2020 04:40:11 +0000 (13:40 +0900)]
sw_engine: fix out of cell memory.

we can adjust cell size if the cell memory is out.
the main rle logic missed the exception handling.

Change-Id: I4419eefefccafd788729111eafeb65aa4e6a20e9

3 years agogl_engine: updated file permission.
Hermet Park [Tue, 28 Jul 2020 11:57:18 +0000 (20:57 +0900)]
gl_engine: updated file permission.

please keep 664 for files.

Change-Id: Iaddd87b0d35a74bc8c6cbf330fecbd28e14ad57a

3 years agoupdated AUTHORS
Hermet Park [Tue, 28 Jul 2020 11:46:11 +0000 (20:46 +0900)]
updated AUTHORS

Change-Id: Ia3b91f2dff139b80c5e968be2a0ecb725e6b62bd

3 years agocapi: Added wrapper for tvg::Shape::translate 53/239553/1
Mateusz Palkowski [Mon, 27 Jul 2020 12:08:51 +0000 (14:08 +0200)]
capi: Added wrapper for tvg::Shape::translate

Change-Id: Idcf672926c489148f15c654f85b4d6c3ff8cde80

3 years agocapi: Added wrapper for tvg::Shape::rotate 52/239552/1
Mateusz Palkowski [Mon, 27 Jul 2020 12:08:01 +0000 (14:08 +0200)]
capi: Added wrapper for tvg::Shape::rotate

Change-Id: I2cef6600586c037caaf8d2f45fc6d78e93dce925

3 years agocapi: Added wrapper for tvg::Shape::scale 51/239551/1
Mateusz Palkowski [Mon, 27 Jul 2020 12:07:03 +0000 (14:07 +0200)]
capi: Added wrapper for tvg::Shape::scale

Change-Id: Ie8380478d9e5bf99c924f3b93cfbb3d80ff55611

3 years agosw_engine gradient: support x/y scale for linear gradient 24/239424/1
Hermet Park [Fri, 24 Jul 2020 12:09:24 +0000 (21:09 +0900)]
sw_engine gradient: support x/y scale for linear gradient

Change-Id: Ic58e7cc61a3c90307b6cfb629eb8af69b75fb903

3 years agosw_engine gradient: support x/y scale for radial gradient 98/239298/5
Hermet Park [Thu, 23 Jul 2020 11:56:05 +0000 (20:56 +0900)]
sw_engine gradient: support x/y scale for radial gradient

Change-Id: Id725637e261642d0e92d100c73841278b7f44c1c

3 years agosw_engine: revise stroke scaling logic. 20/239320/1
Hermet Park [Fri, 24 Jul 2020 02:03:20 +0000 (11:03 +0900)]
sw_engine: revise stroke scaling logic.

previous fast track logic is useless,
it actually doesn't helpful for performance, just increase the code complexity.

Change-Id: Ib6ad204edfb241d74c41413dfec7ab42fb02af81

3 years agosw_engine: support bidirectional stroke scaling. 07/239207/10
Hermet Park [Wed, 22 Jul 2020 11:31:57 +0000 (20:31 +0900)]
sw_engine: support bidirectional stroke scaling.

if the transform scale factor for x/y is not identical,
it keeps its both xy scale factor then apply them
for stroking calculation.

Change-Id: I519dfce3ce7b4a12c13da1801d6a00e139e7400f

3 years agoSvgLoader: Fix opacity propagation 26/239226/2
JunsuChoi [Thu, 23 Jul 2020 01:14:46 +0000 (10:14 +0900)]
SvgLoader: Fix opacity propagation

Remove duplicate opacity calculation of the scene.

Change-Id: I1253ea290e78fdbf946a492ebfcaaa082fbfc121

3 years agosw_engine: revise scale transform logic. 74/239074/5
Hermet Park [Tue, 21 Jul 2020 11:24:25 +0000 (20:24 +0900)]
sw_engine: revise scale transform logic.

Basically, stroke width size is linear,

engine couldn't apply scale factor from the matrix which contains 2 dimensional values.

Thus, we can apply it if the scale factor of x/y is identical.

Otherwise, we should transform every stroke points in the stroking process.
That scenario can be improved with another patch.

Change-Id: I070dcf29d2e42f21e182bdf4239781464158ef73

3 years agocomon: code refactoring 82/239182/1
Hermet Park [Wed, 22 Jul 2020 09:45:11 +0000 (18:45 +0900)]
comon: code refactoring

renamed internal variable for better readibility.

Change-Id: I07dc66c4bd63f2aec8036aab14ec3ed608820fbc

3 years agosw_engine: revise outline transform 37/239037/3
Hermet Park [Tue, 21 Jul 2020 08:18:48 +0000 (17:18 +0900)]
sw_engine: revise outline transform

sw_engine simulates floating point by integer bit shifting,
it loses the accuracy while converting the number data.

This occurs the inacculated curve points result if it scales up very large size.

So we transform points before converting data in order to avoid losing the numbers less decimal point.

Change-Id: I0172e83f06b1a19143a2f65f667dc193e9a4396a

3 years agoSvgLoader: Support display=none feature 71/238971/3
JunsuChoi [Tue, 21 Jul 2020 01:42:22 +0000 (10:42 +0900)]
SvgLoader: Support display=none feature

If display is none, scene does not create a child shape,
and shape does not draw fills and strokes.

Change-Id: I8af72c904be00107dff115429e27df7ba4cb83b6

3 years agotest: replaced svg resources.
Hermet Park [Mon, 20 Jul 2020 02:44:32 +0000 (11:44 +0900)]
test: replaced svg resources.

Change-Id: I30ab48ecc0bbae158baecce1f6173fc36ecfbbb6

3 years agocommon transformation: fix transformation multiply 16/238716/7
Hermet Park [Thu, 16 Jul 2020 11:42:42 +0000 (20:42 +0900)]
common transformation: fix transformation multiply

Change-Id: Ibc95fab0abfc07aa7f0c4ff6c74785d4f73d02c7

3 years agotest: ++code safety 80/238780/1
Hermet Park [Fri, 17 Jul 2020 08:15:16 +0000 (17:15 +0900)]
test: ++code safety

added null check for exceptional case.

Change-Id: I12a5e9724149f607188b67a84e46a033a16270f7

3 years agotest: changed file permission.
Hermet Park [Fri, 17 Jul 2020 07:57:02 +0000 (16:57 +0900)]
test: changed file permission.

Change-Id: I8172152f700d10fa1d8c84473d45ff484c0b36d8

3 years agoupdated AUTHORS
Hermet Park [Fri, 17 Jul 2020 07:56:05 +0000 (16:56 +0900)]
updated AUTHORS

Change-Id: If9412e0598bdfa59dc142aacaec1cb5ae3f5401d

3 years agogl_engine: Fix crash in animation callback. Refactor test samples draw function.... 20/238620/5
Pranay Kumar Samanta [Wed, 15 Jul 2020 13:32:27 +0000 (19:02 +0530)]
gl_engine: Fix crash in animation callback. Refactor test samples draw function. Fix open shape drawing.

Change-Id: I9ca2cb3951f2229f36292b69221451e0eaf5b6a1

3 years agosvg_loader: code refactoring. 91/238691/1
Hermet Park [Thu, 16 Jul 2020 08:17:16 +0000 (17:17 +0900)]
svg_loader: code refactoring.

leave to shape to handle non-effective values.

Change-Id: I4193653710498e0ea31b0ff88fd8f0f8f0238e0e

3 years agosvg_loader: code refactoring 89/238689/2
Hermet Park [Thu, 16 Jul 2020 08:09:48 +0000 (17:09 +0900)]
svg_loader: code refactoring

keep clean & neat code.

Change-Id: Ia17139a291fc9934fe2f8d5e51417c44ec50f2ed

3 years agosvg_loader: optimize data delivery. 88/238688/1
Hermet Park [Thu, 16 Jul 2020 08:03:44 +0000 (17:03 +0900)]
svg_loader: optimize data delivery.

We know how this shape is passed,
so don't use unique_ptr to save data size.

Change-Id: I02410692199b9cee701c206246ceea5988d06726

3 years agotest: Fix typo in makefile 59/238659/1
JunsuChoi [Thu, 16 Jul 2020 05:58:35 +0000 (14:58 +0900)]
test: Fix typo in makefile

' -> `

Change-Id: Iafacfb78d8f788ef302e5ad7f1a1d9cfbd380ffb

3 years agosw_engine: fix wrong gradient fill transform. 49/238649/1
Hermet Park [Thu, 16 Jul 2020 04:45:27 +0000 (13:45 +0900)]
sw_engine: fix wrong gradient fill transform.

it missed the offset when transformed gradient positions.

now it's fixed.

Change-Id: I916bd88b40bc29ca57d31411b92e10fe357d720e

3 years agoSvgLoader: Verify SVG resource 23/238223/3
JunsuChoi [Thu, 9 Jul 2020 11:12:48 +0000 (20:12 +0900)]
SvgLoader: Verify SVG resource

Only <svg> tag is parsed first before data get in file open function.
If the <svg> tag is found, the loaded file is valid and stores viewbox information.
After that, the remaining content data is parsed in order with async.

Change-Id: Idb934fbd5e190c7c523abe601a80745ccc767af1

3 years agocapi: improve code template. 72/238572/1
Hermet Park [Wed, 15 Jul 2020 07:18:55 +0000 (16:18 +0900)]
capi: improve code template.

Change-Id: Ia48a21fbd93103b371b41a13adf46d82b76803b1

3 years agocapi: support c interfaces 97/238397/7
Hermet Park [Mon, 13 Jul 2020 11:19:23 +0000 (20:19 +0900)]
capi: support c interfaces

this capi is under the beta,
we quickly provide this working prototype for collaboration.

Change-Id: Ie246abc306feb9a1305d1b593c4f3ef7f40ab5a9

3 years agosw_engine: introduce avx simd instruction 78/238078/11
Hermet Park [Wed, 8 Jul 2020 07:05:58 +0000 (16:05 +0900)]
sw_engine: introduce avx simd instruction

avx is the cutting edge method for intel & amd cpus simd instruction.
We are going to support this feature for the desktop environment (instead of sse)

You can turn on this with configuration something like this:

$meson . build -Dvectors=avx

Current patch supports only for raster solid color

Change-Id: I068ba30a1f63d480415e2762f8021fc8d6d28a39

4 years agoMerge "SvgLoader: Inherit parent opacity" into tizen
Hermet Park [Fri, 10 Jul 2020 00:50:38 +0000 (00:50 +0000)]
Merge "SvgLoader: Inherit parent opacity" into tizen

4 years agosvg_loader: code refactoring. 40/238240/1
Hermet Park [Fri, 10 Jul 2020 00:31:12 +0000 (09:31 +0900)]
svg_loader: code refactoring.

simpler code is better for readibility.

Change-Id: I4bc18bb184aea6fea0179bb38b445da5e0acba43

4 years agoMerge "SvgLoader: Support to linear, radial gradient" into tizen
Hermet Park [Fri, 10 Jul 2020 00:19:51 +0000 (00:19 +0000)]
Merge "SvgLoader: Support to linear, radial gradient" into tizen

4 years agoMerge "SvgLoader: Fix typo (SCubic draw)" into tizen
Hermet Park [Fri, 10 Jul 2020 00:16:49 +0000 (00:16 +0000)]
Merge "SvgLoader: Fix typo (SCubic draw)" into tizen

4 years agoSvgLoader/Parser: Fix typo 84/238184/1
JunsuChoi [Thu, 9 Jul 2020 07:36:30 +0000 (16:36 +0900)]
SvgLoader/Parser: Fix typo

Change-Id: Iced0f2196c52f7cc729d6f648f5df6affbda3357

4 years agoSvgLoader: Fix typo (SCubic draw) 79/238179/1
JunsuChoi [Thu, 9 Jul 2020 06:40:21 +0000 (15:40 +0900)]
SvgLoader: Fix typo (SCubic draw)

Change-Id: Id54cf6a7ca66cdbc96cfb93143aacccab95de822

4 years agoSvgLoader: Inherit parent opacity 69/238169/1
JunsuChoi [Thu, 9 Jul 2020 04:37:12 +0000 (13:37 +0900)]
SvgLoader: Inherit parent opacity

Change-Id: If52c6581845e9918dc13c4627080ba84d270a07b

4 years agoSvgLoader: Support to linear, radial gradient 68/238168/1
JunsuChoi [Thu, 9 Jul 2020 04:23:41 +0000 (13:23 +0900)]
SvgLoader: Support to linear, radial gradient

Change-Id: Ida3f6ccca5f0d6ed1922b7ce99d2d2f3203f5ba9

4 years agobuild: support features toggling in meson option. 53/238053/6
Hermet Park [Wed, 8 Jul 2020 04:08:28 +0000 (13:08 +0900)]
build: support features toggling in meson option.

Change-Id: Id1ebda70fe8380aaa913f79af26e5c39893a6df5

4 years agobuild: refactoring meson script. 41/238041/1
Hermet Park [Wed, 8 Jul 2020 01:51:34 +0000 (10:51 +0900)]
build: refactoring meson script.

move out engine/loader dependency to its immediate parent folders.

Change-Id: I7f08433fc6d2a333951fceaffea81cbe2e5da9e3

4 years agobuild: refactoriong meson script. 38/238038/2
Hermet Park [Wed, 8 Jul 2020 01:44:51 +0000 (10:44 +0900)]
build: refactoriong meson script.

move gl dependency to gl_engine part which is right position.

Change-Id: I9d4935f94eff96ca1527762c92d07f9b216f19cd

4 years agoMerge "common loader: return viewbox info from the vector resource." into tizen
Hermet Park [Tue, 7 Jul 2020 10:06:25 +0000 (10:06 +0000)]
Merge "common loader: return viewbox info from the vector resource." into tizen

4 years agosvg_loader: code refactoring. 03/238003/1
Hermet Park [Tue, 7 Jul 2020 08:52:16 +0000 (17:52 +0900)]
svg_loader: code refactoring.

initialize members in its own constructor.

Change-Id: I6450971330dd3e3235b0f690a8d9b066cf374212

4 years agosvg_loader: allow deferred loading. 00/238000/1
Hermet Park [Tue, 7 Jul 2020 08:46:29 +0000 (17:46 +0900)]
svg_loader: allow deferred loading.

don't push thread to work hard unless it's necessary.
that might occur performance drop.

Change-Id: Ib71fa0ae46461b10b7ed7ef356512fbf2a7aa0a8

4 years agoSvgLoader: Fix z-angle calculation 84/237984/4
JunsuChoi [Tue, 7 Jul 2020 06:09:13 +0000 (15:09 +0900)]
SvgLoader: Fix z-angle calculation

Change-Id: I9220abd9f92dbdf250ea071af128a93a0bbb3d78

4 years agocommon loader: return viewbox info from the vector resource. 85/237985/2
Hermet Park [Tue, 7 Jul 2020 06:12:11 +0000 (15:12 +0900)]
common loader: return viewbox info from the vector resource.

if a scene loads a vector resource, it must have viewbox info from the design,
That viewbox will be used as bounding box so that user can scale up/down
the scene by its requirements.

Change-Id: Iafa39af23118a03de207c745364d56c837892e1b

4 years agoMerge "SvgLoader: Support arc_to draw" into tizen
Hermet Park [Tue, 7 Jul 2020 05:49:20 +0000 (05:49 +0000)]
Merge "SvgLoader: Support arc_to draw" into tizen

4 years agoSvgLoader: Support arc_to draw 64/237864/4
JunsuChoi [Mon, 6 Jul 2020 07:35:10 +0000 (16:35 +0900)]
SvgLoader: Support arc_to draw

Change-Id: I950c8e850605f990d6a0aa59a067ced571ffdb51

4 years agosvg_loader: release resources just in case when it's destroyed. 67/237967/1
Hermet Park [Tue, 7 Jul 2020 04:54:33 +0000 (13:54 +0900)]
svg_loader: release resources just in case when it's destroyed.

Change-Id: Ib4a61ae0769d3f9284e3cf450002750c47fba01c

4 years agoMerge "SvgLoader: Async conversion of svg data" into tizen
Hermet Park [Tue, 7 Jul 2020 04:49:01 +0000 (04:49 +0000)]
Merge "SvgLoader: Async conversion of svg data" into tizen

4 years agoSvgLoader: Skip unnecessary transform calc 41/237841/3
JunsuChoi [Mon, 6 Jul 2020 05:09:52 +0000 (14:09 +0900)]
SvgLoader: Skip unnecessary transform calc

Change-Id: I58e3baae6d68a2ad4a34c8b460fe67bd36f03b3d

4 years agoSvgLoader: Async conversion of svg data 46/237946/3
JunsuChoi [Tue, 7 Jul 2020 01:15:05 +0000 (10:15 +0900)]
SvgLoader: Async conversion of svg data

Change-Id: I58025e646b531a0451be096ef1891377e655a3fc

4 years agocommon shape: expand rectangle arguement to support both corner radius x, y 59/237959/2
Hermet Park [Tue, 7 Jul 2020 04:05:44 +0000 (13:05 +0900)]
common shape: expand rectangle arguement to support both corner radius x, y

this is useful for svg loader

Change-Id: Ia11c2d1c6ea88f3fd65c7f75cef8b59bef426bcb

4 years agoSvgLoader: Support x,y rounded rect 68/237868/2
JunsuChoi [Mon, 6 Jul 2020 08:01:56 +0000 (17:01 +0900)]
SvgLoader: Support x,y rounded rect

Change-Id: I45d8f7ff3604da0a80c09e2495ed8c0301310094

4 years agoSvgLoader: Support ellipse draw 36/237836/3
JunsuChoi [Mon, 6 Jul 2020 05:02:38 +0000 (14:02 +0900)]
SvgLoader: Support ellipse draw

Change-Id: I6420673d8341a59b91546224576d1c977c1a08d2

4 years agosvg_engine: fix infinit loop dead in stroke rendering. 08/237908/3
Hermet Park [Mon, 6 Jul 2020 10:26:50 +0000 (19:26 +0900)]
svg_engine: fix infinit loop dead in stroke rendering.

here logic was wrongly introducedd, we fix the condition check properly.

Change-Id: I97f18f68290c61096f4e7fe54bd6f6fde51e175b

4 years agosw_engine: optimize rle rendering. 79/237779/2
Hermet Park [Fri, 3 Jul 2020 09:17:43 +0000 (18:17 +0900)]
sw_engine: optimize rle rendering.

we don't need to apply anti-aliasing if stroke is there.
here turns off anti-alias if stroke width is more than 2.
magic number 2 is experimentally confirmed.

Change-Id: I09031dc2a0a84f31c5904651ed1e62004645ba9a

4 years agosw_engine: Draw shapes even though there is no explict closed command. 54/237554/1
Hermet Park [Wed, 1 Jul 2020 07:49:03 +0000 (16:49 +0900)]
sw_engine: Draw shapes even though there is no explict closed command.

This behavior is not confiremd but it's beneficial for svg spec.

Change-Id: Ia711c057811ae51e472b4e164b36f3dd6af9893f

4 years agoMerge "SvgLoader: Don't use custom transform" into tizen
Hermet Park [Wed, 1 Jul 2020 07:36:15 +0000 (07:36 +0000)]
Merge "SvgLoader: Don't use custom transform" into tizen

4 years agosw_engine: optimize othogonal rectangle drawing. 97/237497/5
Hermet Park [Wed, 1 Jul 2020 02:33:50 +0000 (11:33 +0900)]
sw_engine: optimize othogonal rectangle drawing.

if the rectangle is not transformed, we don't need to use rle method.
we can directly raster pixels onto the bounding box.

Change-Id: I4e8b57149c0bcd78124d09388bf5115093a43bee

4 years agotest: enable gl window only on gl backend. 22/237522/1
Hermet Park [Wed, 1 Jul 2020 05:25:53 +0000 (14:25 +0900)]
test: enable gl window only on gl backend.

Change-Id: Iafd790b7fc1df8a58bdce2f18c39029cc0d74945

4 years agoSvgLoader: Don't use custom transform 08/237508/2
JunsuChoi [Wed, 1 Jul 2020 04:44:12 +0000 (13:44 +0900)]
SvgLoader: Don't use custom transform

Change-Id: Ia7cd0992bbb8d5ee117806ee62b35604ffd91e16

4 years agosw_engine: fix a regression bug. 02/237502/1
Hermet Park [Wed, 1 Jul 2020 03:53:01 +0000 (12:53 +0900)]
sw_engine: fix a regression bug.

Shape must have closed path for filling color.
if closed is skipped, it would take it's a line.

Change-Id: Ie1dcde9edbfc6501a34d6cb9ce54184ade6864db

4 years agosw_engine: fix to update stroking transform 15/237415/5
Hermet Park [Tue, 30 Jun 2020 07:57:31 +0000 (16:57 +0900)]
sw_engine: fix to update stroking transform

when shape doesn't have fill color, stroking is missed in update.

this fixs that issue.

Change-Id: I49292475e56caa834e79497a16db705b965bcf5f

4 years agotest: revise sample. 91/237391/3
Hermet Park [Tue, 30 Jun 2020 04:08:09 +0000 (13:08 +0900)]
test: revise sample.

this patch adds the showcase how to handle exceptional cases.

Change-Id: Ic8e3c740bbf613f4dccace511b6c8d93b987a10c

4 years agosw_engine: flush all processing data when clear() is requested. 87/237387/1
Hermet Park [Tue, 30 Jun 2020 03:38:01 +0000 (12:38 +0900)]
sw_engine: flush all processing data when clear() is requested.

there was a missing point which occured corrupted data in multi-processing.

Change-Id: Ifb28ee82852e488d23d45b4b75f0a6c70bb428b2

4 years agotest svg: remove white trailings
Hermet Park [Tue, 30 Jun 2020 01:24:56 +0000 (10:24 +0900)]
test svg: remove white trailings

Change-Id: Ie23ffdd420eb9742b21350dfffd5b29ae0515be3

4 years agoMerge "SvgLoader: Supports Path's quadratic_to draw" into tizen
Hermet Park [Tue, 30 Jun 2020 01:22:25 +0000 (01:22 +0000)]
Merge "SvgLoader: Supports Path's quadratic_to draw" into tizen

4 years agotest: unify test code for supporting gl engine from all test cases. 42/237342/7
Hermet Park [Mon, 29 Jun 2020 08:35:04 +0000 (17:35 +0900)]
test: unify test code for supporting gl engine from all test cases.

now you can launch tests with gl engine by "gl" option

ex)
$ testTransform gl
$ testScene gl

Change-Id: Idb720ed369a2fbfb908c977fdaebd7289986fb6f

4 years agotest: Improve svg test 53/237353/2
JunsuChoi [Mon, 29 Jun 2020 10:30:29 +0000 (19:30 +0900)]
test: Improve svg test

Displays svg files located in "./svgs" dir.

Change-Id: I4b9a281dc31fefb28c969780fa28adb74a5f5c02

4 years agoSvgLoader: Fix typo 51/237351/2
JunsuChoi [Mon, 29 Jun 2020 10:24:54 +0000 (19:24 +0900)]
SvgLoader: Fix typo

rect types w, h -> width, height

Change-Id: I5e85360644d9b8c2b2d84f182a0de16fefe9edbf

4 years agoSvgLoader: Supports Path's quadratic_to draw 33/237333/1
JunsuChoi [Mon, 29 Jun 2020 07:35:21 +0000 (16:35 +0900)]
SvgLoader: Supports Path's quadratic_to draw

Convert quadratic bezier to cubic

Change-Id: I885138dcdfb9f0e85bf3ca1ca5c9fc4eb0d8f1f8

4 years agotest: print current backend engine name 31/237331/1
Hermet Park [Mon, 29 Jun 2020 07:26:02 +0000 (16:26 +0900)]
test: print current backend engine name

Change-Id: Iaafa521556a614b47994914c09228b8e8ae9c9e9

4 years agoSvgLoader: Implement svgpath draw 64/237264/4
JunsuChoi [Fri, 26 Jun 2020 09:51:36 +0000 (18:51 +0900)]
SvgLoader: Implement svgpath draw

Convert Svg path in string to tvg::PathCommand.
Draw converted data by adding it as path to shape.

Following tags are supported.
Move, Line, Cubic, SCubic, Vertical, Horizontal and Close.

Change-Id: I3cb31e05bcb233b4c187e0c9e7eef8cdadf84695

4 years agoMerge "SvgLoader: Implement SvgSceneBuilder using SvgNode" into tizen
Hermet Park [Mon, 29 Jun 2020 07:17:15 +0000 (07:17 +0000)]
Merge "SvgLoader: Implement SvgSceneBuilder using SvgNode" into tizen

4 years agoSvgLoader: Implement SvgSceneBuilder using SvgNode 47/237047/13
JunsuChoi [Wed, 24 Jun 2020 10:35:40 +0000 (19:35 +0900)]
SvgLoader: Implement SvgSceneBuilder using SvgNode

SvgSceneBuilder builds Scene using SvgNode tree.
build(root node) function return the root scene.
Following SVG tags are supported.
Polygon, Polyline, Circle, Rect, Line

Change-Id: I8c9b8c28d9a4799af6ddc45c35f77a75f696b2a5

4 years agoupdated AUTHORS
Hermet Park [Mon, 29 Jun 2020 07:16:01 +0000 (16:16 +0900)]
updated AUTHORS

Change-Id: Ife45b8ec1ad39822491e57b6031927a42f6a113b

4 years agoSvgLoader: Implement SVG Loader and SimpleXMLParser 78/236978/26
JunsuChoi [Wed, 24 Jun 2020 00:55:25 +0000 (09:55 +0900)]
SvgLoader: Implement SVG Loader and SimpleXMLParser

Load svg using fstream and parse it using SimpleXMLparser.
And Make a document tree composed of SvgNodes using the parsed data.

Change-Id: I5715b466638195844798f7b66f54f6015e7c3ae6

4 years agotest shape: unify sw/gl test code. 22/237322/1
Hermet Park [Mon, 29 Jun 2020 05:59:01 +0000 (14:59 +0900)]
test shape: unify sw/gl test code.

default is sw engine, please run sample app with "gl" argument

$./testShape gl

Change-Id: Iff7da624ff17827df957919341737b9f129f502e

4 years agorenamed project name tizenvg => thorvg 98/237098/2
Hermet Park [Thu, 25 Jun 2020 04:52:50 +0000 (13:52 +0900)]
renamed project name tizenvg  => thorvg

we're going to open this project as the independent one,

thus removed tizen naming here.

Change-Id: Ib3c898067dd9186e893f7cb0903fd70d2ce7b31f

4 years agosw_engine: fix a regression bug. 56/237056/3
Hermet Park [Wed, 24 Jun 2020 12:00:43 +0000 (21:00 +0900)]
sw_engine: fix a regression bug.

this matrix data is volatile since it's coming from stack memory.
thus engine should record its own memory space for keeping it.

Change-Id: I664dd56412f4d236ad04c312220c67da226274e5

4 years agotest: revise async(stress) test code. 51/237051/2
Hermet Park [Wed, 24 Jun 2020 11:14:46 +0000 (20:14 +0900)]
test: revise async(stress) test code.

Change-Id: I2005f12cc9552b4a98101ba53f48b04c9a6c5732

4 years agosw_engine: optimize rasterizey by threading it. 39/237039/6
Hermet Park [Wed, 24 Jun 2020 08:10:50 +0000 (17:10 +0900)]
sw_engine: optimize rasterizey by threading it.

Also, newly introduced render interfaces: preRender(), postRender(), flush()

Change-Id: If506fa27e3c7dbd89f6734cad4774c1d151b88aa

4 years agosw_engine: threading optimization 46/236946/6
Hermet Park [Tue, 23 Jun 2020 11:12:39 +0000 (20:12 +0900)]
sw_engine: threading optimization

make it prepare step asynchronously.

Change-Id: Ifb85f01d579cf1c111558842496b93fcaef74cd9

4 years agotest: add stress test for performance profiling. 02/237002/2
Hermet Park [Wed, 24 Jun 2020 04:31:09 +0000 (13:31 +0900)]
test: add stress test for performance profiling.

Change-Id: I4a1556c107ba59b7c972375ab8bfd22c777a5503

4 years agosw_engine: optimize memory allocation. 38/236938/1
Hermet Park [Tue, 23 Jun 2020 09:59:12 +0000 (18:59 +0900)]
sw_engine: optimize memory allocation.

there are a logical wrong that memory increase size,
it correct that also tune the number to reduce memory allocation time.

Now scene transform test works smoothly.

Change-Id: If0674e33426d794546801a96ad9de711b5de0dcd

4 years agosw_engine stroke: initialize a missing variable. 18/236918/1
Hermet Park [Tue, 23 Jun 2020 08:38:59 +0000 (17:38 +0900)]
sw_engine stroke: initialize a missing variable.

Change-Id: I1c3d83d56045f592ff89a5462d4de494e50c9d34

4 years agosw_engine: optimize span generation. 17/236917/1
Hermet Park [Tue, 23 Jun 2020 08:29:28 +0000 (17:29 +0900)]
sw_engine: optimize span generation.

there are unnecessary partial spans generated in orthogonal rectangle.

we can merge those partial spans to others if they are on the same scanline...

Change-Id: I35a437a4f2eec106bd50f46f0390c652e617311d

4 years agosw_engine: optimize raster. 80/236880/2
Hermet Park [Tue, 23 Jun 2020 05:41:57 +0000 (14:41 +0900)]
sw_engine: optimize raster.

memset() is more than 10x faster than manual loop.

Thus we replace it to manipulate buffer pixels.

Change-Id: If0f255578f7d49ff6704c4f15e2eefe435cc3c15

4 years agosw_engie: fix wrong boundary check. 76/236876/2
Hermet Park [Tue, 23 Jun 2020 05:14:47 +0000 (14:14 +0900)]
sw_engie: fix wrong boundary check.

this bounding box max indicates absolute positions,
not width/height size.

because of this, shape couldn't rendered properly,
when it's clipped out.

Change-Id: I0afb0d6e63d1b511b83716c55f55e3fd5370fdb8

4 years agoMerge "common transform: support matrix transform interface." into tizen
Hermet Park [Tue, 23 Jun 2020 02:31:23 +0000 (02:31 +0000)]
Merge "common transform: support matrix transform interface." into tizen

4 years agocommon transform: support matrix transform interface. 35/236835/7
Hermet Park [Mon, 22 Jun 2020 11:53:52 +0000 (20:53 +0900)]
common transform: support matrix transform interface.

this interface is designed for user-defined arbitrary affine-transform paints.

required by svg loader.

Change-Id: I7f08023605d224e36cef3770098d3757aee81848

4 years agocommon bezier: code refactoring. 07/236807/1
Hermet Park [Mon, 22 Jun 2020 08:06:53 +0000 (17:06 +0900)]
common bezier: code refactoring.

Organize bezier functions for internal share.

this bezier can be used in svg loader.

Change-Id: I78acd3273c0528688ca46ff7c29d78607bd729bd

4 years agocomon render: split declaration and body. 05/236805/1
Hermet Park [Mon, 22 Jun 2020 07:44:11 +0000 (16:44 +0900)]
comon render: split declaration and body.

Change-Id: I39eb1dfb929b7811fab82956aedbb15f001390e7

4 years agocommon render: code refactoring. 00/236800/1
Hermet Park [Mon, 22 Jun 2020 07:30:18 +0000 (16:30 +0900)]
common render: code refactoring.

just replace the filename.

Change-Id: I6b18520d33c7db3ac9d6c44b10dd693b204495e5

4 years agocommon loader: build up loader infrastructure. 56/236656/4
Hermet Park [Fri, 19 Jun 2020 05:49:07 +0000 (14:49 +0900)]
common loader: build up loader infrastructure.

Change-Id: I62aaed43015301ec39e414833f37d6c5485d8043

4 years agocorrect unmatched files permission.
Hermet Park [Thu, 18 Jun 2020 09:44:52 +0000 (18:44 +0900)]
correct unmatched files permission.

Please keep file permission 664.

Change-Id: I90bdfa76b4f94a06d3b560df42509f30e59111a4

4 years agotest: revise glShape sample.
Hermet Park [Thu, 18 Jun 2020 09:41:10 +0000 (18:41 +0900)]
test: revise glShape sample.

turn on gl window for testing.

Change-Id: I8a965f820d4a09697bc4145147cb0940672933be