Commit Graph

3005 Commits

Author SHA1 Message Date
Hermet Park 44363bb70f efl_canvas_vg image: changed image parameter type.
it's still in improvement stage in beta.
2019-07-22 17:31:06 +09:00
junsu choi 56ebaea1fe Efl.Canvas.Vg : Implement Efl.Canvas.Vg.Image class
Summary:
Implements a vector class that can support image.
User can use this class to output an image with a vector object.

Depends on D9218:Ector.Renderer : Implement Ector.Renderer.(Software).Image class

Test Plan: N/A

Reviewers: Hermet, smohanty, kimcinoo

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9219
2019-07-22 13:37:47 +09:00
Mike Blumenkrantz bf01c2382a evas/map: permit evas_map_free(NULL)
free functions in efl should always handle null pointers gracefully

@fix

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9363
2019-07-19 15:05:04 -07:00
Mike Blumenkrantz dc1630d496 evas: fix type checking of Evas pointers in legacy functions
many of these functions go directly to evas internals with no eo checks,
and the existing "MAGIC_CHECK" macro has somehow become a useless null
check

type checking here is important in order to avoid crazy behavior when the
wrong object types are passed

@fix

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9364
2019-07-19 15:05:00 -07:00
Mike Blumenkrantz e663b9da55 evas/box: avoid triggering smart_move callback
any time an evas box is moved, it flags itself to do a recalc on all of
its contents in the next render. evas box also inherits from smart clipped
class, however, which means that it will also move all of its contents
immediately on every single move. this results in something like:

move(box) -> for content in box { move(content) } -> render ->
  recalc(box) -> for content in box { calc(content); move(content); }

which is massively inefficient and results in box being completely unusable
once it has a large number of contents

by skipping immediate move() calls for all the box contents, we can bring this
performance back to usable levels

@fix

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9336
2019-07-19 10:54:55 -07:00
Cedric BAIL 6a93e2ef3d evas: add infrastructure to feed 9 patch information from file loader to image object.
This is just the plumbing that feed data provided along android 9 patch image for example
into Evas object image new stretch and content region infrastructure for rendering them
properly.

Reviewed-by: Hermet Park <hermetpark@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9102
2019-07-12 09:54:16 -07:00
Cedric BAIL b2cb77ca9c evas: take stretch region into account when content region is requested.
Reviewed-by: Hermet Park <hermetpark@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9097
2019-07-12 09:54:06 -07:00
Cedric BAIL 9fbc5dfc66 evas: add support for stretchable region.
This is the first step into introducing support for Android 9 patch
format (extension: .9.png). The principle is to expose a new property
on image object that define a complete behavior incompatible with other
border and fill logic. The reason is that 9 patch allow for any number
of stretchable area inside an image, not just for each corner. The way
to define this is by giving a pointer to an array of the proper type
that define stretchable region relative to each other.

The logic being slightly more complex than the border and fill logic,
it is slightly slower. If you are just defining corner on your image
for something like a button, you would still get better performance
using border. I will try to make edje_cc detect those case and fallback
to border when possible.

Reviewed-by: Hermet Park <hermetpark@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9096
2019-07-12 09:54:03 -07:00
Cedric BAIL 23a2820121 evas: add an API to know where inside an object content can be layout over.
The first step with this API is to use the information provided when setting
the border on an image to define the content area inside it. Improvement will
be to use more flexible stretch region area to make it more customizable and
finally read the information from a 9patch file (.9.png).

Reviewed-by: Hermet Park <hermetpark@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9093
2019-07-12 09:53:59 -07:00
Godly T.Alias c001a8146b Evas Events: Decrement grab count on freeze state
Summary:
Decrement grab count of mouse event when mouse up happen during a freeze state.
Currently as grab count is not reduced in this scenario, further touches gets ignored.

Signed-off-by: Godly T.Alias <godlytalias@yahoo.co.in>

Test Plan: (on scenario where proxy exists) mouse down -> freeze events -> mouse up -> unfreeze events

Reviewers: cedric, raster, zmike, Hermet

Reviewed By: zmike

Subscribers: zmike, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9214
2019-07-12 08:45:18 -04:00
Hosang Kim 7d33cf977f Rename orientation -> image_orientation.
Summary:
Efl.Gfx.Image_Orientable and Efl.Ui.Layout_Orientable have same property name.
So when class extends both interfaces, it makes conflict.

