platform/core/graphics/tizenvg.git
4 years agocommon scene: support bounds() method 59/232459/1
Hermet Park [Tue, 5 May 2020 11:38:26 +0000 (20:38 +0900)]
common scene: support bounds() method

this method returns boundary of a scene.

Change-Id: I1a32c8e034f53822008048f1d8ae7062fb72cca3

4 years agocommon scene: implement basic scene behaviors and testScene sample. 44/232444/4
Hermet Park [Tue, 5 May 2020 01:20:50 +0000 (10:20 +0900)]
common scene: implement basic scene behaviors and testScene sample.

Scene is a group(list) of paints.

This class is designed for vector data set which is prepared before canvas.
If a set of vector data is loaded from other resources such as files,
they can construct these data set using Scene.
This then can be pushed into canvas as one completed image.

Scene is supposed to be used in svg loading and storing to tvg specific data format(tvg)

Change-Id: Ie2ffebf74e79c59d99a77880630a54b6baad7eec

4 years agocommon canvas: hide engine() interface 28/232428/2
Hermet Park [Mon, 4 May 2020 12:23:42 +0000 (21:23 +0900)]
common canvas: hide engine() interface

this engine() is not necessary by users,
we can hide this by moving out CanvasImpl class.

Change-Id: Iaf47dbd3c523e96d6af0bd1fd4caa11a7fd3778a

4 years agocommon shape: refactored interfaces. 27/232427/2
Hermet Park [Mon, 4 May 2020 12:10:04 +0000 (21:10 +0900)]
common shape: refactored interfaces.

hide engine() interface of shape that's not friendly one by users.
instead canvas would access shape internal data to update/draw it.

Now Paint cannot update itself but has to request to Canvas for it.

Change-Id: Ibafd0864a65c3c33238789d1a3e06c49c4378349

4 years agotest: updated test samples. 69/232369/1
Hermet Park [Sun, 3 May 2020 06:14:01 +0000 (15:14 +0900)]
test: updated test samples.

1. added testTransform
2. replaced testShape with testMergeShapes

Change-Id: I1f7b25a1d2f62ac682f7a19e75fc3a44db7c52f0

4 years agocommon shape: revise scale/rotate approach. 66/232366/8
Hermet Park [Sat, 2 May 2020 17:02:43 +0000 (02:02 +0900)]
common shape: revise scale/rotate approach.

Come to think of it, this optimized method is not so useful,
it could just bring the user misunderstanding and
not to efficient as I expected in the most cases.

So, changed policy for transformation behaviors.
it keeps the properties as others but leaves it to the backend implementation.

Plus, this change contains the correct RenderUpdateFlag.
You can refer the flag in the backend to figure out which kinds of properites has been updated

Change-Id: Ibe0494712598a8161950b9ae2e22ac45bed1c47b

4 years agocommon shape: support scale/rotate transform 64/232364/4
Hermet Park [Sat, 2 May 2020 13:30:48 +0000 (22:30 +0900)]
common shape: support scale/rotate transform

rotate(), scale() won't be retained.
When you call reset() for the shape, these values will be reset as well.

These are working in fire & forget method,
it actually modify the path data for avoiding compuatation every frames.

Thus user needs to keep the last values to understand the final accumulated values.

Change-Id: I41f260271cdefc977eea01a778d49632440c777f

4 years agocommon: redesigned interfaces 63/232363/3
Hermet Park [Sat, 2 May 2020 09:16:45 +0000 (18:16 +0900)]
common: redesigned interfaces

PaintNode -> Paint
ShapeNode -> Shape
SceneNode -> Scene

We can keep clean and neat shorter names.

Change-Id: Ic8521d456d947985e5fbe1ba2bde06faa1f52469

4 years agocommon shape: renamed the method clear() to reset() 62/232362/2
Hermet Park [Sat, 2 May 2020 09:06:06 +0000 (18:06 +0900)]
common shape: renamed the method clear() to reset()

Also, added one more showcase how to update only necessary properties of a shape
while retaining other properties...

Change-Id: If165bc7f8147cad0437e3ca2f7c007614c256248

4 years agosw_engine: code refactoring. 61/232361/1
Hermet Park [Sat, 2 May 2020 08:44:49 +0000 (17:44 +0900)]
sw_engine: code refactoring.

renamed internal variables for better readibility.

