Commit Graph

22 Commits

Author SHA1 Message Date
Hermet Park 0e278d1de8 Revert "efl gfx_path: remove EFL_GFX_PATH_EVENT_CHANGED"
This reverts commit 7c38c0c915.

Oops, didn't intend this patch.
2018-12-26 19:32:42 +09:00
Hermet Park 7c38c0c915 efl gfx_path: remove EFL_GFX_PATH_EVENT_CHANGED
Summary:
Here is an additional optmization patch for removing
unnecessary updation of path,

For instance, let's assume this scenario:

If one vg object has 20 path nodes(shapes),
and every single nodes would have 50 path changes.
(like, append_cubic, append_rect, append_xxx ...);
There would 1000 events triggering.

Furthermore, if there are 20 vector objects in one view,
hese events would be triggered 20000 in one frame.

It's insane, actually I could figured out that happens.
and it took a lot of cpu consumption in some vector usages.

efl_gfx_path_commit() is my idea to avoid this.
When path is ready, the path need to get this api call in the last
 to make object changed properly.

@feature

Reviewers: #committers, cedric

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7494
2018-12-26 19:29:10 +09:00
Hermet Park e9ef999de6 efl gfx_path: introduce efl_gfx_path_reserve()
Summary:
This method reserves path commands buffer in advance.
If user know the count of path commands coming,
they can reserve commands buffer in advance to avoid buffer growing job.

This reserved buffer would grow up by double size, if the buffer is full.

@feature

Reviewers: #committers, cedric

Reviewed By: #committers, cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7456
2018-12-24 13:52:14 +09:00
Hermet Park 8b17564c74 efl gfx_path: prevent buffer overflow.
Summary:
the counter must be less than 7,
don't allow to over the index.

@fix

Reviewers: #committers

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7053
2018-09-18 11:48:27 +09:00
Marcel Hollerbach 21112fbf58 efl_gfx_path: remove unsued function.
Summary:
the function can be regained by reverting this.
Depends on D6381

Reviewers: devilhorns

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6382
2018-06-25 14:26:43 +09:00
Marcel Hollerbach c44c1e2ea0 efl_gfx_path: make counters unsigned
Summary:
we are comparing to unsigned number, and the number are moving strongly
from 0 up.
Depends on D6380

Reviewers: devilhorns

Subscribers: Hermet, cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6381
2018-06-25 14:25:52 +09:00
Hermet Park a7e4c67039 evas vg: fix broken morphing(interpolation)
efl_gfx_path itself took care of efl_gfx_shape data but its heirarchy was
conceptually wrong. Even efl_gfx_shape is mixing the efl_gfx_path...

Damend design...

Some of derived classes of efl_gfx_path (i.e. Vg.Node and Vg.Container) are
none of the Path acutally. They are just mixing Path's interpolation interface.

So, Here patch changes VG.Node to stop calling the super's interpolate method
and Vg.Shape to call both super -gfx_shape and vg_node- interpolate method.

@fix T6996
2018-06-14 20:02:15 +09:00
Daniel Kolesa fcae7cab27 eolian gen: enable constness generation on property getter impls
This changes a lot of things all across the EFL. Previously,
methods tagged @const had both their external prototype and
internal impl generated with const on object, while property
getters only had const on the external API. This is now changed
and it all has const everywhere.

Ref T6859.
2018-04-17 20:31:55 +02:00
Jean-Philippe Andre 6296d3815f vg: Fix warning (unused function) 2018-01-18 17:25:15 +09:00
subhransu mohanty 2a31883f5a efl/vg: Refactor the svg path handling and interpolation.
Summary:
This patch is taken from the tizen branch

1. Take care when the locale is different than POSIX.
See: strtod, strtol

2. Interpolate  all the property of a shape.

Reviewers: jpeg

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5740
2018-01-17 14:54:18 +09:00
Jean-Philippe Andre 1fdbb00e22 efl: Move VG-specific change event to efl.gfx.path 2017-12-13 13:47:48 +09:00
Amitesh Singh 774a01a28b Efl.Gfx.Path: add missing EOLIAN prefixes to eolian functions. 2017-11-30 16:09:37 +09:00
Jean-Philippe Andre bd5b76508b efl: Introduce interface Efl.Dup
A few classes allow their objects to be duplicated, so they should all
use the same interface.

Also, rename VG's dup to copy_from as it's not conforming to the
definition of dup.
2017-11-30 10:48:24 +09:00
Vitalii Vorobiov 73bfd4f04d efl_gfx_path: fix typo in _path_bounds_get
Wrong position was used while going through the array of
points

@fix
2017-11-07 11:54:09 +09:00
Jean-Philippe Andre f3eff6eb3e efl: Introduce Eina.Rect and switch EO APIs to it
It's a complex struct but defined in EO as a simple struct. ABI-wise
it's equivalent to Eina_Rectangle. Some macros that use Eina_Rectangle
also work on Eina_Rect out of the box, most of the code dealing with
x,y,w,h will require no modifications either.

But Eina_Rect provides direct access to a size or position 2d component,
as well as the usual x,y,w,h. The field "rect" is provided as a
convenience for code dealing with both Eina_Rectangle and Eina_Rect. We
may or may not require it.

Note: Size2D could use unsigned values but I have spotted a few places
in the code that actually use -1 to indicate invalid size (as opposed to
0x0).

@feature
2017-09-18 13:22:52 +09:00
Jean-Philippe Andre e274512c81 efl/gfx: Remove unused function
This fixes a warning with -Wunused-function
2017-04-25 21:22:32 +09:00
Jean-Philippe Andre e79f27ae0c efl: Remove manual definitions of event "changed"
Honestly I can't see why gfx & gfx.path "changed" need a manual
definition, instead of relying on EO. If the API needs to be
internal only, then EO needs to handle internal APIs. In this
case, the event was exposed as a C API but not a EO... why?
2017-04-18 11:07:46 +09:00
Jeeyong Um f370ea803b Efl.Gfx.Path: Fix wrong condition check in _find_ellipsis_coords
Summary:
In previous patch, !w should be replaced with EINA_FLT_EQ(w, 0.0), but it was
replaced with !EINA_FLT_EQ(w, 0.0). This breaks rounded rectangle.

T5291

Test Plan: compile and run attached file

Reviewers: cedric, jpeg, Jaehyun_Cho

Reviewed By: Jaehyun_Cho

Differential Revision: https://phab.enlightenment.org/D4787
2017-04-14 10:16:48 +09:00
Cedric BAIL 8f1c071d6a eina: rename EINA_{FLT,DBL}_CMP to EINA_{FLT,DBL}_EQ. 2017-01-06 15:58:46 -08:00
Cedric BAIL fa66613ed0 efl: remove float comparison warning from Efl.Gfx.Path code. 2016-12-19 16:33:46 -08:00
Hermet Park 4584fe5721 efl path: add missing value intializing.
It might be broken at some particular vector drawing.
2016-11-24 15:58:37 +09:00
Hermet Park e0da83ce56 efl interface: introduce efl_gfx_path mixin.
As we discussed, redesigned efl_gfx_shape mixin.
Split path properties/methods from the shape so that other classes benefit from the path.
2016-11-23 17:36:57 +09:00