Relates to T7924

Reviewers: woohyun, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9299
2019-07-12 10:32:20 +02:00
Mike Blumenkrantz b6ebcc35fc evas/render: clear smart render cache when re-adding smart parent in post-render
given the following scenario:
* object is added to smartobj
* smartobj is otherwise unchanged
* render occurs
object will never render due to smartobj's render cache not including object

by clearing this cache when reinserting smartobj into the render tree for a
followup render, the object chain will be correctly processed on the next pass

fix T7990

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9287
2019-07-11 16:51:35 -07:00
Marcel Hollerbach 1c8f6132af declare a few classes stable
this is the first wave of stablization declarations

fixes T7562
fixes T7846
fixes T7848
fixes T7859
fixes T7860
fixes T7861
fixes T7863
fixes T7878
fixes T7899
fixes T7918
fixes T7919
fixes T7963
fixes T7964
fixes T7965
fixes T7967
fixes T7969
fixes T7970

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9264
2019-07-11 17:15:43 +02:00
Hermet Park c8fe282190 canvas event: remove unnecessary condition check.
This condition is duplicated in the function,
it's unnecessary.
2019-07-10 20:38:54 +09:00
Ali Alzyod 7ad0dda73d evas_object_textblock: update documentation, setting color part
Summary: Now Textblock has the ability to parse color names same as hex value strings.

Reviewers: segfaultxavi, woohyun, bowonryu

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9250
2019-07-09 19:35:54 +02:00
Hermet Park d01a121aa9 efl_canvas_vg: prevent dangling pointers. 2019-07-09 15:50:26 +09:00
Shinwoo Kim c8827c0dcc evas_render: add restacked mapped obj to redraws rect
Summary:
We are adding A object area to the redraws rect when object stack is changed
from (1) to (2) if A object is not mapped.

(1)
 ┌────────┐
 │Object A│┐
 └────────┘│
  └────────┘

(2)
 ┌────────┐
 │┌────────┐
 └│Object B│
  └────────┘

But if A object is mapped, then we are adding only part of A object area.

(part of A)
 ┌───────┐
 │┌──────┘
 └┘

So the result of stack change is (1) not (2).
This patch set is adding restacked mapped object to the restack_objects array,
after changing the stack of mapped object to add correct redraws rect.

Test Plan:
{F3727281}

{F3727280}

{F3727279}

(1) Build and Run attached example on software_x11 engine
(2) Mouse down on upper image - the image starts to use map.
(3) Then mouse up - upper image should go under the below image.
But, the changed result is NOT rendered.

Reviewers: Hermet, jsuya, zmike

Reviewed By: zmike

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9183
2019-07-09 12:05:36 +09:00
Marcel Hollerbach d3dbd5a5cd evas_events: fix wrong event listening
EFL_EVENT_FOCUS_IN is wrong here, EFL_EVENT_FOCUS_IN is called on object
that received object focus. Not canvas focus, however, the code in the
callback there seems to be mainly for canvas focus handling.

Additionally, in evas_events, the event handler that was listening for
the canvas focus in / out events expected a event type, which is also
not correct, because the canvas focus in / out does not have one. In
order to catch such errors later more easily, there is now a safety
check, so we really fetched the correct seat.

Reviewed-by: YeongJong Lee <yj34.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D9191
2019-06-28 09:03:14 +02:00
Mike Blumenkrantz e399bdd6ec evas_events: implement POINTER_CANCEL event
it looks like this was left out during initial writing of eo-based eventing,
but based on the description, the intent was to have a separate cancel event
which was emitted just prior to the 'up' event using the existing state

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9184
2019-06-27 16:51:19 +02:00
Marcel Hollerbach ea0784d318 evas_events: fix setting of 'pressed' member in Efl_Input_Key_Data
Summary:
this also adds tests verifying that EFL_EVENT_KEY_DOWN / EFL_EVENT_KEY_UP are emitted
and passed with the correct event types, and fields on the event object.

Depends on D9166

