Commit graph

850 commits

Author SHA1 Message Date
Hermet Park
7289116227 remove std async usage.
we can't control any threads count that could drop the performance.

remove async() and will come back with fine-tuned threading-pool.

Change-Id: I17c39792234acfce6db334abc0ce12da23978a9a
2020-08-14 17:41:44 +09:00
Hermet Park
3b9bb51321 svg_loader: free allocated data properly.
also renamed internal function for consistency.

createNode()
cloneNode()
freeSVGNode() ?

Change-Id: Ie9b22e92d5e918e947f8476ad0d4682fc7a3be65
2020-08-13 19:42:23 +09:00
Hermet Park
9ce44de970 svg_loader: initialize member data in default.
static analizyer bothers us due to this.
we'd rather initialize members for free of them.

Change-Id: I6dd76427b0fe2f9ff09034fe3ab11080a8d72a2e
2020-08-13 19:10:29 +09:00
Hermet Park
9893af979f replace license from Apache 2.0 to MIT
Change-Id: I61f7cb2b0e407bc035f3b2ec7da9b7f230057e24
2020-08-13 16:53:38 +09:00
Hermet Park
4959db9c04 svg_loader: fix compile warnings.
-- warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]

Change-Id: I7dec55fe117d27217b7a29d5983b23cedadacb71
2020-08-06 20:09:15 +09:00
Hermet Park
ccde125cf5 svg_loader: fix compile warnings.
--warning: extra â^`^x;â^`^y [-Wpedantic]

Change-Id: Ib40079628cac3fff6d991fd05d7d8073dd350361
2020-08-06 16:51:55 +09:00
Hermet Park
7214559ad9 common: fix compile warnings.
--Werror=unused-parameter

Change-Id: If4c04e3e20b67be62b50c3b1e2e909dbd848eccc
2020-08-06 16:48:26 +09:00
Hermet Park
892f729265 svg_loader: code refactoring.
++neat

Change-Id: I3b5552a2bbf09571ba01f0e31569b553913f400d
2020-08-06 14:35:56 +09:00
Shinwoo Kim
4f0561697a svg_loader: fix build error
This patch is solving following build error.

   error: ‘offsetof’ was not declared in this scope

Depending on build environment, this error could happen.

Change-Id: I3512bb205f79a4d893cf33266db0a9109c0df886
2020-08-06 05:34:59 +00:00
Hermet Park
28ae7a4411 svg_loader: code refactoring
remove macro code that does not helpful.

This just decrease readibility and increase LOC.

Change-Id: I9f1b11318447b45a9f96e7b00c18141fd9e71f9a
2020-08-06 14:34:00 +09:00
JunsuChoi
62aa24d9ad SvgLoader: Fix opacity propagation
Remove duplicate opacity calculation of the scene.

Change-Id: I1253ea290e78fdbf946a492ebfcaaa082fbfc121
2020-07-23 01:40:36 +00:00
JunsuChoi
27ca82c140 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
2020-07-21 02:51:28 +00:00
Hermet Park
2ba529c8fb common transformation: fix transformation multiply
Change-Id: Ibc95fab0abfc07aa7f0c4ff6c74785d4f73d02c7
2020-07-17 17:54:21 +09:00
Hermet Park
ca6417ec8d svg_loader: code refactoring.
leave to shape to handle non-effective values.

Change-Id: I4193653710498e0ea31b0ff88fd8f0f8f0238e0e
2020-07-16 17:17:16 +09:00
Hermet Park
231b3779b1 svg_loader: code refactoring
keep clean & neat code.

Change-Id: Ia17139a291fc9934fe2f8d5e51417c44ec50f2ed
2020-07-16 17:11:47 +09:00
Hermet Park
33b067eb0a 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
2020-07-16 17:03:44 +09:00
JunsuChoi
1b48bf10fe 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
2020-07-16 09:36:19 +09:00
Hermet Park
9e1ba8d2c0 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
2020-07-11 20:58:09 +09:00
Hermet Park
2deb6919c7 Merge "SvgLoader: Inherit parent opacity" into tizen 2020-07-10 00:50:38 +00:00
Hermet Park
9299c41a21 svg_loader: code refactoring.
simpler code is better for readibility.

Change-Id: I4bc18bb184aea6fea0179bb38b445da5e0acba43
2020-07-10 09:31:50 +09:00
Hermet Park
22581040f3 Merge "SvgLoader: Support to linear, radial gradient" into tizen 2020-07-10 00:19:51 +00:00
Hermet Park
c237eb04c1 Merge "SvgLoader: Fix typo (SCubic draw)" into tizen 2020-07-10 00:16:49 +00:00
JunsuChoi
e86d2ab686 SvgLoader/Parser: Fix typo
Change-Id: Iced0f2196c52f7cc729d6f648f5df6affbda3357
2020-07-09 16:36:30 +09:00
JunsuChoi
581451ea8d SvgLoader: Fix typo (SCubic draw)
Change-Id: Id54cf6a7ca66cdbc96cfb93143aacccab95de822
2020-07-09 15:40:21 +09:00
JunsuChoi
84df3439de SvgLoader: Inherit parent opacity
Change-Id: If52c6581845e9918dc13c4627080ba84d270a07b
2020-07-09 13:37:12 +09:00
JunsuChoi
f644443655 SvgLoader: Support to linear, radial gradient
Change-Id: Ida3f6ccca5f0d6ed1922b7ce99d2d2f3203f5ba9
2020-07-09 13:36:46 +09:00
Hermet Park
99428ee80a build: support features toggling in meson option.
Change-Id: Id1ebda70fe8380aaa913f79af26e5c39893a6df5
2020-07-08 15:30:12 +09:00
Hermet Park
84af527a27 build: refactoring meson script.
move out engine/loader dependency to its immediate parent folders.

