Commit Graph

3605 Commits

Author SHA1 Message Date
Jaehyun Cho 58dd0bebaa efl_animation: Add alpha animation object 2017-10-12 21:03:49 +09:00
Jaehyun Cho 31ed27f002 efl_animation: Add alpha animation 2017-10-12 21:03:49 +09:00
Jaehyun Cho b4d4e2a2cc efl_animation: Add animation object
Efl.Animation.Object is a class which starts or cancels animation.
Efl.Animation.Object instance is created by Efl.Animation instance.
So Efl.Animation.Object instance contains animation properties from
Efl.animation instance.

Animation properties are set by using Efl.Animation instance and the
animation is started or cancelled by using Efl.Animation.Object.
2017-10-12 21:03:49 +09:00
Jaehyun Cho 5038223b61 efl_animation: Add efl_animation
Efl.Animation is a class which contains basic properties of animation
for Efl.Canvas.Object.
2017-10-12 21:03:49 +09:00
Jean-Philippe Andre ca581e00ba evas: Implement support for different H/V font DPI
This is modifying how a rarely used environment variable that sets the
DPI used for font sizing is parsed. The previous form remains valid, of
course. Note that EFL tends to use "scaling" instead of this DPI. The
font DPI is useful for me to open up a terminology window with almost
the same size as my IDE's code viewer.

Use case:

  export EVAS_FONT_DPI=95x94 terminology

Note:
I still don't get a 1:1 match with Qt's rendering, and in fact
94x95 works better than what 95x94 (which is reported by xdpyinfo).
Interesting though :)

@feature
2017-10-12 15:25:05 +09:00
Chris Michael 7d36ef88bc evas: Compile out unused functions
These timestamp functions are not currently being called, perhaps they
were intended for something later?, but for now just #if 0 them out as
they are not used

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2017-10-11 09:17:35 -04:00
Jean-Philippe Andre e021e25c85 evas: Override del() for evas objects
This makes EAPI evas_object_del() and EO API efl_del() work the same on
evas objects, i.e. a del() implies an immediate call to hide() and mark
the object as "delete_me".

If the refcount remains > 0 the object won't be actually deleted, thus
EFL_EVENT_DEL won't be triggered. I think it would probably be a good
idea to have a new event "del,request", to signal reference owners that
this object "wants" to die.

Ping @raster @zmike
2017-10-10 18:44:35 +09:00
Subodh Kumar a8e7cf74b1 evas: there is no effect of variable assignment while clean up.
Summary:
There is no effect of assingning a variable while clean up.
@fix

Reviewers: raster, cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5272

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2017-10-09 16:41:23 -07:00
Subodh Kumar 8d880d7f41 evas: there is no effect of variable assignment outside the function.
Summary:
Variable assigned is not used anywhere else, making it unused.
@fix

Test Plan: Na

Reviewers: raster, cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5263

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-10-06 09:52:45 -07:00
Godly T.Alias 10f26f143a evas: fix for sscanf use with save flags input.
Summary:
As 'flags' can be supplied by application, in case application is supplying
a big string(error case), it can cause crash in some version of glibc.

Setting maximum possible input (0x64) length as width specifier

Fix for static code analyzer warnings
- scanf without field width limits can crash with huge input data on some versions of libc

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

Test Plan: Run SonarQube

Reviewers: cedric, raster, Princekrdubey, rajeshps

Reviewed By: cedric

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D5266

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-10-06 09:49:03 -07:00
Cedric BAIL 08deba98f8 evas: make sure we always open the file and look at its header before trying to load data. 2017-10-05 16:02:47 -07:00
Cedric BAIL ee3f4e0529 evas: remove unused function evas_cache_image_request. 2017-10-05 09:42:36 -07:00
Cedric BAIL 90e1ca7154 evas: remove unused function evas_cache_engine_image_request. 2017-10-05 09:41:41 -07:00
Cedric BAIL 7672d1050e evas: remove unused function evas_common_load_image_from_file. 2017-10-05 09:37:07 -07:00
Cedric Bail 867d826395 evas: remove image_load from the engine. 2017-10-04 21:48:26 -07:00
Cedric Bail a6dcaa0f9a evas: remove use of engine image_load from Evas.Canvas3D.Texture. 2017-10-04 21:32:22 -07:00
Cedric Bail c8c4572d70 evas: remove duplicated code and rely on Efl.File { get; set; }
We can almost remove image_load from the engine backend after this patch.
One little bit left in Evas_3D.
2017-10-04 21:01:35 -07:00
Marcel Hollerbach 935722aac1 evas_focus: skip focus set if the focus state is the same 2017-09-30 20:29:07 +02:00
Youngbok Shin 26b58098bc evas font: check returned value of FcPatternGet function
Summary:
Evas should add font when only FcPatternGet function gives matched result.
@fix