Reviewers: zmike, segfaultxavi

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9167
2019-06-26 09:54:55 -04:00
Hermet Park 4ff8c5f7b2 efl_canvas_vg_container: remove unnecessary parent set.
the duplicated object must be set its parent by caller,
it shouldn't set it by itself internally.
2019-06-26 20:48:19 +09:00
Hermet Park b9661d85cd evas vector: set proper parents of clone objects.
fill, marker, stroke need proper parent when they were cloned.

Here, they would get the container of the shape which is going to be copied.

@fix
2019-06-26 17:16:32 +09:00
Hermet Park 625e11f584 evas vector: support lottie animation as using json loader.
Summary:
This patch extends efl_canvas_vg_object class to implement efl_gfx_frame_controller
to suppor any playable animation on it.

Plus, vector object takes care of lottie animation by using json loader.
it's caching mechanism is changed to cache only static frame, not all frames.

vg_cache supports json loader and make it animation request properly.

This feature has been stabilized enough, it's using in Samsung Galaxy Watch active product,
proved its stability enough.

Depends on {D8940}

Co-authored-by: JunsuChoi <jsuya.choi@samsung.com>

Reviewers: #committers, jsuya

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8941
2019-06-21 17:35:48 +09:00
Marcel Hollerbach 6b8900d4fc efl_input_key: compose -> compose_string
rename this property, as this name was considered better.

ref T7964

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D9141
2019-06-20 17:24:31 +02:00
Marcel Hollerbach 8127f29c46 evas: emit the corrent event here,
it seems we have done here something wrong, EFL_EVENT_FOCUS_IN is meant
to be emitted on objects that RECEIVE focus. This function here however
is called each time the window gets focus, which then might lead to a
object getting focus. However, those are two different things.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9137
2019-06-20 17:14:56 +02:00
Marcel Hollerbach f77bc6957c efl_input_pointer: rename tool to touch_id
tool was not very helpfull, and additionally, the docuemtnation of it
was completly wrong. After searching through the code where tool was
actaully set (efl_ui_win.c) it turned out that it is actaully the "id"
of the pointer when there are multiple touch events.

ref T7963

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D9135
2019-06-20 17:14:54 +02:00
Ali Alzyod 9d2299d030 evas_textblock: more descriptive parameter names
Summary:
Use more descriptive parameter names.

l, r, t, b    it my confused with rgb  value or something similar.

Reviewers: segfaultxavi, woohyun, bowonryu

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9131
2019-06-20 14:08:20 +02:00
Carsten Haitzler 33f5e53af3 evas - events - protect on object deletion while calling callbacks
mouse in/out feeds can call callabcks that can then go delete objects
- ref them all to ensure they stay alive while we use them. this will
fix a segv apbbb saw.
2019-06-20 12:08:14 +01:00
junsu choi c7b1a40b5e ector: Fix precomp layer rendering issue when it has alpha value
Summary:
When the precomp layer(parent layer) has alpha transparency and has more than 1 child layer
and they overlap each other if vg object just propagate the alpha to child layer
it will be applied twice in overlapped area.
Even if the child layer does not have alpha transparency, parent alpha is applied to each child.

Test Plan: N/A

Reviewers: Hermet, smohanty

Reviewed By: Hermet

Subscribers: cedric, #reviewers, kimcinoo, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9072
2019-06-20 16:07:05 +09:00
Carsten Haitzler 4c6f875c35 evas optimization - fix the "start in list middle" case
i missed 1 rare case where we start in the middle of the list and have
to walk to the end. testing didnt show it up. fix. this fixes up that
case in b5ed76ba9f
2019-06-15 09:38:06 +01:00
Carsten Haitzler b5ed76ba9f evas - pointer in get - dont On walk inlist but O1 jump to last
to walk inreverse we need to jump to last first then walk backwards...
what we were doing is calling eina_inlist_last() which  is defined to
walk rather than that using list->last ... this totally got rid of
_evas_event_object_list_raw_in_get() from my perf list ... and i was
wondering how it got there to start with.

this is such an obvious optimization...
2019-06-15 09:19:20 +01:00
junsu choi d7fb6f62b4 efl_canvas_vg_container: Initialize alpha color
Summary:
The vg object (container, shape, ...) follows color of VG node data.
The color of node data is not initialized. it can set the required color for each object.
vg container should be layer with an alpha value of 255.

Test Plan: N/A