Change-Id: I1ba7938401e8b7249c8bcc396be1ba3c109716cd

4 years agocanvas: migrate render target clear call into draw(); 60/232360/3
Hermet Park [Sat, 2 May 2020 08:28:18 +0000 (17:28 +0900)]
canvas: migrate render target clear call into draw();

Obivously, we need to clear target before drawing.

Thus canvas request to renderers to clear buffer.

the implementation is upto backend engines.

Change-Id: Ib80da7f2260b021bcfed9fa13fb91c20218f9da0

4 years agocanvas: code refactoring 59/232359/2
Hermet Park [Sat, 2 May 2020 02:14:14 +0000 (11:14 +0900)]
canvas: code refactoring

accept an extra argument in the clear() to clear paints node

and clear buffer selectively.

Change-Id: I83721e74358f546f325bb03fd1f36c7565174dd7

4 years agotest: added testUpdate 58/232358/1
Hermet Park [Sat, 2 May 2020 01:55:33 +0000 (10:55 +0900)]
test: added testUpdate

this shows a moving shape:

how to update canvas every frames.

Change-Id: I373e39757f4511d4e676f36d76e468d03b185a0c

4 years agosw_engine: support anti-aliasing 40/232340/5
Hermet Park [Fri, 1 May 2020 08:15:31 +0000 (17:15 +0900)]
sw_engine: support anti-aliasing

Change-Id: I9b79c8b4022ddf2ae4fe980f480ba3ec140750d3

4 years agosw_engine: support color blending 26/232326/4
Hermet Park [Fri, 1 May 2020 04:59:02 +0000 (13:59 +0900)]
sw_engine: support color blending

this contains testBlending as well

Change-Id: Ia0aadea804a973cfe8ec981ed1b21c1b44512ef2

4 years agotest: rename testPath to testPathCopy 24/232324/1
Hermet Park [Fri, 1 May 2020 03:46:54 +0000 (12:46 +0900)]
test: rename testPath to testPathCopy

Change-Id: I8cf2a26437a804d2cd061d61d3a99b3c6f3aa0e6

4 years agotest: updated comments
Hermet Park [Thu, 30 Apr 2020 14:40:35 +0000 (23:40 +0900)]
test: updated comments

Change-Id: I92fccb5a9de088f837a768a2f1d60ac94eac9410

4 years agocommon shape: added path commands interfaces for user convenient. 08/232308/2
Hermet Park [Thu, 30 Apr 2020 10:11:04 +0000 (19:11 +0900)]
common shape: added path commands interfaces for user convenient.

+lineTo()
+moveTo()
+cubicTo()
+close()

These interfaces might not perfect optmizied,
but you can build path commands easier than manual data set.

Change-Id: Icb934ca256d3107ca0c938d28015d767fb93355e

4 years agocommon shape: remove unnecessary log
Hermet Park [Thu, 30 Apr 2020 09:38:34 +0000 (18:38 +0900)]
common shape: remove unnecessary log

Change-Id: Ie85153afdc01270ed282d9ff87607ee1a882be31

4 years agocommon shape: support path appending 05/232305/2
Hermet Park [Thu, 30 Apr 2020 09:31:51 +0000 (18:31 +0900)]
common shape: support path appending

it's usage may require a little handy but
The path data is very low manipulated, its usage may require a little handy,
but appedingPath() is designed for performance.

Also added testPath.

Change-Id: Ifd929d48506926e3f529198c0b40ee8f922835d4

4 years agosw_engine: fix crash at merge shape test
Hermet Park [Thu, 30 Apr 2020 06:41:16 +0000 (15:41 +0900)]
sw_engine: fix crash at merge shape test

increased spare cell memory for rasterizing.

Change-Id: I391dfbfae0ef028d213c55fe1ceca023e272e676

4 years agosw_engine: case cover out of surface boundary. 85/232285/2
Hermet Park [Wed, 29 Apr 2020 15:54:41 +0000 (00:54 +0900)]
sw_engine: case cover out of surface boundary.

Also added surface boundary test code.

Change-Id: Ib4c327d12ce52d506f1b8a566ffa48e5b5b8c03e

4 years agocanvas: correct convention
Hermet Park [Sun, 26 Apr 2020 17:00:38 +0000 (02:00 +0900)]
canvas: correct convention

add missing noexcept option.

Change-Id: I14eacb0fdb2c9bd40e365bf81bb5cc0b73239ffe