Test Plan: N/A

Reviewers: raster, cedric, herdsman, jpeg

Differential Revision: https://phab.enlightenment.org/D5236
2017-09-29 15:16:21 +09:00
Daniel Hirt e34efbed96 Canvas text: use EINA_UNUSED for unused variables
Nothing special here. No need to for the "(void) eo_obj".
2017-09-28 19:32:02 +03:00
Daniel Hirt 69d0646b33 Efl text: add Efl.Text.Markup interface
Adds basic markup operations for text objects, and implements it in
Efl.Canvas.Text.

Also, this adds the Efl.Text.Markup_Util class.
This utility class allows basic text-markup conversions.

@feature
2017-09-28 19:32:02 +03:00
Jean-Philippe Andre 76ab8e3f54 efl: Remove @owned tag from pack/content APIs
Refer to the previous commits for more context.

When an evas object is given to a container, be it with a variant of
efl_pack() or efl_content_set(), its "ownership" is given to the new
parent container. But ownership here means that the new container may
delete the child when it sees fit (i.e. when the container itself dies,
for instance). This does not mean that a reference was passed from the
calling context to the container. The actual EO owner of the child is
always the canvas or another canvas object, even if it the object is
unpacked.

Note: This means that invalid calls to efl_pack or efl_content_set will
not automatically delete the child object. This is the same as legacy,
and results in floating objects. Just check the return value! :)

Hopefully this is correct for bindings.
2017-09-28 17:29:03 +09:00
Jean-Philippe Andre f7a7a29cc0 evas: Give a parent to duplicated event objects
This comes back to an earlier situation where the fake event objects
created by efl_input_dup() had a parent (it should be the evas or maybe
the window). But that led to issues as efl_unref() would print error
messages. Using efl_allow_parent_unref_set() we hide the error message,
because in this situation we want the caller to use efl_unref() and not
efl_del() (eg. think of bindings...).

See d3436af616
See 6bed255fc4
See 96d94e0076 <-- main commit
2017-09-28 16:45:45 +09:00
Carsten Haitzler e095562ea1 evas font loading - fix possible divide by 0 when font size is 0
fix coverity CID 1381446
2017-09-28 15:28:00 +09:00
Jean-Philippe Andre 96d94e0076 evas: Fix dangling references with input devices
This solves issues with efl_input_dup() which didn't properly give a
reference to the caller, resulting in dangling eo ids.

Note: This may trigger leaks (instead of invalid refs), but this now
actually reflects the meaning of @owned. This should work with bindings
and C API users should know to call efl_unref().

This patch is the reason for the previous improvements on eo_debug.

@fix
2017-09-28 12:30:36 +09:00
jiin.moon 98147ce097 evas : Improve the performance by reusing map surface
Summary:
If object just has update of map point without other changes included child,
the map surface can be reused.

Reviewers: jpeg, cedric

Differential Revision: https://phab.enlightenment.org/D5181
2017-09-28 12:30:36 +09:00
Youngbok Shin 42ac2136b0 evas textblock: use main font's ascent/descent as minimum value
Summary:
The patch will adjust ascent/descent with considering main font's ascent/descent
as minimum value. Actually, this patch re-apply D5217 with resolving linegap issue
on the _layout_format_ascent_descent_adjust() function.
@fix

Test Plan: Put a text which will load smaller font. And put a text which will load primary font.

Reviewers: raster, cedric, herdsman, jpeg

Differential Revision: https://phab.enlightenment.org/D5227
2017-09-26 14:33:11 +03:00
Jean-Philippe Andre 3d2551175d evas: Fix shutdown of async cmd cache
The incomplete reset (array to NULL but max not reset) triggers errors
in evas_thread_queue_append() where eina_inarray_grow() returns NULL.

This shows up in:
   CK_FORK=no elm_suite

@fix
2017-09-26 17:58:07 +09:00
Jean-Philippe Andre 8557fe818f input: Move pointer props to Canvas
efl_input_pointer_position is defined by two classes... bad!

Fixes T6066
2017-09-26 17:58:07 +09:00
Daniel Hirt bfa7d2a3b2 Evas textblock: fix ascent/descent calc
This is a follow-up to 4d4401f3a6.
The format line adjustment (e.g. linegap) should calculate the current
item's ascent/descent, and then update c->ascent/c->descent.
Otherwise we accumulate calculations like linegap values

ref D5217
2017-09-26 10:52:38 +03:00
Youngbok Shin 4d4401f3a6 evas textblock: use primary font's size as minimum size of a line
Summary:
Textblock uses ascent, descent from primary font when there is no text.
If a text is set which need other font, Textblock uses ascent, descent from
actually loaded font. If loaded font has smaller size, text cursor and text
looks jerky in elm_entry. At least, primary font's size should be respected
as minimum size of a line for avoiding this issue.
In addition, the patch will allow negative line gap values.
@fix