Reviewers: Hermet, smohanty

Reviewed By: Hermet

Subscribers: cedric, #reviewers, kimcinoo, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9083
2019-06-13 13:55:29 +09:00
Jaehyun Cho 4e8e1dc280 efl_canvas_animation: fix final_state_keep logic
Previously, final_state_keep did not work correctly with animation
repeat.
e.g. repeat mode is restart and repeat count is 1, then final_state_keep
did not work.

Now, final_state_keep logic has been fixed to work correctly.
2019-06-04 21:57:00 +09:00
Jaehyun Cho 9eb0b28cc7 efl_canvas_animation: fix numerical error on map effect calculation
Previously, for a single canvas animation, map effect was applied in
animator callback without resetting previously applied map effect.
This increased numerical error because each time map effect factors
(e.g. scale, degree) should be calculated based on the current map
coordinates.

To resolve this numerical error, now the previously applied map effect
is reset before applying the current map effect in animator callback.
2019-06-04 21:56:58 +09:00
Mike Blumenkrantz 1b4ce987a7 evas: enable setting any object as a clipper
Summary:
now that various other bugs related to clipping/masking/drawing have
been fixed, this "just works"

@feature

Reviewers: Hermet, cedric

Reviewed By: Hermet, cedric

Subscribers: Hermet, cedric

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8852
2019-05-31 09:19:26 -04:00
Christopher Michael 343698f7ec evas_inline: Clean up evas_object_plane_changed function
Summary:
This file is full of functions called as:
foo(eo_obj, obj);

Most of them can be reduced to foo(obj); and internally get the eo_obj
with obj->object

This would make it impossible to screw up calling them passing an
unrelated pair, and make calling code a little more readable.

ref T7230
Depends on D9050

Reviewers: raster, cedric, zmike

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7230

Differential Revision: https://phab.enlightenment.org/D9051
2019-05-29 15:37:36 -04:00
Christopher Michael 8c5d5ada65 evas_inline: Clean up evas_object_is_on_plane function
Summary:
This file is full of functions called as:
foo(eo_obj, obj);

Most of them can be reduced to foo(obj); and internally get the eo_obj
with obj->object

This would make it impossible to screw up calling them passing an
unrelated pair, and make calling code a little more readable.

ref T7230

Depends on D9049

Reviewers: raster, cedric, zmike

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7230

Differential Revision: https://phab.enlightenment.org/D9050
2019-05-29 15:37:36 -04:00
Christopher Michael 70ea7ba9da evas_inline: Clean up evas_object_is_opaque function
Summary:
This file is full of functions called as:
foo(eo_obj, obj);

Most of them can be reduced to foo(obj); and internally get the eo_obj
with obj->object

This would make it impossible to screw up calling them passing an
unrelated pair, and make calling code a little more readable.

ref T7230

Depends on D9048

Reviewers: raster, cedric, zmike

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7230

Differential Revision: https://phab.enlightenment.org/D9049
2019-05-29 15:37:36 -04:00
Christopher Michael c10a4dcd18 evas_inline: Clean up evas_object_is_proxy_visible function
Summary:
This file is full of functions called as:
foo(eo_obj, obj);

Most of them can be reduced to foo(obj); and internally get the eo_obj
with obj->object

This would make it impossible to screw up calling them passing an
unrelated pair, and make calling code a little more readable.

ref T7230

Depends on D9046

Reviewers: raster, cedric, zmike

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7230

Differential Revision: https://phab.enlightenment.org/D9048
2019-05-29 15:37:36 -04:00
Christopher Michael 94d1b0f3bf evas_inline: Clean up evas_object_is_visible function
Summary:
This file is full of functions called as:
foo(eo_obj, obj);

Most of them can be reduced to foo(obj); and internally get the eo_obj
with obj->object

This would make it impossible to screw up calling them passing an
unrelated pair, and make calling code a little more readable.

ref T7230

Depends on D9045

Reviewers: raster, cedric, zmike

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7230

Differential Revision: https://phab.enlightenment.org/D9046
2019-05-29 15:37:36 -04:00
Christopher Michael ef23de1ea4 evas_inline: Clean up evas_object_was_visible function
Summary:
This file is full of functions called as:
foo(eo_obj, obj);