4 years agoupdate gitignore file
Hermet Park [Sun, 26 Apr 2020 16:59:49 +0000 (01:59 +0900)]
update gitignore file

Change-Id: I0b245f1177e3df04ddc6f345213bbb1207d3e950

4 years agocanvas: add reserve() method. 24/231924/1
Hermet Park [Sun, 26 Apr 2020 16:52:44 +0000 (01:52 +0900)]
canvas: add reserve() method.

This allocates nodes slots in advance to avoid memory grow & copy.

it will be benefit if you know how many shapes will be used in your canvas.

Change-Id: I7d93d166c9c054078bd86593d3471a2ade3671ee

4 years agocommon: code refactoring. 23/231923/2
Hermet Park [Sun, 26 Apr 2020 16:45:52 +0000 (01:45 +0900)]
common: code refactoring.

introduce Canvas class to replace the CanvasBase.
now, SwCanvas, GlCanvas inherits this Canvas for polymorphism
and remove duplicated interfaces.

Change-Id: I65a87e3aa2289d04997930a54aeccd14f57dd73a

4 years agotest: close the window at exit button 15/231915/1
Hermet Park [Sun, 26 Apr 2020 09:47:34 +0000 (18:47 +0900)]
test: close the window at exit button

Change-Id: Idf46d7132ae97356637816e54dc6c267be7122e6

4 years agotest: add merge shapes 14/231914/2
Hermet Park [Sun, 26 Apr 2020 09:41:27 +0000 (18:41 +0900)]
test: add merge shapes

Change-Id: I2dc91d3514aed1cbb1bd3490ea5d91debeab662a

4 years agocommon shape: support ellipse 13/231913/1
Hermet Park [Sun, 26 Apr 2020 09:18:52 +0000 (18:18 +0900)]
common shape: support ellipse

Now, you can pass separate width radius and height radius in circle.

Change-Id: Ie1e2b58fbb399d8ef74d55d83ec48d8f4323f21e

4 years agocommon shape: support rounded rectangle. 07/231907/3
Hermet Park [Sun, 26 Apr 2020 06:00:29 +0000 (15:00 +0900)]
common shape: support rounded rectangle.

Also remove arcTo implementation since curveTo could covers it.

Change-Id: Icc63eca55e51622fc80b57672f308f25f2301f85

4 years agosw_engine: fix wrong comparison that brings broken shapes.
Hermet Park [Sun, 26 Apr 2020 05:57:14 +0000 (14:57 +0900)]
sw_engine: fix wrong comparison that brings broken shapes.

These implementation is still at hot coding,
we still need to improve a lot.

Change-Id: I61398bff75395ff5e692ca48f4d62243f74bed85

4 years agocommon shape: implement appendCircle body. 04/231904/6
Hermet Park [Sat, 25 Apr 2020 12:40:40 +0000 (21:40 +0900)]
common shape: implement appendCircle body.

Change-Id: Ib8507366f84532db3119f04c8d55e0d4e8206f9f

4 years agosw_engine: concrete shape rendering sequence. 70/231170/6
Hermet Park [Sun, 19 Apr 2020 04:13:27 +0000 (13:13 +0900)]
sw_engine: concrete shape rendering sequence.

Succeed first sw backend screen up!

Change-Id: I882fb1726ed1f45e92e73fbc36170e93645dfbd2

4 years agotest: update test code for the first showcase.
Hermet Park [Sun, 19 Apr 2020 03:17:48 +0000 (12:17 +0900)]
test: update test code for the first showcase.

To show the result, we use efl library.

Most linux distribution supports efl library from their package repo,
you can easily install efl from its package repo:

Ubuntu:
$ apt-get install libelementary-dev

Or, please visit efl site to install EFL libarary manually:
https://www.enlightenment.org/download

Change-Id: I696ac72e4ec7ea3258161a15b58171d74c16830d

4 years agosw_engine: tag one optimization point for future work.
Hermet Park [Sun, 19 Apr 2020 02:55:19 +0000 (11:55 +0900)]
sw_engine: tag one optimization point for future work.

Change-Id: Ib41b18c097d24636efbba633972e1c8b7f9a63ef

4 years agosw_engine: optimization++
Hermet Park [Sun, 19 Apr 2020 02:13:28 +0000 (11:13 +0900)]
sw_engine: optimization++