Test Plan:
Put your hamburger(🍔) in Ecrire. And put an english character.
(Put a text which will load smaller font. And put a text which will load primary font.)

Reviewers: raster, cedric, herdsman, jpeg, woohyun

Reviewed By: raster

Differential Revision: https://phab.enlightenment.org/D5217
2017-09-26 11:31:31 +09:00
Youngbok Shin 1750410650 evas: Add scale feature for embedded bitmap fonts.
Summary:
When evas selects a strike of embedded bitmap font,
calculate ratio and use it for scaling embedded bitmap.
@feature

Reviewers: jpeg, tasn, woohyun, raster, herdsman

Reviewed By: raster

Subscribers: charlesmilette, Francesco149, cedric

Differential Revision: https://phab.enlightenment.org/D2713
2017-09-26 11:31:31 +09:00
Daniel Hirt 4f77eca4e1 Canvas text: don't generate legacy for new api
This is part of the new Canvas.Text.
2017-09-25 12:51:49 +03:00
Daniel Hirt b7b5d08929 Canvas text: use eina_value_set and not eina_value_pset
CID 1381327
2017-09-25 12:51:49 +03:00
Daniel Kolesa f36e5bd543 eolian: add mstring
This is a new type representing a mutable string (no const).
Regular strings cannot be made mutable with @owned because
they might be hidden behind typedefs.
2017-09-22 17:10:42 +02:00
Daniel Kolesa fdd27cadf8 eo: make more freefuncs implicit 2017-09-22 16:17:19 +02:00
Vincent Torri 0cdd501246 EFL For WIN32: Replace HAVE_EVIL define with _WIN32 2017-09-22 05:06:10 -05:00
Jean-Philippe Andre 28b387821d elm: Split off text and content for efl_part
This is VERY tricky.
For legacy, just create an internal class that has both. It's easier
this way. For parts that are handled by Layout directly, we know from
Edje which type to return.

For EO objects we should know from the part name which kind of part we
are dealing with:
 - text (overridden by the widget)
 - content (overridden by the widget)
 - special (new efl_part based functions)
 - generic (handled by Layout)

Note: Efl.Ui.Slider was handling "span size" on ALL parts. That's bad...
This is now limited to "span" only.
2017-09-21 12:27:34 +09:00
Daniel Hirt b63c3620df Canvas text async: add async layout functionality
This adds the 'async_layout' method.
The 'async layout' method is similar to 'size_formatted_get', but done
outside of the mainloop. When a call is made to this method, a thread
is created (after some preparation like updating the logical text
items), and the visual layout is offloaded to that thread. The result
is returned as Eina.Future.

The mainloop is blocked for operations that manipulate the object, if a
thread has already been created but hasn't complete its work.
Consecutive calls for async layout for the same object are not handled
simultaneously. Each time the threads has complete its work, the next
(if exists) layout will be dispatched.

@feature
2017-09-20 14:50:09 +03:00
Marcel Hollerbach 525b6bb1d9 evas_object_main: fallback to other usage instead of returning NULL
Even if a object is on deleting or doesnt have a layer, it still can be
found in a higher hirachy.
2017-09-19 10:34:22 +02:00
Hosang Kim 425c98289d evas_events: add checking state of point
Summary:
When multi down or multi move occur, state of touch point changes to EVAS_TOUCH_POINT_STILL.
So I add condition, "state == EVAS_TOUCH_POINT_STILL"

Reviewers: jypark, woohyun, cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5157
2017-09-19 17:22:48 +09:00
jiin.moon 4f8fe4889f evas_event: Fix missing case when check the event area
Summary:
If the object is outside the parent geometry because of map,
this object would be ignored in determining object is in the event area.

Please refer to below case
1) There are some button in the box object
2) A button has map with 90 degree.
   It would be placed outside the box geometry
3) If you press the button part outside the box,
   the button event does not work.

Test Plan: sample code

Reviewers: jpeg, cedric

Differential Revision: https://phab.enlightenment.org/D5180
2017-09-19 16:59:16 +09:00
Bryce Harrington d94a4d8d89 evas: Document Textgrid objects API
Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5179
2017-09-19 16:55:47 +09:00
Bryce Harrington c955625c44 evas: Textgrid doxygen grammar/spelling cleanup
Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5177
2017-09-19 16:55:37 +09:00
Bryce Harrington 007b0a6659 evas: Eo Textgrid doc grammar cleanup
Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5178
2017-09-19 16:55:25 +09:00
Jean-Philippe Andre 5b2ffb6bde evas: Fix invalid call to intercept
This fixes scrolling in rage.