Most of them can be reduced to foo(obj); and internally get the eo_obj
with obj->object

This would make it impossible to screw up calling them passing an
unrelated pair, and make calling code a little more readable.

ref T7230

Reviewers: raster, cedric, zmike

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7230

Differential Revision: https://phab.enlightenment.org/D9045
2019-05-29 15:37:36 -04:00
Daniel Kolesa 13ddc5dbc1 eolian: rename @warn_unused and its associated API
@warn_unused in syntax is now called @no_unused - this is because
"warning about unused" is a C thing (or rather, an extension to C)
and various languages might want to use stricter behavior for this.

Its associated API does the reverse now - it lets you query whether
being unused is allowed at all. This is to match future behavior
of Eolian (once it supports versioning) that will likely reverse it.

@feature
2019-05-26 17:41:22 +02:00
Daniel Kolesa d0fed247bb eolian: remove param @nonull
This has been deprecated for a while and is not strictly necessary
- as a part of an effort to stabilize Eolian, remove this. Eolian
will eventually gain support for versioning and use a reversed
behavior (i.e. no NULL by default), but the API it wlll use for
that will be very different. Features can always be added, it's
much harder to drop them.

@feature
2019-05-26 17:25:15 +02:00
Xavi Artigas 00851ea53b Fix last missing reference to old efl_orientation headers
This is now efl_gfx_orientable.
We are not building the C++ examples, so I did not pick this up sooner.
Travis does not build C++ bidings at all.
2019-05-24 11:28:09 +02:00
Mike Blumenkrantz bca846d846 evas/render: fix proxy clipping when source_clip is disabled
Summary:
when source_clip is disabled, the clipper used should be the one used by
the proxy object. previously this would never be the case, meaning that
disabling source_clip had no effect

@fix
Depends on D8879

Reviewers: Hermet

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8880
2019-05-23 09:31:42 -04:00
Xavi Artigas 12cab54b9c Rename Efl.Gfx.Orientation -> Efl.Gfx.Image_Orientation
Summary:
This will help disambiguate later on when we rename Efl.Ui.Direction
to Efl.Ui.Layout_Orientation.

Relates to T7919

Test Plan: Everything still builds and passes tests.

Reviewers: zmike

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8934
2019-05-22 14:16:16 -04:00
Xavi Artigas e9eb1c825a Rename Efl.Orient -> Efl.Gfx.Orientation
Summary:
And the Efl.Orientation interface -> Efl.Gfx.Orientable
(with proper c_prefix so it is not too cumbersome to use from C).
Also, turned the theme_rotation_apply() parameter into an int to avoid confusion.

Fixes T7919
Depends on D8912

Test Plan: Everything continues to build and pass tests

Reviewers: zmike, bu5hm4n, cedric, Hermet, Jaehyun_Cho

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7919

Differential Revision: https://phab.enlightenment.org/D8926
2019-05-20 11:52:10 -04:00
Xavi Artigas b24fde6787 Merge Efl.Orient and Efl.Flip into the same enum
Summary:
This is similar to how it is in Evas, and simplifies the Efl.Orientation
interface, which only needs one property now.

Relates to T7919

Test Plan: Everything builds and tests pass. There's only one example of efl_orientation_set() so there's not much to test yet.

Reviewers: zmike, bu5hm4n, cedric, Hermet, Jaehyun_Cho

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7919

Differential Revision: https://phab.enlightenment.org/D8912
2019-05-20 11:51:56 -04:00
Vincent Torri 24e4881efb Evas: remove Evil.h when not needed and use evil_private when needed
Test Plan: compilation

Reviewers: zmike, raster, cedric

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8921
2019-05-20 08:46:02 -04:00
junsu choi 4e574867e8 evas_vg_node: Move change flag value setting
Summary:
_node_change function is only executed
when the flag is none to prevent duplicate calls.
If CHANGE_MATRIX_FLAG is added to the flag in advance,
_node_change function does not operate normally.

Test Plan:
cd ./src/examples/evas
gcc -o evas_vg_simple evas-vg-simple.c `pkg-config --libs --cflags evas ecore ecore-evas eina ector eo efl` -lm
./evas_vg_simple

Reviewers: Hermet, kimcinoo, smohanty

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8895
2019-05-17 10:44:41 +09:00