Change-Id: I7f08433fc6d2a333951fceaffea81cbe2e5da9e3
2020-07-08 10:56:44 +09:00
Hermet Park
400ad1c585 Merge "common loader: return viewbox info from the vector resource." into tizen 2020-07-07 10:06:25 +00:00
Hermet Park
c0280e6d57 svg_loader: code refactoring.
initialize members in its own constructor.

Change-Id: I6450971330dd3e3235b0f690a8d9b066cf374212
2020-07-07 17:52:16 +09:00
Hermet Park
018f4919da svg_loader: allow deferred loading.
don't push thread to work hard unless it's necessary.
that might occur performance drop.

Change-Id: Ib71fa0ae46461b10b7ed7ef356512fbf2a7aa0a8
2020-07-07 17:46:29 +09:00
JunsuChoi
feb6aad641 SvgLoader: Fix z-angle calculation
Change-Id: I9220abd9f92dbdf250ea071af128a93a0bbb3d78
2020-07-07 15:24:19 +09:00
Hermet Park
6967b998b6 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
2020-07-07 15:17:43 +09:00
Hermet Park
d37cdaf57c Merge "SvgLoader: Support arc_to draw" into tizen 2020-07-07 05:49:20 +00:00
JunsuChoi
1d24838c67 SvgLoader: Support arc_to draw
Change-Id: I950c8e850605f990d6a0aa59a067ced571ffdb51
2020-07-07 14:28:52 +09:00
Hermet Park
a94bd31d56 svg_loader: release resources just in case when it's destroyed.
Change-Id: Ib4a61ae0769d3f9284e3cf450002750c47fba01c
2020-07-07 13:54:33 +09:00
Hermet Park
be6e39eb02 Merge "SvgLoader: Async conversion of svg data" into tizen 2020-07-07 04:49:01 +00:00
JunsuChoi
88ed685f1d SvgLoader: Skip unnecessary transform calc
Change-Id: I58e3baae6d68a2ad4a34c8b460fe67bd36f03b3d
2020-07-07 04:47:08 +00:00
JunsuChoi
d5e78eac71 SvgLoader: Async conversion of svg data
Change-Id: I58025e646b531a0451be096ef1891377e655a3fc
2020-07-07 13:43:00 +09:00
Hermet Park
ef4d7a3956 common shape: expand rectangle arguement to support both corner radius x, y
this is useful for svg loader

Change-Id: Ia11c2d1c6ea88f3fd65c7f75cef8b59bef426bcb
2020-07-07 13:09:46 +09:00
JunsuChoi
02a0e98596 SvgLoader: Support x,y rounded rect
Change-Id: I45d8f7ff3604da0a80c09e2495ed8c0301310094
2020-07-07 02:37:27 +00:00
JunsuChoi
0d19700b4e SvgLoader: Support ellipse draw
Change-Id: I6420673d8341a59b91546224576d1c977c1a08d2
2020-07-07 02:30:06 +00:00
JunsuChoi
8c815e95c8 SvgLoader: Don't use custom transform
Change-Id: Ia7cd0992bbb8d5ee117806ee62b35604ffd91e16
2020-07-01 14:07:17 +09:00
Hermet Park
55e347cbbc Merge "SvgLoader: Supports Path's quadratic_to draw" into tizen 2020-06-30 01:22:25 +00:00
JunsuChoi
9ba6bd654e SvgLoader: Fix typo
rect types w, h -> width, height

Change-Id: I5e85360644d9b8c2b2d84f182a0de16fefe9edbf
2020-06-29 11:20:19 +00:00
JunsuChoi
be6615d93e SvgLoader: Supports Path's quadratic_to draw
Convert quadratic bezier to cubic

Change-Id: I885138dcdfb9f0e85bf3ca1ca5c9fc4eb0d8f1f8
2020-06-29 16:35:21 +09:00
JunsuChoi
3fe2eedd89 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
2020-06-29 07:17:22 +00:00
JunsuChoi
e9d6bd7833 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
2020-06-29 16:16:08 +09:00
JunsuChoi
3a8d6821ba 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
2020-06-29 07:14:06 +00:00
Hermet Park
01e52c7c7a common loader: build up loader infrastructure.
Change-Id: I62aaed43015301ec39e414833f37d6c5485d8043
2020-06-19 15:46:02 +09:00