Lessons learnt:
 - Do not trust raster's bisecting skills ^^,
 - Do not blame GCC until you're 100% positive about the exact code
   triggering an issue,
 - va_arg is unsafe, and can lead to crazy issues like this one,
 - va_arg passes (int x, int y) differently from Eina_Size2D sz, and
   optimization flags may also affect how that's done, or at least what
   kind of garbage data is used.
2017-09-19 16:35:28 +09:00
Jean-Philippe Andre 1f447f3a87 evas: Remove remnants from EO 1 internal API 2017-09-19 11:59:10 +09:00
Jean-Philippe Andre 0a2282f7d7 polygon: Use Eina.Position2D for point_add 2017-09-19 10:51:48 +09:00
Jean-Philippe Andre 3617053547 win: Use Eina.Size2D for pointer position
Also rename the function for more consistency.
2017-09-19 10:51:48 +09:00
Jean-Philippe Andre 8bf06f95fe evas: Use Eina.Rect for load_region 2017-09-19 10:51:48 +09:00
Jean-Philippe Andre a3250f975a efl: Use Eina.Size2D for image load size 2017-09-19 10:51:48 +09:00
Jean-Philippe Andre 89a7d9ea8e efl: Use Eina.Size2D for image size 2017-09-19 10:51:48 +09:00
Jean-Philippe Andre 986e5e8827 efl: Add precise_position for input events
The previous commit removed useless delta
2017-09-19 10:51:48 +09:00
Jean-Philippe Andre e28aba0542 efl: Use Eina.Position2D for input events 2017-09-19 10:51:48 +09:00
Jean-Philippe Andre b19ee757e5 efl: Use Eina.Size2D in Gfx.View 2017-09-19 10:51:48 +09:00
Jean-Philippe Andre 2df8ad36b4 evas: Use Eina.Slice on the stack (gfx.buffer) 2017-09-19 10:51:48 +09:00
Jean-Philippe Andre 1f242afdef evas: Use Eina.Size2D for gfx.buffer
For consistency.
2017-09-19 10:51:48 +09:00
Jean-Philippe Andre bfd9487b94 efl: Use Eina.Size2D for Efl.Canvas.max_image_size
Rarely use
2017-09-19 10:51:48 +09:00
Jean-Philippe Andre d8eea084fb efl: Use Eina.Size2D for size hint aspect 2017-09-18 16:50:58 +09:00
Jean-Philippe Andre a72f3ec64e efl: Use Eina.Size2D for size hint combined min
For this patch I decided to add a pseudo legacy wrapper as the function
is called in a very large number of places. Fixing all those calls to
use the size2d form is a lot of work and a greater risk of b0rking
something.
2017-09-18 16:33:33 +09:00
Jean-Philippe Andre 7d2b4b6916 efl: Use Eina.Size2D for size hint restricted min
This is the "internal" or "intrinsic" minimum size, to be set by EFL and
not by applications.
2017-09-18 14:57:52 +09:00
Jean-Philippe Andre 3bff7363b5 efl: Use Eina.Size2D for size hint min 2017-09-18 14:42:52 +09:00
Jean-Philippe Andre d24dcb3c24 efl: Use Eina.Size2D for size hint max 2017-09-18 14:20:03 +09:00
Jean-Philippe Andre 4c634ed78e efl: Use Eina.Size2D for Efl.Gfx.size
Big patch as a lot of things call or reimplement size_set. Hopefully I
got it right... fingers crossed.
2017-09-18 13:34:50 +09:00
Jean-Philippe Andre 8fb194d969 efl: Use Eina.Position2D for Efl.Gfx.position
Note: This is a little bit more cumbersome in some places but in most
it's more convenient than (x,y).
2017-09-18 13:22:54 +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
Daniel Kolesa a8b8b7efde eo files: first batch of @owned conversions 2017-09-15 16:44:26 +02:00
Carsten Haitzler 0f08ee686e evas box - fix longstanding bug where min size is miscalculated
this has affected edje for... like... ever. min size of boxes just
doesnt work. because evas box just doesnt do it right. this has led to
nasty things where edje box is just not usable if you use weight of 0.
btw weight 0 means "stay at min size no matter what even if we expand
the box to be bigger" in edje... which is totally broken and i can't
fix that without potentially breaking even more stuff... but let's
see. i've been using this for several days now and ... i can't find
breakage... so this should fix up SOME issues in edje.

@fix
2017-09-15 07:35:34 +09:00
Jean-Philippe Andre 89733b22f6 efl_gfx_fill: Use Eina.Rectangle for fill (EO) 2017-09-13 18:09:19 +09:00
Jean-Philippe Andre 21c72948db efl_gfx: Remove color_part API (EO)
This API was introduced in commit:
  cd3f8db506

This was since limited to EO only APIs, and totally underexploited.
After that, efl_part() was introduced, which defines how all part APIs
should be designed.

