Commit Graph

3515 Commits

Author SHA1 Message Date
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 - ‌
ZWJ  U+200D - ‍
LRM  U+200E - ‎
RLM  U+200F - ‏
@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