Commit graph

2701 commits

Author SHA1 Message Date
Hermet Park
f1aab52958 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
2020-07-23 17:36:54 +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
Hermet Park
4d72eeda15 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
2020-07-22 20:59:52 +09:00
Hermet Park
5dcafb8b89 comon: code refactoring
renamed internal variable for better readibility.

Change-Id: I07dc66c4bd63f2aec8036aab14ec3ed608820fbc
2020-07-22 18:45:11 +09:00
Hermet Park
96477c0a24 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
2020-07-21 18:44:27 +09: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
Pranay Kumar Samanta
3b385d1d54 gl_engine: Fix crash in animation callback. Refactor test samples draw function. Fix open shape drawing.
Change-Id: I9ca2cb3951f2229f36292b69221451e0eaf5b6a1
2020-07-17 07:54:58 +00: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
Hermet Park
a6344daa66 sw_engine: fix wrong gradient fill transform.
it missed the offset when transformed gradient positions.

now it's fixed.

Change-Id: I916bd88b40bc29ca57d31411b92e10fe357d720e
2020-07-16 13:45:27 +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
2501c50506 capi: improve code template.
Change-Id: Ia48a21fbd93103b371b41a13adf46d82b76803b1
2020-07-15 16:18:55 +09:00
Hermet Park
9876d685cf capi: support c interfaces
this capi is under the beta,
we quickly provide this working prototype for collaboration.

Change-Id: Ie246abc306feb9a1305d1b593c4f3ef7f40ab5a9
2020-07-15 16:00:09 +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
e2fc353846 build: refactoriong meson script.
move gl dependency to gl_engine part which is right position.

Change-Id: I9d4935f94eff96ca1527762c92d07f9b216f19cd
2020-07-08 10:47:04 +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
Hermet Park
cfa17c6df6 svg_engine: fix infinit loop dead in stroke rendering.
here logic was wrongly introducedd, we fix the condition check properly.

Change-Id: I97f18f68290c61096f4e7fe54bd6f6fde51e175b
2020-07-07 11:26:28 +09:00
Hermet Park
2929fa5c57 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
2020-07-03 18:32:50 +09:00
Hermet Park
add79b07cd 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
2020-07-01 16:51:53 +09:00
Hermet Park
e0b66b1c3d Merge "SvgLoader: Don't use custom transform" into tizen 2020-07-01 07:36:15 +00:00
Hermet Park
322174d778 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
2020-07-01 15:53:47 +09:00
JunsuChoi
8c815e95c8 SvgLoader: Don't use custom transform
Change-Id: Ia7cd0992bbb8d5ee117806ee62b35604ffd91e16
2020-07-01 14:07:17 +09:00
Hermet Park
5faa94340f 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
2020-07-01 12:53:01 +09:00
Hermet Park
f377f33993 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
2020-06-30 17:24:14 +09:00
Hermet Park
4bc0b584f3 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
2020-06-30 12:38:01 +09:00