Nothing uses this API, efl_vg had an implementation that provides no
extra value over the other APIs.
2017-09-13 18:03:34 +09:00
Jean-Philippe Andre 13da5e980e efl_gfx: Use Eina.Rectangle for geometry (EO)
This saves a few lines already (without even having the proper helpers
for stack rectangles).
2017-09-13 18:03:34 +09:00
Jean-Philippe Andre 0c46fc7103 evas: Use Eina_Rectangle internally
Instead of Evas_Coord_Rectangle which is exactly the same thing but with
a different name and typedefs.
2017-09-13 18:03:34 +09:00
Jean-Philippe Andre 3c386e5fdf evas: Fix build break
Ooops. Classic.
See 9ed6838f17
2017-09-13 13:41:23 +09:00
Jean-Philippe Andre 99c765d0d2 evas: Non functional changes to event grabber
This changes the CRI logs and the variable names.

I still think this API needs some fixing in order to not abuse the
smart object API. This should be done before it's too late (i.e. E is
released and depends on it).
2017-09-13 11:29:31 +09:00
Jean-Philippe Andre bb9d8bdbaa evas: Add group_member_is to smart objects
This is a new function that indicates whether an object is a child of a
parent or not. Dead simple, as this simply compares if parent == this.
Note that this check was impossible to do with the event grabber.

Also, rename group_children_iterate to group_members_iterate for
consistency with the other group_member functions.

@feature
2017-09-13 11:01:29 +09:00
Jean-Philippe Andre d971ca2fb8 emotion: Fix refcounts related to eio use
Inside emotion, if Eio is compiled, some asynchronous functions are used
and a refcounted struct was used to ensure safety of the code.
Unfortunately the logic didn't make much sense as emotion's private data
is used. The refcount becomes useless, the lifecycle of the data being
bound to the object itself.

Note that an actual crash is almost impossible because:
 - eio is actually quite fast
 - evas objects are kept alive for 2 frames
 - eina_freeq is used to keep eo objects' data alive for some more time

But this in theory fixes the events, as they were sent on the wrong
object. "obj" is the image object, "smartobj" was the emotion object.
This is fixed with a weak ref.

I don't think it is necessary to backport this.
2017-09-13 09:57:05 +09:00
Jean-Philippe Andre 820b8a0e6f evas: Fix evas grid
It's a complete mess mixing legacy and EO in a really bad way.
2017-09-13 09:57:05 +09:00
Jean-Philippe Andre 7e2382853e evas: Add EO API to get clipper in smart object
It's not exposing anything that wasn't already accessible before (you
could just add a member and get its clip, for instance).

This will be used by Edje Object.

This is a minor
@feature
2017-09-13 09:57:05 +09:00
Jean-Philippe Andre 7ef714924a evas: Fix crash with smart objects
This is due to the previous patches.
2017-09-13 09:57:05 +09:00
Jean-Philippe Andre 9ed6838f17 evas: Remove class Efl.Canvas.Group.Clipped
The functionality is now merged inside the core Group class, which will
allow us to clean up its API.
2017-09-13 09:57:05 +09:00
Jean-Philippe Andre 8572cd5def evas/edje/elm: Remove all uses of clipped groups
This removes the uses of the *EO* class, obviously not the use of the
clipped smart objects.
2017-09-13 09:57:05 +09:00
Jean-Philippe Andre 71e122424e evas: Move all overrides to std smart object
- color_set
- visible_set
- position_set
- no_render_set
- member_add, member_del
- group_add, group_del
- clip_set

Notes:
 - Widget overrides color_set without calling super() which means that
   color_get() returns a different value. Also any subsequent child
   object add will not inherit the color.
 - Smart clipped objects also don't call super.

This patch changes that, but only for smart clipped objects created
through EO. This shouldn't have any side effect.
2017-09-13 09:57:05 +09:00
Jean-Philippe Andre 67798ca863 evas: Remove group_add from clipped smart object
Moved from clipped to the general smart object class.
2017-09-13 09:57:05 +09:00
Jean-Philippe Andre e380dae4bc evas: Remove group_del override from smart clipped 2017-09-13 09:57:05 +09:00
Jean-Philippe Andre 230b234891 evas: Remove private data for clipped object
Another step towards merging both classes of smart objects.
2017-09-13 09:57:05 +09:00
Jean-Philippe Andre f5a56789e0 evas: Add internal API to make smart obj (un)clipped
Introduction to the problem:
 - Efl.Canvas.Group has a method member_add() to add sub objects.
 - Efl.Canvas.Group (simple smart object) does NOT actually delete the
   objects on deletion. But:
 - Efl.Canvas.Group.Clipped is a direct subclass and WILL delete the sub
   objects on deletion.

