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
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
PaintNode -> Paint
ShapeNode -> Shape
SceneNode -> Scene
We can keep clean and neat shorter names.
Change-Id: Ic8521d456d947985e5fbe1ba2bde06faa1f52469
Also, added one more showcase how to update only necessary properties of a shape
while retaining other properties...
Change-Id: If165bc7f8147cad0437e3ca2f7c007614c256248
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
+lineTo()
+moveTo()
+cubicTo()
+close()
These interfaces might not perfect optmizied,
but you can build path commands easier than manual data set.
Change-Id: Icb934ca256d3107ca0c938d28015d767fb93355e
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
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
introduce Canvas class to replace the CanvasBase.
now, SwCanvas, GlCanvas inherits this Canvas for polymorphism
and remove duplicated interfaces.
Change-Id: I65a87e3aa2289d04997930a54aeccd14f57dd73a
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
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
Introduce project skeleton such as build envrionment and interfaces
to build up code further cooperatively.
Change-Id: Ie9ac38991f609d33637283134906d7cc3f2ac19e