Commit graph

1253 commits

Author SHA1 Message Date
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
Hermet Park
0d5adb2f03 test: enable gl window only on gl backend.
Change-Id: Iafd790b7fc1df8a58bdce2f18c39029cc0d74945
2020-07-01 14:25:53 +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
61cb144122 test: revise sample.
this patch adds the showcase how to handle exceptional cases.

Change-Id: Ic8e3c740bbf613f4dccace511b6c8d93b987a10c
2020-06-30 13:31:28 +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
Hermet Park
8bb8710815 test svg: remove white trailings
Change-Id: Ie23ffdd420eb9742b21350dfffd5b29ae0515be3
2020-06-30 10:24:56 +09:00
Hermet Park
55e347cbbc Merge "SvgLoader: Supports Path's quadratic_to draw" into tizen 2020-06-30 01:22:25 +00:00
Hermet Park
918b6c69d8 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
2020-06-29 21:00:26 +09:00
JunsuChoi
654299d0ab test: Improve svg test
Displays svg files located in "./svgs" dir.

Change-Id: I4b9a281dc31fefb28c969780fa28adb74a5f5c02
2020-06-29 11:24:52 +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
Hermet Park
0a562a4ae2 test: print current backend engine name
Change-Id: Iaafa521556a614b47994914c09228b8e8ae9c9e9
2020-06-29 16:26:02 +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
Hermet Park
1513412e45 Merge "SvgLoader: Implement SvgSceneBuilder using SvgNode" into tizen 2020-06-29 07:17:15 +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
Hermet Park
ac3c46cf36 updated AUTHORS
Change-Id: Ife45b8ec1ad39822491e57b6031927a42f6a113b
2020-06-29 16:16:01 +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
4d6dee91e4 test shape: unify sw/gl test code.
default is sw engine, please run sample app with "gl" argument

$./testShape gl

Change-Id: Iff7da624ff17827df957919341737b9f129f502e
2020-06-29 14:59:01 +09:00
Hermet Park
56e866dd36 renamed project name tizenvg => thorvg
we're going to open this project as the independent one,

thus removed tizen naming here.

Change-Id: Ib3c898067dd9186e893f7cb0903fd70d2ce7b31f
2020-06-25 13:57:41 +09:00
Hermet Park
ad5f147c74 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
2020-06-25 13:31:45 +09:00
Hermet Park
28485d4b9c test: revise async(stress) test code.
Change-Id: I2005f12cc9552b4a98101ba53f48b04c9a6c5732
2020-06-24 20:16:58 +09:00
Hermet Park
4156de72f1 sw_engine: optimize rasterizey by threading it.
Also, newly introduced render interfaces: preRender(), postRender(), flush()

Change-Id: If506fa27e3c7dbd89f6734cad4774c1d151b88aa
2020-06-24 18:43:11 +09:00
Hermet Park
36c76ca73c sw_engine: threading optimization
make it prepare step asynchronously.

Change-Id: Ifb85f01d579cf1c111558842496b93fcaef74cd9
2020-06-24 14:35:23 +09:00
Hermet Park
35803e9c2b test: add stress test for performance profiling.
Change-Id: I4a1556c107ba59b7c972375ab8bfd22c777a5503
2020-06-24 13:38:13 +09:00
Hermet Park
9ffc1d40f6 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
2020-06-23 18:59:12 +09:00
Hermet Park
b212df1061 sw_engine stroke: initialize a missing variable.
Change-Id: I1c3d83d56045f592ff89a5462d4de494e50c9d34
2020-06-23 17:38:59 +09:00
Hermet Park
55e215e6ea 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
2020-06-23 17:29:28 +09:00
Hermet Park
86300c5fc0 sw_engine: optimize raster.
memset() is more than 10x faster than manual loop.

Thus we replace it to manipulate buffer pixels.

Change-Id: If0f255578f7d49ff6704c4f15e2eefe435cc3c15
2020-06-23 16:55:06 +09:00
Hermet Park
4f48c856f6 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
2020-06-23 14:15:47 +09:00
Hermet Park
a9d712e06e Merge "common transform: support matrix transform interface." into tizen 2020-06-23 02:31:23 +00:00