Semantically, all smart objects (at least in EO and Elementary) will own
and delete sub objects automatically. Some exceptions are:
 - Edje object (smart clipped) does not delete swallowed objects.
   Edje object is a "clipped" smart object but it pops out all swallowed
   children before getting deleted.
 - Evas box/table/grid also pop out their children before deletion.
   Those classes are all legacy & internal only.
 - Elm.Widget will "manually" delete all its sub objects at deletion, as
   it inherits from Efl.Canvas.Group but basically takes full ownership
   of the sub objects. Note that member_add shouldn't be used on a
   widget, the widgets do it themselves.

Also, smart clipped objects are much more convenient to use as they will
handle some things for you: color, visibility, moving and ownership.

So, the API member_add needs to be marked as own(). But right now
Efl.Canvas.Group does not own. Thus, here's the plan:
 - Mark clipped objects as such with an internal API
 - Merge clipped smart object features directly inside the standard
   smart object.
 - Get rid of Efl.Canvas.Group.Clipped entirely and watch all hell break
   loose.

Ref T5301
2017-09-13 09:57:05 +09:00
Jean-Philippe Andre c5a9e49a9b evas: Add some EO safety to legacy EAPI 2017-09-13 09:57:05 +09:00
Cedric BAIL 4cfc8f12fc evas: actually output might not be initialized until later. 2017-09-11 11:32:44 -07:00
Youngbok Shin 8dbbf5c8b7 evas textblock: support ZWJ, ZWNJ, LRM, RLM in escaped form
Summary:
The patch supports the following escaped string from Evas Textblock.
These unicodes are frequently used.
ZWNJ U+200C - &zwnj;
ZWJ  U+200D - &zwj;
LRM  U+200E - &lrm;
RLM  U+200F - &rlm;
@feature

Test Plan: N/A

Reviewers: raster, cedric, herdsman, jpeg, woohyun

Differential Revision: https://phab.enlightenment.org/D5173
2017-09-11 08:53:04 +03:00
Youngbok Shin 7a1075500a evas: don't search other fonts only for INHERITED script unicodes
Summary:
INHERITED script unicodes are only meaningful when it comes
after the previous unicode from same font.
Even if there is no glyph for the INHERTED script unicode from current font,
don't search other font for loading the unicdoe as first unicode
of next item. It will be meaningless.
@fix

Test Plan:
Check the following Emoji sequence with an emoji font
which does not have variation selector glyphs.
{ 0x1F3F3, 0xFE0F, 0x200D, 0x1F308 }

Reviewers: raster, cedric, herdsman, jpeg, woohyun

Reviewed By: herdsman

Differential Revision: https://phab.enlightenment.org/D5156
2017-09-11 08:52:03 +03:00
Sungtaek Hong 89f92afccc Evas filters: remove needless check for negative case.
Summary:
Becuse ox is set to 0,
it cannot be negative, so negative check will be needless.

Reviewers: jpeg

Reviewed By: jpeg

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5155
2017-09-08 09:50:48 +09:00
Daniel Hirt de3062da89 Canvas text: emit missing events during text changes
Some text changes were not picked up by the Ui.Text widget, so no size
evaluation was triggered.
2017-09-07 16:54:38 +03:00
Jaehyun Cho 618c123341 evas_language_utils: Fix build error without NLS 2017-09-06 11:19:28 +09:00
Jean-Philippe Andre c0514d948a filters: Safety++
This is an attempt at fixing crashes in empc.
Test scenario:
  ELM_ACCEL="" elementary_test -to "Gfx Filters"
  And mouse scroll like crazy in the spinner.

@fix
2017-09-06 09:12:28 +09:00
Marcel Hollerbach e1738c4f1e Revert "evas_thread: only join the thread if the thread is still alive"
This reverts commit e41d46c635.

This seems to be wrong
2017-09-05 14:36:17 +02:00
Marcel Hollerbach e41d46c635 evas_thread: only join the thread if the thread is still alive
otherwise we might join a invalid thread id, that could lead to a
deadlock. Lets not do that.

ref T5245

@fix
2017-09-05 14:15:40 +02:00
Youngbok Shin bf1c0e2657 evas: proceed glyph iterator to handle next index properly
Summary:
When harfbuzz is enabled, _content_create_ot() function will be used
for shaping. If evas_common_font_int_cache_glyph_get() failed in some reason,
it never proceed gl_itr until the end.
It can cause weird rendering result. Because, all of gl_itr after the failure
can't have proper x_bear, y_bear and width.
@fix

Test Plan: N/A

Reviewers: raster, cedric, herdsman, jpeg

Differential Revision: https://phab.enlightenment.org/D5154
2017-09-04 10:18:05 +03:00
Mike Blumenkrantz 610f514176 evas: fix event grabber child stacking
broken in 0516cdc0f9