Adjust rle span generation size to reduce memory allocation.
This span growing is experimentally increased, undeterministic.
Thus We need too increase them every requests, if we increase their
size x 4, we can avoid a lot of memory copy in advance.

Change-Id: Idd24024204a69fa3b6857728b95aa63a3ac26c5e

4 years agocode refactoring.
Hermet Park [Sat, 18 Apr 2020 14:21:22 +0000 (23:21 +0900)]
code refactoring.

separate Renderer interfaces to RenderCommon.

Change-Id: I682b20db6cc8a058efee7dd4f519277d86306153

4 years agocode refactoring.
Hermet Park [Sat, 18 Apr 2020 14:07:15 +0000 (23:07 +0900)]
code refactoring.

revise internal class & variable names for better code readibility.

Change-Id: I7f1b4474f3129c3be04444350496485f000afd15

4 years agorename class names.
Hermet Park [Sat, 18 Apr 2020 13:59:27 +0000 (22:59 +0900)]
rename class names.

RasterMethod -> RenderMethod
SwEngine -> SwRenderer
GlEngine -> GlRenderer

Change-Id: Ic2ded698e49c4373fe21fe31fa34baca01bf43a2

4 years agosw_engine: implement line and curve raster 67/231167/6
Hermet Park [Sat, 18 Apr 2020 04:48:37 +0000 (13:48 +0900)]
sw_engine: implement line and curve raster

Change-Id: I22a77892544cd510cfe646aee60093cebb848806

4 years agoreplace backend class names.
Hermet Park [Sat, 18 Apr 2020 03:43:30 +0000 (12:43 +0900)]
replace backend class names.

SwRaster to SwEngine
GlRaster to GlEngine

Change-Id: I3cf70e168b78c64754807a62c221e13c11b95c35

4 years agoimplement rle path parts. 48/230848/5
Hermet Park [Tue, 14 Apr 2020 17:11:18 +0000 (02:11 +0900)]
implement rle path parts.

Change-Id: I7200d80320404d6e7fb722042b8f330961bee76d

4 years agoimplement rle raster. 67/230567/7
Hermet Park [Sat, 11 Apr 2020 06:23:37 +0000 (15:23 +0900)]
implement rle raster.

Change-Id: Ie21dfbf0ff1aed43bfa750eeef3b8c033a986416

4 years agoimplement shape basics sw engine. 06/229806/5
Hermet Park [Fri, 3 Apr 2020 16:14:11 +0000 (01:14 +0900)]
implement shape basics sw engine.

Change-Id: I93788f40f7c4f59bcc9ab4dff9127bcb4e6c1466

4 years agoimplement sw engine basic sequence. 95/229795/2
Hermet Park [Fri, 3 Apr 2020 07:09:09 +0000 (16:09 +0900)]
implement sw engine basic sequence.

Change-Id: Ide27c9b191088109f95e03fcd1c80ad3ecc058cd

4 years agoimplement basic interfaces 20/229520/4
Hermet Park [Wed, 1 Apr 2020 10:48:37 +0000 (19:48 +0900)]
implement basic interfaces

major functions are added for Path specification.
added backend engine infra skeleton.

Change-Id: Ia923b02649cff545fa768ab8538ad7187195826f

4 years agoUpdate sample prototypes. 35/229235/2
Hermet Park [Mon, 30 Mar 2020 11:51:26 +0000 (20:51 +0900)]
Update sample prototypes.

This is still a hard work and under the intensive settle up stage.

Change-Id: Ibfbeaabe8a51dc5edeeccf8fe75e65e60b91f703

4 years agobuild up base infra code for prototype. 15/228715/7
Hermet Park [Wed, 25 Mar 2020 04:54:29 +0000 (13:54 +0900)]
build up base infra code for prototype.

Change-Id: I117a798caf4d9fedfe5c467471dee2f0150c2630

4 years ago+ Initial draft 02/228602/7
Hermet Park [Tue, 24 Mar 2020 06:07:51 +0000 (15:07 +0900)]
+ Initial draft

Introduce project skeleton such as build envrionment and interfaces
to build up code further cooperatively.

Change-Id: Ie9ac38991f609d33637283134906d7cc3f2ac19e

4 years agoInitial empty repository master
Tizen Infrastructure [Tue, 24 Mar 2020 02:52:35 +0000 (02:52 +0000)]
Initial empty repository