@fix
2017-09-01 13:42:18 -04:00
Mike Blumenkrantz 5a9df96d9c evas: handle object names with a list hash
a canvas can have multiple objects with the same name. assuming that name:obj
is a 1:1 ratio means that name-finding functions are likely to return invalid
objects

@fix
2017-09-01 13:42:18 -04:00
Stefan Schmidt 7aa42c4e75 docs: elm/evas: document some missing return values
With this patch we finally reached 100% doc coverage in EO files again.
It would be nice to keep it like this.
2017-08-31 17:37:52 +02:00
Stefan Schmidt 1a518e85cf docs: efl_canvas_object: document last missing part 2017-08-31 17:37:22 +02:00
Stefan Schmidt 2866839754 docs: even give the external types some documentation 2017-08-31 17:29:31 +02:00
Stefan Schmidt 9c3ace8c6d docs: evas_canvas_text: document missing events 2017-08-31 11:25:13 +02:00
Youngbok Shin 2b9a2692e8 evas font: do floating point division for calculating more accurately
Summary:
Assigning a result of integral division to a double type variable is
not useful for next division calculation. For more accurate calculation,
it needs to be casted to double before doing division.
It does not fix some bugs. It was reported by a code quality advisor.

Test Plan: N/A

Reviewers: raster, cedric, jpeg, herdsman, eunue

Reviewed By: cedric

Differential Revision: https://phab.enlightenment.org/D5069

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2017-08-30 12:06:01 -07:00
Cedric Bail 4406d7098c evas: we always do use the common backend, so always init. 2017-08-30 10:01:17 -07:00
Bryce Harrington dcc2654673 evas: make the high level documentation more concise
Summary:
This is a very informative document but is much longer than it needs to
be.  Tighten it up by condensing redundant information and expressing
the ideas more efficiently.  Focus more on Evas and what it is than what
it isn't.  Avoid explaining general graphics concepts like immediate
vs. retained, replacing with synopses.  Switch from 2nd person to 3rd
person (i.e. don't say You/Your) to be less awkward, since we don't
really know why the reader is reading it.  Simplify the compilation
directions; these are pretty standard, and most people won't be manually
linking to Evas anyway.

While this shortens the document considerably, it retains the
important key points, and makes it far more readable.

Reviewers: cedric

Reviewed By: cedric

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D5130

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-08-29 16:23:34 -07:00
Cedric BAIL 84cfde45f6 evas: fix color set on Efl.Canvas.Group. 2017-08-29 16:01:41 -07:00
Jean Guyomarc'h 9e3a344454 evas: fix invalid return of evas_textgrid_cellrow_get()
evas_textgrid_cellrow_get() is supposed to return NULL if the row index
fed to the function is outside of the textgrid's range. It was instead
returning garbage pointer.

@fix
2017-08-29 20:56:31 +02:00
Daniel Hirt 048dcc3263 Canvas text: fix non-dirty paragraph width calculation
Follow-up fix for 1624417d91.
Changed for a max comparison, rather than just assigning the line's
width.
Also, added a test case.

Fixes T5939

@fix
2017-08-29 17:07:15 +03:00
Jean-Philippe Andre 9a816931a2 evas: Fix automatic visible set (EO)
This fixes a case where an object is hidden before the first render.
When called from elementary. the visible intercept code would be called
before evas object's visible_set, bypassing the line setting visible_set
to true.

As a consequence the object would be visible even when explicitly
requested as hidden.

Thanks @JackDanielZ for the report!
2017-08-29 10:55:56 +09:00
Jean-Philippe Andre d920b36ab4 evas: Fix a few shadow warnings 2017-08-29 10:43:33 +09:00
Mike Blumenkrantz e436947ff0 evas image cache: notify preload for image objects without explicit callbacks
non-gl images do not have an explicit callback and so the preload inform callback
must be triggered manually for all cases

fix T5200
2017-08-25 14:48:12 -04:00
Mike Blumenkrantz e4ba40c5bc evas image cache: break out preload complete notification code into function
no functional changes
2017-08-25 14:48:12 -04:00
Cedric BAIL 8286a56279 evas: enable rendering of multiple output. 2017-08-25 10:55:15 -07:00
Cedric BAIL 4b1505c294 evas: no more ENDT. 2017-08-25 10:55:06 -07:00
Cedric BAIL 7fc0ebee37 evas: move updates to be per output. 2017-08-25 10:55:02 -07:00
Cedric BAIL e7527e06d6 evas: decorrelate canvas size from output size. 2017-08-25 10:54:59 -07:00
Cedric BAIL cce4dcc58e evas: remove dead code to improve readability. 2017-08-25 10:54:52 -07:00
Cedric BAIL 545c1a70f4 evas: make Evas_GL work with multi output. 2017-08-25 10:54:19 -07:00
Cedric BAIL 7f8bbe4972 evas: reorder rendering phase to group output related operation. 2017-08-25 10:52:52 -07:00
Cedric BAIL 440238a899 evas: Evas_Canvas3D rendering logic need a complete overhaul.
For now, do not use Evas_Canvas3D in multi output context, it won't work.
The update code for Evas_Canvas3D_Node might trigger rendering logic, which
is opposite to what the scene graph logic should do. It require to much
reshuffle around to handle that case at the moment. So I am just adding a
warning.
2017-08-25 10:52:48 -07:00
Cedric BAIL f354463dc1 evas: propagate output in evas_render_updates_internal_loop instead of using ENDT. 2017-08-25 10:52:42 -07:00
Cedric BAIL 79ed7a0cc2 evas: enable handling multi output in evas_render_mapped. 2017-08-25 10:52:38 -07:00
Cedric BAIL 750b9d065f evas: propagate output to evas_render_mask_subrender and don't use ENDT there. 2017-08-25 10:52:33 -07:00
Cedric BAIL a5b4defdd5 evas: use output instead of default one during rendering of proxy. 2017-08-25 10:52:29 -07:00
Cedric BAIL 9ba662bd63 evas: destroy seats and inputs before the display disapear. 2017-08-25 10:52:22 -07:00
Cedric BAIL dcfebcd2d9 evas: no more use of ENDT outside of evas_render. 2017-08-25 10:52:18 -07:00
Cedric BAIL e682f64193 evas: make vector graphic support multi output. 2017-08-25 10:52:14 -07:00
Cedric BAIL a0c58276c3 evas: do not use default output or any other during render pre. 2017-08-25 10:52:10 -07:00
Cedric BAIL 68b846c1f4 evas: remove unecessary use of output in filter code. 2017-08-25 10:52:07 -07:00
Cedric BAIL fc1b7f7835 evas: make filter handle multi output. 2017-08-25 10:51:53 -07:00
Cedric BAIL f3f6a7e535 evas: make Evas_GL start to use engine and output separately. 2017-08-25 10:51:47 -07:00
Cedric BAIL 46767819fd evas: find a best possible output to manage an object to get pixels from.
The code shouldn't really need an output for getting the pixels, it just
happen that some of the backend function really need one to get a GL context.
2017-08-25 10:51:40 -07:00
Cedric BAIL aebeed4454 evas: remove dead code that won't be easy to bring back to life. 2017-08-25 10:51:36 -07:00
Cedric BAIL 3da75d74e3 evas: all context function use already ENC. 2017-08-25 10:51:31 -07:00
Cedric BAIL e9cd3e4c7c evas: remove image_content_hint_get from backend as it is unused. 2017-08-25 10:51:27 -07:00
Cedric BAIL ef55155e0e evas: switch font backend function to rely on engine instead of output. 2017-08-25 10:51:24 -07:00
Cedric BAIL 7bcf483d6f evas: handle multiple output for plane assignment. 2017-08-25 10:51:20 -07:00
Cedric BAIL fc603df8d1 evas: remove image_surface_noscale_region_get from engine backend as it is unused. 2017-08-25 10:51:13 -07:00
Cedric BAIL 1d57cb2627 evas: move all image object related function to use the engine instead of the output. 2017-08-25 10:51:10 -07:00
Cedric BAIL 14f1a0bde7 evas: forgotten convertion from output to engine. 2017-08-25 10:51:05 -07:00
Cedric BAIL 2fb6aa87fe evas: switch all image animation engine related function to use ENC instead of an output. 2017-08-25 10:50:40 -07:00
Cedric BAIL 28397e7206 evas: differentiate engine from output. 2017-08-25 10:49:53 -07:00
Cedric BAIL 76a7198e0d evas: fix order in function of engine and output use for text operation. 2017-08-25 10:49:49 -07:00
Cedric BAIL d179a5c2a9 efl: remove PS3 backend.
This backend has received no patch and maintenance from anyone who could
actually test it over the last few years. After talking with KaKaRoTo it
is best to remove it. If anyone want to take over its maintenance, you
are welcome to revert this patch.
2017-08-25 10:48:42 -07:00
Cedric BAIL 29cde0ee81 evas: make the info size a parameter of the function to make it safer to roll in. 2017-08-25 10:48:20 -07:00
Cedric BAIL 22beae8b73 evas: refactor the creation of the output info logic in libevas. 2017-08-25 10:48:17 -07:00
Cedric BAIL 46e1df839b evas: factorize call to info and info_free. 2017-08-25 10:48:13 -07:00
Cedric BAIL 1e2bbf8fea evas: all this function (info, setup and update) are really output related. 2017-08-25 10:48:09 -07:00
Cedric BAIL 8017fab100 evas: nobody actually call the tile size set API. 2017-08-25 10:48:05 -07:00