Commit Graph

4673 Commits

Author SHA1 Message Date
Jaehyun Cho 40b73758a0 efl_canvas_animation: rename Animation_XXX to XXX_Animation
Summary:
In animation classes, "Animation" is not used as a namespace but it is
used as a prefix in the class names.
e.g. Efl.Canvas.Animation_Alpha

However, those classes are basically animation classes with different
features. Therefore, "Animation" should be used as a postfix in the
class names.
e.g. Efl.Canvas.Animation_Alpha -> Efl.Canvas.Alpha_Animation

However, for the easier usage of C APIs, c_prefix of animation classes
are remained to be "efl_animation_xxx".

Reviewers: segfaultxavi, bu5hm4n, zmike, Hermet, jsuya

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11108
2020-01-20 12:53:10 +09:00
Ali Alzyod ad63375199 efl.text.cursor: movement types rename
Summary: replace prev with previous, replace char with character

Reviewers: woohyun, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8567

Differential Revision: https://phab.enlightenment.org/D11095
2020-01-20 10:07:40 +09:00
Carsten Haitzler 7eeeb3c6f9 evas - fix access-after-free number 2
follow on from 3aa250e17f and T8534
looking into more possible problems and fixes

@fix
2020-01-18 12:25:08 +00:00
Carsten Haitzler 3aa250e17f evas - fix access-after-free where during destroy hash item not cleared
leave it in the hash unfreed as it will be freed when the hash is soon
after durint destruction.

@fix
2020-01-18 00:14:58 +00:00
Xavi Artigas a0523ebba5 docs: Typo in Efl.Text_Cursor 2020-01-17 12:56:51 +01:00
Yeongjong Lee 478863862a efl_text_cursor: correct class description name of simple class
Summary:
Name of `Efl_Class_Description` should be eo-style class name.
Please check there is no segmentation fault on Test code below.

Thanks to @woohyun for reporting and test case.

Test Plan:
```
//mcs test.cs -out:test.exe `pkg-config --libs efl-mono`

using System;

class Program
{
   public static void Main() {
      Efl.All.Init(Efl.Csharp.Components.Ui);

      Efl.Ui.Win win = new Efl.Ui.Win(null);
      Efl.Ui.Box box = new Efl.Ui.Box(win);
      Efl.Ui.Textbox tb = new Efl.Ui.Textbox(win);

      Efl.Ui.Button btn = new Efl.Ui.Button(box);
      btn.Text = "Click Me!";
      btn.ClickedEvent += (s, e) =>
      {
         Efl.Text.Cursor cur1, cur2;

         tb.GetSelectionCursors(out cur1, out cur2);
         cur1.SetPosition(3);
         cur2.SetPosition(7);
      };

      box.Pack(btn);
      box.Pack(tb);

      win.SetContent(box);
      win.SetSize(new Eina.Size2D(200, 400));
      Efl.Ui.Config.Run();
      Efl.All.Shutdown();
   }
}
```

Reviewers: woohyun, ali.alzyod, bu5hm4n

Reviewed By: woohyun

Subscribers: cedric, #reviewers, #committers, woohyun

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11115
2020-01-17 15:06:18 +09:00
Hermet Park 0a61d5a44b canvas vector: fix to refresh svg file of vector object.
previously, svg file is not refreshed though the file is changed.

Let changed flag true properly to re-render properly.

@fix
2020-01-17 10:48:24 +09:00
Jaehyun Cho 090df4331b evas_gesture: change getter methods to read-only properties
Summary:
From language bindings' perspective, it seems better that read-only
properties are provided instead of getter methods.

ref T8557

Reviewers: segfaultxavi, CHAN

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8557

Differential Revision: https://phab.enlightenment.org/D11094
2020-01-15 14:40:38 +01:00
WooHyun Jung e1a329a3e9 efl_text_cursor: update doc for Efl.Text.Cursor_Type
Summary: ref T8566

Reviewers: segfaultxavi, ali.alzyod

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8566

Differential Revision: https://phab.enlightenment.org/D11105
2020-01-15 14:19:34 +01:00
Jaehyun Cho 7661473f28 efl_canvas_animation_group: preserve each animation's duration
To preserve each animation's duration, group animation's duration is
copied to each animation's duration only if group animation's duration
is set.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11104
2020-01-15 11:09:21 +01:00
Jaehyun Cho 914fa2fd7c efl_gesture: rename Efl.Gesture.Events to Efl.Canvas.Gesture_Events
Summary:
Since the current Efl.Gesture.Events has canvas gesture events only,
Efl.Gesture.Events should be renamed to Efl.Canvas.Gesture_Events.

If other types of gesture events are newlly required later, which are
not based on canvas, then class Efl.XXX.Gesture_Events is required to
be introduced.

Reviewers: CHAN, segfaultxavi, bu5hm4n, zmike

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11073
2020-01-13 14:31:15 +01:00
Ali Alzyod d6649ad80a evas_textblock: emit change event on markup_set
Markup_set will emit change events, if user set empty string.
This Change is related to D10985, where markup_prepend will not emit events if empty string was added

Reviewed-by: Al Poole <netstar@gmail.com>
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11020
2020-01-13 11:33:14 +01:00
Xavi Artigas 93c7e7dc8f docs: Improvements to Text API documentation
Ref T7855
Ref T7934
Ref T7935
Ref T7936
Ref T7937
Ref T7938
Ref T7941
Ref T7942
Ref T7943
Ref T7944
Ref T7945
2020-01-09 18:17:33 +01:00
Xavi Artigas f7c859d9f8 docs: Fine-tuning the gesture descriptions 2020-01-09 15:38:23 +01:00
Ali Alzyod 1a02745a88 efl.text.cursor: change to abstract class
Summary:
1- Change cursor to abstract class
2- Remove copy method from cursor
3- remove cursor_Add method from efl.canvas.textblock and efl.ui.textbox

Reviewers: woohyun, segfaultxavi, bu5hm4n

Reviewed By: bu5hm4n

Subscribers: lauromoura, YOhoho, cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8299, T8454

Differential Revision: https://phab.enlightenment.org/D11034
2020-01-09 22:33:07 +09:00
Ali Alzyod 7b0a44dd33 efl.canvas.textblock: rename style strings to have underscore between words
Summary:
rename following styling strings:
tabstops -> tab_stops
linesize -> line_size
linerelsize -> line_rel_size
linegap -> line_gap
linerelgap -> line_rel_gap
linefill -> line_fill

This will affect Style_Apply, all_style_get,  and any method expect styling string

Reviewers: segfaultxavi, woohyun

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8523

Differential Revision: https://phab.enlightenment.org/D11043
2020-01-09 12:16:55 +01:00
Ali Alzyod dcc7813caf TEXT_FORMAT_HORIZONTAL_ALIGNMENT_AUTO_TYPE: rename end enum into opposite
Summary: TEXT_FORMAT_HORIZONTAL_ALIGNMENT_AUTO_TYPE: rename end enum into opposite

Reviewers: segfaultxavi, woohyun

Reviewed By: segfaultxavi, woohyun

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7939

Differential Revision: https://phab.enlightenment.org/D11058
2020-01-09 11:00:16 +01:00
Hermet Park f6f67d60f3 evas ector: ++safety.
add return value by ector_begin() for vector safety.
2020-01-09 15:01:47 +09:00
Ali Alzyod 43ad91ee40 Text_Format_Horizontal_Alignment_Auto_Type: rename enums, and Doc details
Summary: Text_Format_Horizontal_Alignment_Auto_Type: rename enums, and Doc details

Reviewers: woohyun, ali.alzyod

Reviewed By: ali.alzyod

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7939

Differential Revision: https://phab.enlightenment.org/D10993
2020-01-08 16:11:38 +01:00
Xavi Artigas 7378056116 docs: Better description of the Flick gesture 2020-01-07 17:36:30 +01:00
Mike Blumenkrantz 227483e079 efl/gesture: correct namespacing of all gesture enums in C
these were flattened to all be EFL_GESTURE_$MEMBER, which made them
impossible to read and use effectively

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11026
2020-01-07 16:08:23 +01:00
Xavi Artigas 62c9eb1791 docs: Clarify how Gesture objects are used
Ref T8502
2020-01-07 12:27:55 +01:00
Ali Alzyod 36a50f4d82 efl.text_style: remame underline2 and glow2
Summary: rename underline2 into secondary_underline and glow2 into secondary_glow

Reviewers: woohyun, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7857

Differential Revision: https://phab.enlightenment.org/D11024
2020-01-07 09:32:03 +01:00
Hermet Park 0313104719 canvas vg: remove redudant code.
The render preparation of vector nodes will be
done by user_vg_entry_render().
2020-01-07 13:25:47 +09:00
Xavi Artigas c836d82774 docs: whitespace and punctuation of Efl.Canvas.Animation_Scale 2020-01-03 16:14:45 +01:00
Hermet Park dea448d40c evas map: ++Safety for range overflow.
This might fix this issue.

{T8199}
2020-01-03 20:54:26 +09:00
Hermet Park d5463dfb1a Revert "Revert "Revert "evas map: diable high quality texture mapping feature."""
This reverts commit 1cb7d11ea8.
2020-01-03 20:54:19 +09:00
Xavi Artigas 744d4682c2 docs: Remove Evas reference from Efl.Canvas.Textblock 2020-01-03 11:57:27 +01:00
abdulleh Ghujeh c9cc3ab3f0 Evas Textblock : Fix obstacles & word overlap
Summary:
Revert part of old commit which caused wrong behavior in textblock with obstacles, we should use obstacle x pos.
There is no comments about why this was changed.

{F3821294}

Old commit is :
Aug 23, 2017 e63be982d9

related to D10955

Test Plan: Run Textblock Obstacle example

Reviewers: ali.alzyod, woohyun, segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11005
2020-01-03 16:45:27 +09:00
Marcel Hollerbach 9f712bbf2f efl_canvas_animation_scale: enhance documentation
Reviewers: segfaultxavi, zmike

Reviewed By: zmike

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10996
2020-01-02 09:35:34 -05:00
Marcel Hollerbach 9d428c610d evas: protect against leaking callbacks
Summary:
when someone accidently does not clean up all his animation callbacks,
we might end up with a lot of errors on console, as we keep delivering
tick events to a dead object.

Reviewers: zmike, cedric, segfaultxavi

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10998
2020-01-02 09:35:31 -05:00
Ali Alzyod 87e5907f18 efl.text: add null check for cursor and attribute internal methods
Reviewers: woohyun, segfaultxavi, bu5hm4n, zmike

Reviewed By: bu5hm4n

Subscribers: ProhtMeyhet, cedric, #reviewers, #committers

Tags: #efl

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10899
2020-01-02 12:53:20 +01:00
Cedric BAIL 4e6fd08306 evas: don't initialize font multiple time.
After splitting font family and size set operation, expedite lost a 10%
speed due to doing a double initialization (Once when the family is set
and one when the size is set). This was noticable in a few tight running
tests. This patch enforce that no initialization is called until the size
and the family are set.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10976
2020-01-02 12:53:12 +01:00
Ali Alzyod 3c54f6458f Efl.Text.Font.Properties: rename Efl.Text_Font_Properties
Efl.Text.Font.Properties: rename Efl.Text_Font_Properties

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10990
2020-01-02 12:43:46 +01:00
Ali Alzyod 41c7e1c908 efl.text.cursor: emit events CANVAS_TEXTBLOCK_CHANGED when insert text using efl_text_cursor_markup_insert
efl.text.cursor: emit events CANVAS_TEXTBLOCK_CHANGED when insert text using efl_text_cursor_markup_insert

Differential Revision: https://phab.enlightenment.org/D10985
2020-01-02 12:16:11 +01:00
SangHyeon Jade Lee 2f8683ef41 evas: fix legacy evas_object_clip_unset for group object.
Summary:
evas_object_clip_unset was broken for group object in several month or year..

basically,
evas_object_clip_unset(obj)
efl_canvas_object_clipper_set(obj, NULL)
is equal on efl_clip implements,
but on the group object, we need to unclip the whole group children in
efl_canvas_group_efl_canvas_object_clipper_set
which was not performed by legacy clip_usnet API.

Test Plan:
try clip_unset(obj) and clipper_set(obj, NULL) in any group clipped case
(i.e. scroller content) and see clip_unset is broken and fixed by patch.

Reviewers: cedric, bu5hm4n, zmike

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10984
2019-12-31 09:48:18 -05:00
Hermet Park 0f0f8d7fbc vector container: skip re-ordering as possible.
don't try anything if the stack is already top or bottom.
2019-12-31 15:15:56 +09:00
Hermet Park 174c593c70 evas vg: add an new interface efl_canvas_vg_container_children_direct_get()
Summary: We need an efficient method to navigate children faster.

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10989
2019-12-31 14:19:01 +09:00
Hermet Park d79693d1a9 evas vg: rewrite efl_gfx_stack_raise_to_top, lower_to_bottom()
The implementation was totally stupid,
previous function were wrongly working.

Thus, we rewrite it simple again.
2019-12-31 13:32:56 +09:00
Ali Alzyod 64d160da0a efl.text.style: underline enum rename + underline method fix
Summary: underline methods was not working + fix enums names

Reviewers: woohyun, segfaultxavi, bu5hm4n, zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7945

Differential Revision: https://phab.enlightenment.org/D10975
2019-12-30 13:27:13 +09:00
Ross Vandegrift 2e854ce7ed correct edje pkg-config generation for luaold
Currently, edje.pc gets its lua Requires from the -Dlua-interpreter argument.
If -Dlua-interpreter=lua, an unversioned lua entry ends up in Requires, which
cannot always be satisifed.  The evas filters meson.build handles this case by
generating a version-specific entry.  This patch copies that logic into the top
level meson.build, and passes the result to the edje subproject.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10965
2019-12-28 10:47:46 +01:00
Xavi Artigas 858caa21b0 docs:Clarify Efl.Text_Formatter format parameter
Ref T8455
2019-12-27 11:37:43 +01:00
Ali Alzyod 55e9d31569 efl.text.font: rename to efl.text.font.properties
Reviewers: segfaultxavi, woohyun, zmike, bu5hm4n

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7855

Differential Revision: https://phab.enlightenment.org/D10966
2019-12-26 18:08:00 +09:00
Ali Alzyod 3bd4f04ec7 efl_text_format: rename tabstops,lingap,linerelgap
Summary: rename tabstops,lingap,linerelgap to have underscore between words

Reviewers: segfaultxavi, woohyun

Reviewed By: woohyun

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7856

Differential Revision: https://phab.enlightenment.org/D10963
2019-12-26 18:01:32 +09:00
Ali Alzyod a239fc4a1a efl_text_cursor: movement word start/end
Summary:
This patch will make **efl_text_cursor_move** method, when it is working with **WORD_START** or **WORD_END** If no actual movement happened then return false, and do not fire CHANGE event

for example if cursor at word start, and we call efl_text_cursor_move(cursor, word_start);
1- this call should return false because no actual movement happened. If no actual movement happened then return false
2- this call should not fire CHANGE event for cursor.and do not fire CHANGE event

Reviewers: woohyun, segfaultxavi, cedric, zmike

Reviewed By: woohyun

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8454

Differential Revision: https://phab.enlightenment.org/D10949
2019-12-26 16:05:37 +09:00
Ali Alzyod 84685df233 efl_text_cursor: line jump by fix movement
Summary:
When the cursor is at line beginning of line, and user click "Up" then "Down" on keyboard cursor will position at second character.
If text is:  **occaecat \n mollit**

Reviewers: woohyun, zmike, cedric, segfaultxavi

Reviewed By: woohyun

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8454

Differential Revision: https://phab.enlightenment.org/D10947
2019-12-26 09:55:28 +09:00
Ali Alzyod c008309f78 elm_entry: remove variation sequences as part of glyph when delete clusters
Summary:
This will fix the task:
T8542

Remove variation sequences as part of glyph when deleting clusters, variation sequence is meaningless alone, so they should be removed when deleting

Reviewers: woohyun, bowonryu

Reviewed By: bowonryu

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10956
2019-12-26 06:53:14 +09:00
Ali Alzyod 79d95a289a efl_text_cursor: assign source textobject to destination on cursor_copy
Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8454

Differential Revision: https://phab.enlightenment.org/D10951
2019-12-24 17:17:31 +09:00
a.srour ce28963654 Efl.Text.Cursor: Fix line_jump_by return logic
Summary:
From documentation `line_jump_by` should return `EINA_TRUE` if cursor moved, and `EINA_FALSE` if not moved.
But the current behaviour is reversed, so this should fix it.

Reviewers: ali.alzyod, segfaultxavi, woohyun

Subscribers: AbdullehGhujeh, #committers, cedric, #reviewers

Tags: #efl

Maniphest Tasks: T8454

Differential Revision: https://phab.enlightenment.org/D10946
2019-12-24 16:34:14 +09:00
Bowon Ryu a6a44ecb9d evas_object_textblock: remove unreachable code
Summary:
This less-than-zero comparison of an unsigned value is never true..
this condition can not be true.

Test Plan: N/A

Reviewers: ali.alzyod, woohyun, jsuya

Reviewed By: jsuya

Subscribers: jsuya, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10961
2019-12-24 11:36:50 +09:00
junsu choi 1a93a4c2cc evas_vg_cache: Prevent memory leak
Summary: free hash_key pointer

Test Plan: N/A

Reviewers: Hermet, YOhoho

Reviewed By: YOhoho

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10960
2019-12-24 10:54:04 +09:00
Ali Alzyod 74a8c646bc efl.canvas.textblock: update eo file documentation
Summary: T8460

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10936
2019-12-20 12:47:25 +01:00
Ali Alzyod 8dbc75fdce efl_text_attribute_factory: rename to efl_text_formatter
Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8455

Differential Revision: https://phab.enlightenment.org/D10925
2019-12-20 12:43:00 +01:00
Ali Alzyod 5cf7fa7670 efl.text.style: rename methods/properties and add text_ prefix
Summary:
efl.text.style: rename methods and properties

this change will avoid conflict in the future with other interfaces or class methods.

```
      Efl.Text_Style.text_color { set; get; }
      Efl.Text_Style.text_backing_type { set; get; }
      Efl.Text_Style.text_background_color { set; get;}  //this was backing_color
      Efl.Text_Style.text_underline_type { set; }
      Efl.Text_Style.text_underline_color { set; get; }
      Efl.Text_Style.text_underline2_color { set; get; }
      Efl.Text_Style.text_underline_dashed_color { set; get; }
      Efl.Text_Style.text_underline_height { set; }
      Efl.Text_Style.text_underline_dashed_width { set; }
      Efl.Text_Style.text_underline_dashed_gap { set; }
      Efl.Text_Style.text_strikethrough_type { set; }
      Efl.Text_Style.text_strikethrough_color { set; get; }
      Efl.Text_Style.text_effect_type { set; }
      Efl.Text_Style.text_shadow_direction { set; }
      Efl.Text_Style.text_outline_color { set; get; }
      Efl.Text_Style.text_shadow_color { set; get; }
      Efl.Text_Style.text_glow_color { set; get; }
      Efl.Text_Style.text_glow2_color { set; get; }
```

T8533

Reviewers: woohyun, segfaultxavi, bu5hm4n, zmike, cedric

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10897
2019-12-20 09:58:27 +01:00
a.srour 5537d58639 Fix textblock style when "lang=x" is presented
This patch should fix `textblock`'s style issue when `lang` property presented, also fix leak when changing font_lang property in `Efl.Canvas.Text`

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10896
2019-12-19 16:45:15 -08:00
Xavi Artigas ec3f67992a Remove @beta from Efl.Canvas.Animation classes
Ref T8436

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10894
2019-12-19 16:45:14 -08:00
Ali Alzyod 46fef6901d efl.text.cursor: clean eo files from comments
Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8454

Differential Revision: https://phab.enlightenment.org/D10926
2019-12-19 16:09:12 +01:00
Carsten Haitzler e2887ec2aa evas textblock - use snprintf to limit buffer and have buffer big enough
the buffer wasn't big enough for all possible content anyway and it
didn't use snprintf, so large values of i could overflow... pointed to
by warning. fix that warning.
2019-12-19 10:33:37 +00:00
Xavi Artigas d1ffc7924e docs: Formatting issues in Efl.Text.Attribute.Factory 2019-12-18 16:10:17 +01:00
Xavi Artigas 21bb974024 docs: Fix typos and whitespace in Efl.Text_Cursor 2019-12-18 16:06:15 +01:00
Hermet Park 518d9b2649 evas vg: fix memory leak. 2019-12-18 21:52:42 +09:00
Ali Alzyod 365159c5ea efl.text.format: rename methods and properties
Summary:
efl.text.format: rename methods and properties

this change will avoid conflict in the future with other interfaces or class methods.

T8533

Reviewers: woohyun, segfaultxavi, zmike, bu5hm4n

Reviewed By: segfaultxavi

Subscribers: cedric, #committers, #reviewers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10895
2019-12-17 15:57:58 +01:00
Xavi Artigas 0265f4fd55 docs: Add detailed text styling information
Summary:
More detailed descriptions for each attribute.
Relationship between attributes.
Default values.
Links to direct API methods for the corresponding property.
General text overhaul and formatting.

Test Plan: Builds and passes tests. Generate docgen or DocFX documentation and enjoy your new Text styling descriptions!

Reviewers: ali.alzyod

Reviewed By: ali.alzyod

Subscribers: AbdullehGhujeh, cedric, #reviewers, #committers, woohyun, bu5hm4n

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10873
2019-12-17 14:20:12 +01:00
Xavi Artigas 3bfc73a95a docs: Add missing docs for Efl.Canvas.Object_Animation 2019-12-17 14:07:20 +01:00
Hermet Park be8d1afd1e evas mapping: fix memory leak.
These two dynamically allocated properties were not freed.
free them when cow data is reset.
2019-12-17 17:19:21 +09:00
Ali Alzyod 68e9bf9c14 efl_canvas_textblock: allow style_apply with wrap=none
Summary:
1- passing style_apply("wrap=none") had no effect previously, and now disable wraping
2- style_all_get() by default return "wrap=word", but now return  "wrap=none"

refer to T8523

Reviewers: segfaultxavi, woohyun, cedric

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10888
2019-12-16 19:11:33 +01:00
Marcel Hollerbach 4982da6327 evas_focus: protect against faulty focus object
the problem is that we only remove ourselfs from the focused list in the
invalidator. However, we allowed invalidated objects to be part of this
hash, which made everything go boom.

With this commit you at least only get one error and you should fix up
this case.

This fixes random errors in enlightenment (That are appearing theire
since seats have been introduced to evas, the problem before invalidate
was that the object was already destructor called, but not fully
destructed yet).

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10845
2019-12-13 09:33:04 -08:00
Ali Alzyod abc1cb0043 efl_canvas_textblock: multiline enabled by default
Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, tasn, bu5hm4n, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10859
2019-12-13 16:35:07 +01:00
Hermet Park 4f99f9f2bf evas vg: revise buffer caching method.
for better precise buffer cache key,
We make a unique key name combining root node + size + frame index.

Now, we can reuse the root node for animation and caching buffers.
2019-12-13 17:25:26 +09:00
Ali Alzyod 3372a701d3 efl_canvas_text: event emitting
Summary:
1- Emitting changed event when adding text using cursors.
2- remove attribute,changed event since it is not used now
3- Emitting layout,finished event when finish layouting

Reviewers: woohyun, cedric, bu5hm4n

Reviewed By: cedric

Subscribers: bu5hm4n, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10834
2019-12-13 15:10:32 +09:00
Hermet Park 181ec112f6 evas vg: fix memory corruption for user entry.
Container must have a set parent after construction.
efl_add_ref() with a parent won't work this case
because container needs some jobs in overriding parent_set() after proper intialization.
2019-12-13 11:55:32 +09:00
Ali Alzyod 2d76224918 evas_object_textblock: add support for variation sequences
Summary: update font processing to handle variation sequences unicodes to select proper glypg in respect to variation seqences

Test Plan:
```
#define EFL_EO_API_SUPPORT 1
#define EFL_BETA_API_SUPPORT 1
#include <Eina.h>
#include <Efl.h>
#include <Elementary.h>

EAPI_MAIN int
elm_main(int argc, char **argv)
{
   Evas_Object *win, *textblock;

   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);

   win = elm_win_util_standard_add("Main", "");
   elm_win_autodel_set(win, EINA_TRUE);
   textblock = evas_object_textblock_add(win);
   efl_canvas_text_style_set(textblock,NULL,"DEFAULT='font=DejaVuSans font_fallbacks=SamsungColorEmoji color=#000 font_size=20'");
   evas_object_textblock_text_markup_set(textblock, "8&#xfe0f;&#x20E3;&#x262a;&#xfe0f;AAA&#x262a;&#xfe0E;1234567&#xfe0f;&#x20E3;");

   evas_object_size_hint_weight_set(textblock, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(textblock, EVAS_HINT_FILL, EVAS_HINT_FILL);
   evas_object_show(textblock);
   evas_object_move(textblock, 0, 0);
   evas_object_resize(textblock, 320, 320);
   evas_object_resize(win, 320, 320);
   evas_object_show(win);
   elm_run();
   return 0;

}

ELM_MAIN()

```

Reviewers: woohyun, bowonryu, segfaultxavi, cedric, bu5hm4n

Reviewed By: woohyun, cedric

Subscribers: raster, bu5hm4n, subodh6129, herdsman, segfaultxavi, zmike, cedric, #committers, #reviewers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9053
2019-12-12 16:22:12 +09:00
Ali Alzyod 8f87a2411a evas_textblock: content fit feature
Summary:
**Content Fit Feature for Evas_Object_Textblock**

This Feature is available at **Evas **object level.  And **Edje **level (where it is internally use evas functionality)
This feature will allow text block to fit its content font size to proper size to fit its area.

**Main Properties:**
Fit Modes        :   None=Default, Width, Height, All [Width+Height]
Fit Size Range :   Contains maximum and minimum font size to be used (and in between).
Fit Step Size    :   Step(Jump) value when trying fonts sizes between Size_Range max and min.
Fit Size Array   :   Other way to resize font, where you explicitly select font sizes to be uses    (for example [20, 50, 100] it will try 3 sizes only)

Text Fit feature was available in Edje but:
1- It doesn't effected by ellipsis or warping in font style (or do not handle the in right way)
2- Accuracy is not good (specially if you have fix pixel size elements (spaces,tabs,items))
3- No (Step size, Size Array) available.

Test Plan:
To check the Feature
> elementary_test
> fit
> textbock fit
You can modify all the modes and properties

These are two examples, One using Evas other uses Edje

**Evas**

```
#include <Elementary.h>

enum BUTTON{
   BUTTON_MODE             = 0,
   BUTTON_MAX              = 1,
   BUTTON_MIN              = 2,
   BUTTON_STEP             = 3,
   BUTTON_ARRAY            = 4,
   BUTTON_CONTENT          = 5,
   BUTTON_STYLE            = 6,
   BUTTON_ALL              = BUTTON_STYLE+1,
};

char* BUTTON_STR[BUTTON_ALL] ={
   "MODE",
   "MAX",
   "MIN",
   "STEP",
   "ARRAY",
   "CONTENT",
   "STYLE",
};

char *contents[] = {
   "Hello World",
   "This is Line<br>THis is other Line",
   "This text contains <font_size=20 color=#F00>SPECIFIC SIZE</font_size> that does not effected by fit mode"
   };

char *styles[] = {
   "DEFAULT='font=sans font_size=30 color=#000 wrap=mixed ellipsis=1.0'",
   "DEFAULT='font=sans font_size=30 color=#000 wrap=mixed'",
   "DEFAULT='font=sans font_size=30 color=#000 ellipsis=1.0'",
   "DEFAULT='font=sans font_size=30 color=#000'",
   };

char *styles_names[] = {
   "wrap=<color=#F00>mixed</color> ellipsis=<color=#F00>1.0</color>",
   "wrap=<color=#F00>mixed</color> ellipsis=<color=#F00>NONE</color>",
   "wrap=<color=#F00>NONE</color> ellipsis=<color=#F00>1.0</color>",
   "wrap=<color=#F00>NONE</color> ellipsis=<color=#F00>NONE</color>",
   };

typedef struct _APP
{
   Evas_Object *win, *box, *txtblock,*bg, *boxHor, *boxHor2;
   Eo *btn[BUTTON_ALL];
   Eo *lbl_status;
   char * str;
   unsigned int i_contnet, i_style;
} APP;
APP *app;

char * get_fit_status(Eo * textblock);

static void _btn_clicked(void *data EINA_UNUSED, Eo *obj, void *eventInfo EINA_UNUSED){
   if (obj == app->btn[BUTTON_MODE])
     {
        unsigned int options;
        evas_textblock_fit_options_get(app->txtblock, &options);
        if (options == TEXTBLOCK_FIT_MODE_NONE)
           evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_HEIGHT);
        else if (options == TEXTBLOCK_FIT_MODE_HEIGHT)
           evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_WIDTH);
        else if (options == TEXTBLOCK_FIT_MODE_WIDTH)
           evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_ALL);
        else if (options == TEXTBLOCK_FIT_MODE_ALL)
           evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_NONE);
     }
   else if (obj == app->btn[BUTTON_MAX])
     {
        unsigned int min, max;
        evas_textblock_fit_size_range_get(app->txtblock, &min, &max);
        max -= 5;
        evas_textblock_fit_size_range_set(app->txtblock, min, max);
     }
   else if (obj == app->btn[BUTTON_MIN])
     {
        unsigned int min, max;
        evas_textblock_fit_size_range_get(app->txtblock, &min, &max);
        min += 5;
        evas_textblock_fit_size_range_set(app->txtblock, min, max);
     }
   else if (obj == app->btn[BUTTON_STEP])
     {
        unsigned int step;
        evas_textblock_fit_step_size_get(app->txtblock, &step);
        step++;
        evas_textblock_fit_step_size_set(app->txtblock, step);
     }
   else if (obj == app->btn[BUTTON_ARRAY])
     {
        unsigned int font_size[] = {10, 50, 100 ,150};
        evas_textblock_fit_size_array_set(app->txtblock,font_size,4);
     }
   else if (obj == app->btn[BUTTON_CONTENT])
     {
        app->i_contnet++;
        if(app->i_contnet>=sizeof(contents)/sizeof(char*))
           app->i_contnet=0;
        evas_object_textblock_text_markup_set(app->txtblock,contents[app->i_contnet]);
     }
   else if (obj == app->btn[BUTTON_STYLE])
     {
        app->i_style++;
        if(app->i_style>=sizeof(styles)/sizeof(char*))
           app->i_style=0;

        Evas_Textblock_Style *style = evas_object_textblock_style_get(app->txtblock);
        evas_textblock_style_set(style,styles[app->i_style]);
     }

   elm_object_text_set(app->lbl_status, get_fit_status(app->txtblock));
}

char * get_fit_status(Eo * textblock)
{
   static char status[0xFFF];
   unsigned int options,min,max,step,size_array[256];
   size_t size_array_len;
   evas_textblock_fit_options_get(textblock,&options);
   evas_textblock_fit_size_range_get(textblock,&min,&max);
   evas_textblock_fit_step_size_get(textblock,&step);
   evas_textblock_fit_size_array_get(textblock,NULL,&size_array_len,0);
   if (size_array_len>255)
      size_array_len = 255;
   evas_textblock_fit_size_array_get(textblock,size_array,NULL,size_array_len);

   strcpy(status,"Mode : ");
   if (options == TEXTBLOCK_FIT_MODE_NONE)
      strcat(status,"MODE_NONE");
   else if (options == TEXTBLOCK_FIT_MODE_HEIGHT)
      strcat(status,"MODE_HEIGHT");
   else if (options == TEXTBLOCK_FIT_MODE_WIDTH)
      strcat(status,"MODE_WIDTH");
   else if (options == TEXTBLOCK_FIT_MODE_ALL)
      strcat(status,"MODE_ALL");

   strcat(status,"<br>");
   sprintf(status + strlen(status),"Max   : %d<br>",max);
   sprintf(status + strlen(status),"Min   : %d<br>",min);
   sprintf(status + strlen(status),"Step  : %d<br>",step);
   sprintf(status + strlen(status),"Array  : [ ");
   for (size_t i = 0 ; i < 10 ; i++)
     {
        if(i<size_array_len)
           sprintf(status + strlen(status)," %d,",size_array[i]);
     }

   if(10<size_array_len)
      sprintf(status + strlen(status)," ... ");
   sprintf(status + strlen(status)," ]");

   sprintf(status + strlen(status),"<br>");
   sprintf(status + strlen(status),"%s",styles_names[app->i_style]);

   return status;
}

int elm_main(int argc, char **argv)
{
  app = calloc(sizeof(APP), 1);

   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);

   app->win = elm_win_util_standard_add("Main", "App");
   elm_win_autodel_set(app->win, EINA_TRUE);

   app->box = elm_box_add(app->win);
   app->boxHor = elm_box_add(app->box);
   app->boxHor2 = elm_box_add(app->box);
   app->txtblock = evas_object_textblock_add(app->box);
   app->bg = elm_bg_add(app->box);
   elm_bg_color_set(app->bg,255,255,255);

   Evas_Textblock_Style *style = evas_textblock_style_new();
   evas_textblock_style_set(style,styles[0]);
   evas_object_textblock_style_set(app->txtblock,style);
   evas_object_textblock_text_markup_set(app->txtblock,contents[0]);

   elm_box_horizontal_set(app->boxHor, EINA_TRUE);
   elm_box_horizontal_set(app->boxHor2, EINA_TRUE);

   evas_object_size_hint_weight_set(app->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(app->box, EVAS_HINT_FILL, EVAS_HINT_FILL);

   evas_object_size_hint_weight_set(app->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(app->box, EVAS_HINT_FILL, EVAS_HINT_FILL);

   evas_object_show(app->txtblock);
   evas_object_show(app->bg);
   evas_object_show(app->box);
   evas_object_show(app->boxHor);
   evas_object_show(app->boxHor2);

   elm_box_pack_end(app->box, app->bg);
   elm_box_pack_end(app->box, app->boxHor);
   elm_box_pack_end(app->box, app->boxHor2);

   elm_object_content_set(app->bg,app->txtblock);

   elm_win_resize_object_add(app->win, app->box);
   evas_object_resize(app->win, 320, 480);

   for(int i = 0 ; i < BUTTON_ALL ; i++)
     {
        app->btn[i] = elm_button_add(app->boxHor);
        evas_object_smart_callback_add(app->btn[i], "clicked", _btn_clicked, NULL);
        elm_object_text_set(app->btn[i], BUTTON_STR[i]);
        elm_box_pack_end(app->boxHor, app->btn[i]);
        evas_object_show(app->btn[i]);
     }

   app->lbl_status = elm_label_add(app->boxHor2);
   elm_object_text_set(app->lbl_status, get_fit_status(app->txtblock));
   elm_box_pack_end(app->boxHor2, app->lbl_status);
   evas_object_show(app->lbl_status);

   evas_object_size_hint_weight_set(app->txtblock, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(app->txtblock, EVAS_HINT_FILL, EVAS_HINT_FILL);

   evas_object_size_hint_weight_set(app->bg, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(app->bg, EVAS_HINT_FILL, EVAS_HINT_FILL);

   evas_object_show(app->win);
   elm_run();
   return 0;
}

ELM_MAIN()
```

**Edje**

```
// compile: edje_cc source.edc
// run: edje_player source.edje
collections {
   styles
   {
      style
      {
         name: "text_style";
         base: "font=sans font_size=30 color=#FFF wrap=mixed ellipsis=1.0";
         tag: "br" "\n";
         tag: "ps" "ps";
         tag: "tab" "\t";
         tag: "b" "+ font_weight=Bold";
      }
   }
   group {
      name: "my_group"; // must be the same as in source.c
      parts {

         part
         {
            name: "background";
            type: RECT;
            scale: 1;
            description
            {
               color: 0 0 0 0;
               rel1.relative: 0.0 0.0;
               rel2.relative: 1.0 1.0;
            }
         }

         part
         {
            name: "text";
            type: TEXTBLOCK;
            scale: 1;
            entry_mode: NONE;
            effect: OUTLINE_SHADOW;
            description
            {
               state: "default" 0.0;
               rel1.to : "background";
               rel1.relative: 0.0 0.0;
               rel2.to : "background";
               rel2.relative: 1.0 1.0;
               text
               {
                  style: "text_style";
                  align: 0.0 0.0;
                  text: "Hello World This is Me";
                  fit: 1 1;
                  fit_step: 1;
                  size_range: 30 200;
                  //fit_size_array: 20 40 60 80 100 200;
               }
            }
         }
      }
   }
}
```

Found Task T5724 relative to this Feature

Reviewers: woohyun, bowonryu, cedric, raster

Reviewed By: woohyun

Subscribers: a.srour, #committers, #reviewers, cedric

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9280
2019-12-12 14:22:46 +09:00
Cedric BAIL 330b72bc6a evas: do not call Eina_Cow GC during invalidate it is pointless.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10818
2019-12-11 10:36:17 +01:00
Cedric BAIL 939b0f1a9c evas: avoid unecessary Eina_Cow GC during image destruction.
If the stretch zone are NULL to start with, there is no reason to modify
them and this should avoid us a trip to the GC.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10816
2019-12-11 10:36:11 +01:00
Cedric BAIL 119cb085fa evas: reduce useless allocation during destruction of image.
Evas image use a GC to reduce duplicated state accross multiple object.
Still during shutdown we do clean it up and free it. There is no point
to push that down the GC if we are to just free it after. Relying on
the fact that dynamic content will avoid triggering the GC altogether
as their content change to frequently and is expected to be uniq among
other objects, we can avoid unecessary allocation during the destruction
by just switching that early on during the destructor.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10815
2019-12-11 10:36:08 +01:00
Cedric BAIL 574d1192bb evas: efl_gfx_image_stretch_region_set need access to image state before it is freed.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10814
2019-12-11 10:36:05 +01:00
Wonki Kim a8d7816782 docs: fix to make docs contain proper images
Summary:
links to images that this patch is modifying would be included in doxy docs
without pre or post process something in meson definition, if we applied this patch.

Reviewers: segfaultxavi, bu5hm4n

Reviewed By: segfaultxavi

Subscribers: bu5hm4n, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10821
2019-12-10 12:53:39 +01:00
Ali Alzyod 621d2cdecf Efl.Canvas.Text rename into Efl.Canvas.Textblock
Summary:
Efl.Canvas.Text                renamed into **Efl.Canvas.Textblock**
Efl.Canvas.Text_Factory  renamed into **Efl.Canvas.Textblock_Factory**

Reviewers: woohyun, segfaultxavi, zmike, bu5hm4n, YOhoho

Reviewed By: segfaultxavi

Subscribers: cedric, #committers, #reviewers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10808
2019-12-10 17:39:59 +09:00
Ali Alzyod 9c67a71e00 efl_text_cursor: rename enums
Summary:
rename two movement enums

**paragraph_first**: to just **first**  this will move the cursor to the beginning of the text

**paragraph_last**: to just **last**  this will move the cursor to the end of the text

These two are not directly related to paragraph the will move the cursor depending on the whole content

or maybe **start** and **end**  what do you think ?

Reviewers: woohyun, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10810
2019-12-09 10:54:48 +01:00
Hermet Park f8d9dfd74b evas vg: ++documentation 2019-12-09 15:41:33 +09:00
Ali Alzyod 25900bee0f evas_text: retain legacy behaviour
This will retain old legacy behaviour (No Eina Checks).

Warnings will be generated when using elementary test, unless we retain old behaviour
https://phab.enlightenment.org/D10716#203305

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10826
2019-12-06 15:26:40 -08:00
Jaehyun Cho cb817caa80 efl_canvas_object_animation: support duration 0
The duration of animation means how long the animation is executed.
Therefore, if duration is 0, then the final state of animation should be
applied to the target object immediately.

In this case, if final_state_keep is true, then the final state of
animation is preserved. Otherwise, the final state of animation is not
preserved.

ref T8436, T8513

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10812
2019-12-06 18:04:07 +01:00
Hermet Park 830bd4e26d evas vector: add one comment todo. 2019-12-06 18:59:38 +09:00
Hermet Park 885967523b evas vg: --remove log 2019-12-06 15:31:35 +09:00
Hermet Park 19ef155526 vg ector: Call a pair of ector begin/end for ector buffer drawing.
While we render vector drawing on ector,it uses ector buffers for subsequent compositions.
In this sequence, it switches ector buffer with a composition target,
while resuing the global ector context.

Previously, it trickly switched ector buffer, it broke the ector begin/end pair.
Now, it needs to recover global ector buffer once the composition finished.
Thus ector buffer need to return the current pixels information for this.
2019-12-06 15:31:30 +09:00
Hosang Kim 6e49a94c0e evas_events: fix wrong condition of proxy event behavior.
Summary:
If source_events is false, Evas object doesn't repeat events to source.
But events is always repeated to source in multi touch case.

Reviewers: Hermet, raster, cedric

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10807
2019-12-06 10:21:35 +09:00
Ali Alzyod a5837cb4ed efl_text_attribute_factory: update documention
Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10806
2019-12-05 10:41:11 +01:00
Stefan Schmidt d0f69cf2e2 exotic: remove left-overs from Exotic support
This seems to have been gone a long time ago and only references left
that have not been disturbing the build. Time to clean up!

Signed-off-by: Stefan Schmidt <s.schmidt@samsung.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10793
2019-12-04 12:21:28 -08:00
Stefan Schmidt f3d9b8ee70 esacpe: remove library from tree
This has not been used for a while and is not even buildable after our
switch to meson. It was a niche to start with given that it needed the
PS3 OS to run on. I asked for any remaining users at EDD and on the list
but heard nothing. Time to remove.

Signed-off-by: Stefan Schmidt <s.schmidt@samsung.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10778
2019-12-04 12:21:24 -08:00
Xavi Artigas b179e397d6 Efl.Canvas.Animation: Rename repeat_count to play_count
Summary:
play_count is a tad simpler to understand, since it means the TOTAL number of
times the animation will play.
The default value is now 1, and 0 means INFINITE (instead of -1). This allows
removing yet another constant from header files.

Depends on D10799

Test Plan: Everything builds and passes tests. Elm_test Animation.Repeat has been adjusted accordingly.

Reviewers: bu5hm4n

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10800
2019-12-04 17:43:31 +01:00
Marcel Hollerbach a6c102df1f efl_canvas_animation_group: remove implicit children behaviour
you could set the duration of the group to all children, however, the
default behaviour was to not do that. This is however a bit probeblatic,
and needs to be more expclicit. If this is needed again, then this can
be reintroduced, however, not in this form.

ref T8437
Depends on D10798

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D10799
2019-12-04 16:30:50 +01:00
Marcel Hollerbach 752855825d remove unsued macros
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D10798
2019-12-04 16:30:47 +01:00
Marcel Hollerbach fc7d398e07 efl_canvas_animation: use floating point infinite instead of macro
the floating point infinite builtin should also work cross languages (so
this is better for bindings).

ref T8437

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D10797
2019-12-04 16:30:44 +01:00
Marcel Hollerbach a29be18b5f efl_canvas_animation: add a standard value for duration of animations
before this commit the standard time was 0, which results in no
animation played at all. Now its 0.2 and a app that does not like it can
adjust it.

ref T8436

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D10796
2019-12-04 16:30:40 +01:00
Marcel Hollerbach 10b631e7cb efl_canvas_animation_group: use @property instead of method
this also refreshes the documentation of all this.

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D10795
2019-12-04 16:30:36 +01:00
Taehyub Kim 608c853b44 fix the wrong method signature for evas_textgrid
Summary:
fix the wrong method signature famliy font get and font size get for evas_textgrid
the method parameter should be changed to return type
@fix

Reviewers: Hermet, ali.alzyod, woohyun

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10794
2019-12-04 19:15:03 +09:00
Marcel Hollerbach 8daaab65fa efl_canvas_animation_group: move from list to iterator
we should not use lists directly, ownership issues etc. etc..
This moves it to iterators

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D10787
2019-12-04 10:29:55 +01:00
Xavi Artigas da0a72bb70 Efl.Canvas.Gesture_Zoom: typo in docs 2019-12-03 18:04:10 +01:00
Woochanlee fc456d2b77 gesture_manager: Changed function param to reduce internal function calls.
The filter_event function calling a lot of times when it runs.

This can help performance by reducing the number of calls to the efl_data_scope_get() function.

Reviewed-by: Hermet Park <hermetpark@gmail.com>
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10437
2019-12-03 09:53:37 +01:00
Ali Alzyod 5978d79858 efl_canvas_text: documentation for style set
Summary:
Depends on D10607

Original Material: https://www.enlightenment.org/_legacy_embed/evas_textblock_style_page.html

Reviewers: woohyun, segfaultxavi, AbdullehGhujeh

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10729
2019-12-02 18:07:19 +01:00
Hermet Park 1cb7d11ea8 Revert "Revert "evas map: diable high quality texture mapping feature.""
This reverts commit 94c193e40b.
2019-12-02 20:41:14 +09:00
Ali Alzyod 0806b03346 efl_canvas_text: correct password behaviour with efl_text_password_get/set
Summary:
In simple words:

when we create efl_canvas_text object,   efl_text_password_get will return TRUE.
which is wrong,
efl_text_password_get should  return FALSE, unless user change the password using   efl_text_password_set

Reviewers: woohyun, zmike, segfaultxavi, tasn

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10735
2019-12-02 10:56:13 +09:00
Hermet Park d05c2169a8 vector cache: skip animation update as possible.
Since the vector file data is shareable among the multiple vg instances,
vfd could keep the requested frame data already by the other instance.

This case vector cache quickly return the vector data withouth any further progress.
2019-11-29 11:20:48 +09:00
Hermet Park 153b5cffd8 evas vector: operate cached vector file data per evas instances.
each vfd loaders construct vector tree data, these can be belongs to evas instance,
they are not likely shareable.

We should operate vfd separately.
2019-11-29 10:51:19 +09:00
Xavi Artigas 92d2cc7ae3 Efl.Canvas.Text: Further update docs 2019-11-28 11:08:11 +01:00
Xavi Artigas dfe0c7b110 Efl.Canvas.Text: Update docs 2019-11-28 11:04:09 +01:00
Ali Alzyod 7bdb63d045 Polish text interface methods
Summary:
This patch is set to rename some properties of `Efl.Text_Font` & `Efl.Text_Format` interfaces.

1- efl_text_font_set/get become (efl_text_font_family_set/get, efl_text_font_size_set/get)

2- efl_text_valign/halign   become efl_text_vertical/horizontal_align

3- efl_text_halign_auto_type  become  efl_text_horizontal_align_auto_type

Reviewers: ali.alzyod, woohyun, segfaultxavi, bu5hm4n, zmike, cedric

Reviewed By: woohyun

Subscribers: zmike, #committers, #reviewers, cedric

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10716
2019-11-28 16:55:27 +09:00
abdulleh Ghujeh fa1aa10d79 Efl Canvas Text : Update style parsing code
Summary:
Based on comments in D10607

Update code responsible for parsing "style=" :

-Update string parsing code
-Make the old and new code more readable
-Add tests

Reviewers: segfaultxavi, bu5hm4n, woohyun, ali.alzyod

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10715
2019-11-28 16:46:30 +09:00
Hermet Park dc3e899b58 vector container: skip only for composition types. 2019-11-28 15:04:56 +09:00
Hermet Park 408bfb3e35 evas vector: make it stable caching logic.
We need a more precise caching mechanism to save memory.
Current root node(key) is limited for caching buffers,
when to share by the multiple animated instances.

This patch is a step for further optmization work,
at the moment we disable the caching buffers for the animated instances.
2019-11-28 14:20:08 +09:00
abdulleh Ghujeh f6caca1d70 Efl Canvas Text : Modify Style Property
Summary:
This patch defines the way style property will work at canvas_text object

1- Changing canvas_text style property using Font/Format/Style interfaces or with efl_canvas_text style property are the same.
     Example:

```
efl_text_font_set(tb, "Arial", 30);
//is same as
efl_canvas_text_style_set(tb, "font=Arial font_size=30");

//which means calling
char * font;
int size;
int font_size;
efl_text_font_get(tb, &font, &size);
// calling this after any of the top two functions will return same result
```

2- style_get_property
     Will return string that contains full details about all the current applied style at canvas_text  level.

3- style_set_property
     Will only override passed styles and leave everything else as it is

```
efl_canvas_text_style_set(tb, "font=Arial");  // overrider font name to Arial and leave everthing else
efl_canvas_text_style_set(tb, "font_size=30");  // overrider font size to 30 and leave everthing else (font name will stay arial)
```

Reviewers: ali.alzyod, woohyun, tasn, segfaultxavi, bu5hm4n, zmike

Reviewed By: woohyun

Subscribers: zmike, bu5hm4n, segfaultxavi, a.srour, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10607
2019-11-28 13:14:15 +09:00
Marcel Hollerbach 3838112294 Revert "gesture_manager: Changed function param to reduce internal function calls."
This has still open review comments, lets solve them, and *then* land
it.

This reverts commit 2f41f867ae.
2019-11-27 15:54:57 +01:00
Hermet Park 643dceca3d vector container: skip copying compositions precisely.
+ added some comments for future tasks.
2019-11-27 21:06:42 +09:00
Woochanlee 2f41f867ae gesture_manager: Changed function param to reduce internal function calls.
Summary:
The filter_event function calling a lot of times when it runs.

This can help performance by reducing the number of calls to the efl_data_scope_get() function.

Reviewers: Hermet, smohanty, bu5hm4n

Reviewed By: Hermet

Subscribers: zmike, bu5hm4n, q66, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10437
2019-11-27 14:28:48 +09:00
Ali Alzyod c7f37fe618 Efl.Text.Attribute_Factory
Summary:
Implementation of new Efl.Text.Attribute_Factory class which replace the annotation interface.

Currently, we have two public methods:

```
void efl_text_attribute_factory_attribute_insert(const Efl_Text_Cursor *start, const Efl_Text_Cursor *end, const char *format)
unsigned int efl_text_attribute_factory_attribute_clear(const Efl_Text_Cursor *start, const Efl_Text_Cursor *end);
```

Other methods will be internal methods, for the time being, we will redesign internal methods

Reviewers: woohyun, tasn, segfaultxavi, bu5hm4n, zmike

Subscribers: zmike, q66, cedric, segfaultxavi, bu5hm4n, a.srour, #committers, #reviewers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10646
2019-11-27 13:04:32 +09:00
junsu choi f1275e86f4 Efl.Canvas.Image: Add skeleton code Efl.Gfx.Frame_Controller.sector
Summary:
Sector is a property with start, end frame and sector name information
that can be used when playing a specific section.
Sector play is not supported for Efl.Canvas.Image yet.
So we add skeleton code with comments.
This is also for full implements of the Efl.Gfx.Frame_Controller interface.

Test Plan: N/A

Reviewers: Hermet, bu5hm4n

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10718
2019-11-26 11:01:28 +09:00
junsu choi b798f9146c Efl.Canvas.Vg.Container : Initialize mask buffer for SUB, INS composition.
Summary:
   If composite method is substract or intersect, buffer needs initialize.

Test Plan: N/A

Reviewers: Hermet, kimcinoo, smohanty

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10732
2019-11-25 19:04:30 +09:00
Hermet Park 58e09586bf evas vector: initialize data member properly.
user entry root should be initialized to null before accessing it.

in a certain scenario it could occur a crash with an invalid root data.

@fix
2019-11-25 13:28:38 +09:00
Ali Alzyod aeee3497af evas_textblock: cursor function null check at start
Reviewers: segfaultxavi, woohyun, lauromoura

Reviewed By: lauromoura

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10727
2019-11-22 15:34:27 -03:00
Lauro Moura b22594a10b text: Fix struct definition
Summary:
Efl_Text_Cursor_Handle was being declared twice, confusing the C#
generator. This commits updates it to be singly defined in the
text_types eot file.

Reviewers: segfaultxavi, ali.alzyod

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10726
2019-11-22 15:49:36 +01:00
Xavi Artigas 98ae0bb4cc Efl.Text.Cursor: Add missing documentation
This was breaking the C# bindings build.
2019-11-22 12:50:35 +01:00
Xavi Artigas 070c8f6ae9 docs: Remove repeated words
This had already been pointed out in the review.
2019-11-22 10:39:33 +01:00
Ali Alzyod d7352f4db4 Efl.Text.Cursor
Summary:
Implementation of new cursor text object.

This Patch Contains :
1- Remove Efl.Text.Cursor & Efl.Text_Markup_Interactive interfaces and replace them with one Class Efl.Text.Cursor
   => there are some modifications on cursor methods

2- Update all related classes to use Efl.Text.Cursor object instead of the old interfaces

3- If class uses Efl.Text_Cursor_Cursor (handle), mainly annotation it will stay as it is until we update other annotations into attribute_factory

4- Add main cursor property into efl.text.interactive

5- Add cursor_new method in efl.ui.text  (I think we may move it into efl.text.interactive interface)

There still some parts that need discussion: especially cursor movement functionality, I prefer to move function with Enum, instead of special function for each movement.

```
enum @beta Efl.Text.Cursor_Move_Type
{
   [[Text cursor movement types]]
   char_next,       [[Advances to the next character]]
   char_prev,       [[Advances to the previous character]]
   cluster_next,    [[Advances to the next grapheme cluster]]
   cluster_prev,    [[Advances to the previous grapheme cluster]]
   paragraph_start, [[Advances to the first character in this paragraph]]
   paragraph_end,   [[Advances to the last character in this paragraph]]
   word_start,      [[Advance to current word start]]
   word_end,        [[Advance to current word end]]
   line_start,      [[Advance to current line first character]]
   line_end,        [[Advance to current line last character]]
   paragraph_first, [[Advance to current paragraph first character]]
   paragraph_last,  [[Advance to current paragraph last character]]
   paragraph_next,  [[Advances to the start of the next text node]]
   paragraph_prev   [[Advances to the end of the previous text node]]
}
move {
         [[Move the cursor]]
         params {
            @in type: Efl.Text.Cursor_Move_Type; [[The type of movement]]
         }
         return: bool; [[True if actually moved]]
      }
```

or old way:
```
char_next {
         [[Advances to the next character]]
         // FIXME: Make the number of characters we moved by? Useful for all the other functions
         return: bool; [[True if actually moved]]
      }
      char_prev {
         [[Advances to the previous character]]
         return: bool; [[True if actually moved]]
      }

      char_delete {
         [[Deletes a single character from position pointed by given cursor.]]
      }

      cluster_next {
         [[Advances to the next grapheme cluster]]
         return: bool; [[True if actually moved]]
      }
      cluster_prev {
         [[Advances to the previous grapheme cluster]]
         return: bool; [[True if actually moved]]
      }

      // FIXME: paragraph_end is inconsistent with word_end. The one goes to the last character and the other after the last character.
      paragraph_start {
         [[Advances to the first character in this paragraph]]
         return: bool; [[True if actually moved]]
      }
      paragraph_end {
         [[Advances to the last character in this paragraph]]
         return: bool; [[True if actually moved]]
      }
      word_start {
         [[Advance to current word start]]
         return: bool; [[True if actually moved]]
      }
      word_end {
         [[Advance to current word end]]
         return: bool; [[True if actually moved]]
      }
      line_start {
         [[Advance to current line first character]]
         return: bool; [[True if actually moved]]
      }
      line_end {
          [[Advance to current line last character]]
         return: bool; [[True if actually moved]]
      }
      paragraph_first {
         [[Advance to current paragraph first character]]
         return: bool; [[True if actually moved]]
      }
      paragraph_last {
         [[Advance to current paragraph last character]]
         return: bool; [[True if actually moved]]
      }
      paragraph_next {
         [[Advances to the start of the next text node]]
         return: bool; [[True if actually moved]]
      }
      paragraph_prev {
         [[Advances to the end of the previous text node]]
         return: bool; [[True if actually moved]]
      }
```

Reviewers: woohyun, tasn, segfaultxavi

Reviewed By: woohyun

Subscribers: a.srour, bu5hm4n, segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10542
2019-11-22 17:35:54 +09:00
Marcel Hollerbach 17ba8515f1 efl_canvas_object_animation: fix possible invalid pointer
now if one of the event handlers calls animation_stop in a callback to
EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, then
pd->in will be freeed. Which means, in the next event handler the
address taken by &pd->in->progress might be invalid, leading to a crash.

With this commit this is a address on the stack, which should fix this.
2019-11-21 18:41:08 +01:00
Marcel Hollerbach eeff991076 efl_canvas_object_animation: make this all more safe
Summary:
when a callback is called, the in pointer might be free'ed, we should be
more carefull with that.

fix CID1407682

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10713
2019-11-21 13:06:41 +01:00
Hermet Park cf79e1f7e6 Revert "evas animation: removed unnecessray checking."
This reverts commit 959c503a71.
2019-11-21 17:45:36 +09:00
Hermet Park 959c503a71 evas animation: removed unnecessray checking.
pd->in is already verified earlier.
2019-11-21 17:26:21 +09:00
Jaehyun Cho a46bddc490 efl_canvas_object_animation: check if animation stops during animation
It is checked if animation stopped in the animation_progress,updated
callback by user.
2019-11-21 15:30:21 +09:00
Marcel Hollerbach aef56b169e remove efl_canvas_animation_player
this now all migrated to Efl.Canvas.Object.Animation

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10667
2019-11-20 10:03:50 +01:00
Marcel Hollerbach fa93893548 introduce efl_canvas_object_animation
this brings the animation to the canvas object. All the controls of the
animation now do now require a player object anymore, you can just use
the API that is directly on the Efl.Canvas.Object object.

wip animation player replacement

Differential Revision: https://phab.enlightenment.org/D10615
2019-11-20 09:58:24 +01:00
Hermet Park db68e45fed vector container: don't copy composite target duplicatedly.
Container copied composite target in prior to duplicate children,

the composite target is one of the children, it should skip to handle it again.
2019-11-20 14:11:08 +09:00
Hermet Park fd6e5081f9 evas vector: removed useless calls.
It turns out ector engine doesn't use any color mixing with gradients fill.
Removed unnecessarities unless we can find a way to use them in the future.
2019-11-19 13:26:50 +09:00
Hermet Park 54217cda84 evas image cache: drop cache properly,
the default reference is 1,
thus we should drop it unless if it's more than 1,
2019-11-18 13:08:40 +09:00
Hermet Park 618bce8038 evas vg: improve caching methods for better precise behaviors.
Previously, json file data won't be shared between instances.
Now, objects can share the json data if they use the same file resource.
2019-11-18 13:08:29 +09:00
junsu choi 288218527d efl_canvas_vg_node: Prevent access to NULL object for remove warning
Summary:
For remove this warning
WRN<3378>:eo ../src/lib/eo/eo.c:644 _efl_object_call_resolve() NULL passed to function efl_invalidated_get().

Test Plan: elementary_test -> animation_view

Reviewers: Hermet, kimcinoo, smohanty

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10627
2019-11-14 11:25:53 +09:00
junsu choi 04e3d8cc3d evas_device: Fix typo in evas_device_pop
Summary: Fix wrong null check

Test Plan: N/A

Reviewers: cedric, Jaehyun_Cho

Reviewed By: Jaehyun_Cho

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10648
2019-11-12 16:23:33 +09:00
junsu choi bcfffc07cf Efl.Gfx.Frame_Controller: Add sector property
Summary:
These APIs to get and set frames for a specific section for playing section.

Depends on D10505

Test Plan: N/A

Reviewers: Hermet, smohanty, kimcinoo

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10506
2019-11-12 14:30:10 +09:00
junsu choi 93551ca58e evas_cache_vg : Implements sector_get/set internal APIs
Summary:
These APIs to get and set frames for a specific section in vg animation.
get API looks for a sector by name in the markerlist of VG_File_Data.
Then return start and end frames.

Depends on D10504

Test Plan: N/A

Reviewers: Hermet, smohanty, kimcinoo

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10505
2019-11-12 14:29:50 +09:00
junsu choi ddaa5d1e6e vg_loader: Get markers information form json data.
Summary: If json data has marker information, it is stored in vg file data.

Test Plan: N/A

Reviewers: Hermet, smohanty, kimcinoo

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10504
2019-11-12 14:28:44 +09:00
Marcel Hollerbach 6b1de6a4ac efl_canvas_animation: correctly handle double signness
Summary:
start_delay and duration both have to be > 0.0 otherwise there should be
an error. This also adds the neccessary checks, to ensure that.

For now this is only added to the normal evas test suite, maybe we eed
to refactor these efl_* API tests into theire own test suite. However,
not for now.

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10617
2019-11-11 10:20:48 +01:00
Carsten Haitzler 39240fa3e7 Revert "evas_textblock: content fit feature"
This reverts commit 2f676a6591.

This causes segv's in edje_cc - i suspect the eet changes (or in combo
to how they are used in edje):

AddressSanitizer:DEADLYSIGNAL
=================================================================
==8991==ERROR: AddressSanitizer: SEGV on unknown address 0x000001010000 (pc 0xffff9f002604 bp 0xfffffa747700 sp 0xfffffa747700 T0)
==8991==The signal is caused by a READ memory access.
    #0 0xffff9f002600 in _eet_hash_gen ../src/lib/eet/eet_utils.c:25
    #1 0xffff9efdd024 in eet_dictionary_string_add ../src/lib/eet/eet_dictionary.c:103
    #2 0xffff9efbe324 in eet_data_put_string ../src/lib/eet/eet_data.c:849
    #3 0xffff9efc1c4c in eet_data_put_type ../src/lib/eet/eet_data.c:1427
    #4 0xffff9efd9128 in eet_data_put_unknown ../src/lib/eet/eet_data.c:4730
    #5 0xffff9efdb320 in _eet_data_descriptor_encode ../src/lib/eet/eet_data.c:5108
    #6 0xffff9efd5958 in eet_data_put_variant ../src/lib/eet/eet_data.c:4309
    #7 0xffff9efdb320 in _eet_data_descriptor_encode ../src/lib/eet/eet_data.c:5108
    #8 0xffff9efd9270 in eet_data_put_unknown ../src/lib/eet/eet_data.c:4739
    #9 0xffff9efdb320 in _eet_data_descriptor_encode ../src/lib/eet/eet_data.c:5108
    #10 0xffff9efd8ca0 in eet_data_put_array ../src/lib/eet/eet_data.c:4692
    #11 0xffff9efdb320 in _eet_data_descriptor_encode ../src/lib/eet/eet_data.c:5108
    #12 0xffff9efc7768 in eet_data_write_cipher ../src/lib/eet/eet_data.c:2403
    #13 0xffff9efc78a4 in eet_data_write ../src/lib/eet/eet_data.c:2420
    #14 0xaaaabb151dcc in data_thread_group ../src/bin/edje/edje_cc_out.c:2045
    #15 0xaaaabb152130 in data_write_groups ../src/bin/edje/edje_cc_out.c:2086
    #16 0xaaaabb157734 in data_write ../src/bin/edje/edje_cc_out.c:2866
    #17 0xaaaabb14122c in main ../src/bin/edje/edje_cc.c:456
    #18 0xffff9dbd92a0 in __libc_start_main (/usr/lib/aarch64-linux-gnu/libc.so.6+0x242a0)
    #19 0xaaaabb13ea00  (/home/raster/C/git/efl/build/src/bin/edje/edje_cc+0x38a00)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ../src/lib/eet/eet_utils.c:25 in _eet_hash_gen
==8991==ABORTING
Aborted (core dumped)

When compiling breaks... it's certainly time to revert ASAP :(
2019-11-07 10:23:58 +00:00
Lauro Moura cd467051af efl: Make stable single-valued getters consistent.
Summary:
Instead of a getter with an explicit return type, change it to be a
single-valued property.

The eolian C generator takes care of making this single value the actual
return value of the C function.

This also makes these properties able to be reflected on.

The stack properties returns just a pointer and not a new ref, so no
@move needed.

Beta properties will be handled in a future commit.

Depends on D10601

Reviewers: segfaultxavi, bu5hm4n, q66, cedric

Reviewed By: segfaultxavi

Subscribers: #reviewers, #committers, brunobelo, felipealmeida

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10602
2019-11-06 23:47:39 -03:00
Xavi Artigas 8a5976666b docs: Add caveat details to Efl.Canvas.Animation
Summary:
Regarding object properties not matching actual rendered values when animations
are running.

Depends on D10560

Reviewers: bu5hm4n, cedric, zmike, Jaehyun_Cho

Reviewed By: bu5hm4n

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10566
2019-11-06 15:16:43 +01:00
Lauro Moura d4d9ecc92f eolian: Imply @no_unused if @move in return.
Summary:
This makes sure the user is warned if it ignores a return value that
could potentially be a memory leak.

This also makes possible to use `value {}` blocks with `@move` instead
of value-less properties with `@no_unused`.

Also removed the `@move` from canvas_text_async_layout as it is ignored
in the only place it is used.

Reviewers: q66

Reviewed By: q66

Subscribers: #reviewers, #committers, bu5hm4n, felipealmeida, cedric, segfaultxavi

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10601
2019-11-05 16:54:17 -03:00
Ali Alzyod 2f676a6591 evas_textblock: content fit feature
Summary:
**Content Fit Feature for Evas_Object_Textblock**

This Feature is available at **Evas **object level.  And **Edje **level (where it is internally use evas functionality)
This feature will allow text block to fit its content font size to proper size to fit its area.

**Main Properties:**
Fit Modes        :   None=Default, Width, Height, All [Width+Height]
Fit Size Range :   Contains maximum and minimum font size to be used (and in between).
Fit Step Size    :   Step(Jump) value when trying fonts sizes between Size_Range max and min.
Fit Size Array   :   Other way to resize font, where you explicitly select font sizes to be uses    (for example [20, 50, 100] it will try 3 sizes only)

Text Fit feature was available in Edje but:
1- It doesn't effected by ellipsis or warping in font style (or do not handle the in right way)
2- Accuracy is not good (specially if you have fix pixel size elements (spaces,tabs,items))
3- No (Step size, Size Array) available.

Test Plan:
To check the Feature
> elementary_test
> fit
> textbock fit
You can modify all the modes and properties

These are two examples, One using Evas other uses Edje

**Evas**

```
#include <Elementary.h>

enum BUTTON{
   BUTTON_MODE             = 0,
   BUTTON_MAX              = 1,
   BUTTON_MIN              = 2,
   BUTTON_STEP             = 3,
   BUTTON_ARRAY            = 4,
   BUTTON_CONTENT          = 5,
   BUTTON_STYLE            = 6,
   BUTTON_ALL              = BUTTON_STYLE+1,
};

char* BUTTON_STR[BUTTON_ALL] ={
   "MODE",
   "MAX",
   "MIN",
   "STEP",
   "ARRAY",
   "CONTENT",
   "STYLE",
};

char *contents[] = {
   "Hello World",
   "This is Line<br>THis is other Line",
   "This text contains <font_size=20 color=#F00>SPECIFIC SIZE</font_size> that does not effected by fit mode"
   };

char *styles[] = {
   "DEFAULT='font=sans font_size=30 color=#000 wrap=mixed ellipsis=1.0'",
   "DEFAULT='font=sans font_size=30 color=#000 wrap=mixed'",
   "DEFAULT='font=sans font_size=30 color=#000 ellipsis=1.0'",
   "DEFAULT='font=sans font_size=30 color=#000'",
   };

char *styles_names[] = {
   "wrap=<color=#F00>mixed</color> ellipsis=<color=#F00>1.0</color>",
   "wrap=<color=#F00>mixed</color> ellipsis=<color=#F00>NONE</color>",
   "wrap=<color=#F00>NONE</color> ellipsis=<color=#F00>1.0</color>",
   "wrap=<color=#F00>NONE</color> ellipsis=<color=#F00>NONE</color>",
   };

typedef struct _APP
{
   Evas_Object *win, *box, *txtblock,*bg, *boxHor, *boxHor2;
   Eo *btn[BUTTON_ALL];
   Eo *lbl_status;
   char * str;
   unsigned int i_contnet, i_style;
} APP;
APP *app;

char * get_fit_status(Eo * textblock);

static void _btn_clicked(void *data EINA_UNUSED, Eo *obj, void *eventInfo EINA_UNUSED){
   if (obj == app->btn[BUTTON_MODE])
     {
        unsigned int options;
        evas_textblock_fit_options_get(app->txtblock, &options);
        if (options == TEXTBLOCK_FIT_MODE_NONE)
           evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_HEIGHT);
        else if (options == TEXTBLOCK_FIT_MODE_HEIGHT)
           evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_WIDTH);
        else if (options == TEXTBLOCK_FIT_MODE_WIDTH)
           evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_ALL);
        else if (options == TEXTBLOCK_FIT_MODE_ALL)
           evas_textblock_fit_options_set(app->txtblock, TEXTBLOCK_FIT_MODE_NONE);
     }
   else if (obj == app->btn[BUTTON_MAX])
     {
        unsigned int min, max;
        evas_textblock_fit_size_range_get(app->txtblock, &min, &max);
        max -= 5;
        evas_textblock_fit_size_range_set(app->txtblock, min, max);
     }
   else if (obj == app->btn[BUTTON_MIN])
     {
        unsigned int min, max;
        evas_textblock_fit_size_range_get(app->txtblock, &min, &max);
        min += 5;
        evas_textblock_fit_size_range_set(app->txtblock, min, max);
     }
   else if (obj == app->btn[BUTTON_STEP])
     {
        unsigned int step;
        evas_textblock_fit_step_size_get(app->txtblock, &step);
        step++;
        evas_textblock_fit_step_size_set(app->txtblock, step);
     }
   else if (obj == app->btn[BUTTON_ARRAY])
     {
        unsigned int font_size[] = {10, 50, 100 ,150};
        evas_textblock_fit_size_array_set(app->txtblock,font_size,4);
     }
   else if (obj == app->btn[BUTTON_CONTENT])
     {
        app->i_contnet++;
        if(app->i_contnet>=sizeof(contents)/sizeof(char*))
           app->i_contnet=0;
        evas_object_textblock_text_markup_set(app->txtblock,contents[app->i_contnet]);
     }
   else if (obj == app->btn[BUTTON_STYLE])
     {
        app->i_style++;
        if(app->i_style>=sizeof(styles)/sizeof(char*))
           app->i_style=0;

        Evas_Textblock_Style *style = evas_object_textblock_style_get(app->txtblock);
        evas_textblock_style_set(style,styles[app->i_style]);
     }

   elm_object_text_set(app->lbl_status, get_fit_status(app->txtblock));
}

char * get_fit_status(Eo * textblock)
{
   static char status[0xFFF];
   unsigned int options,min,max,step,size_array[256];
   size_t size_array_len;
   evas_textblock_fit_options_get(textblock,&options);
   evas_textblock_fit_size_range_get(textblock,&min,&max);
   evas_textblock_fit_step_size_get(textblock,&step);
   evas_textblock_fit_size_array_get(textblock,NULL,&size_array_len,0);
   if (size_array_len>255)
      size_array_len = 255;
   evas_textblock_fit_size_array_get(textblock,size_array,NULL,size_array_len);

   strcpy(status,"Mode : ");
   if (options == TEXTBLOCK_FIT_MODE_NONE)
      strcat(status,"MODE_NONE");
   else if (options == TEXTBLOCK_FIT_MODE_HEIGHT)
      strcat(status,"MODE_HEIGHT");
   else if (options == TEXTBLOCK_FIT_MODE_WIDTH)
      strcat(status,"MODE_WIDTH");
   else if (options == TEXTBLOCK_FIT_MODE_ALL)
      strcat(status,"MODE_ALL");

   strcat(status,"<br>");
   sprintf(status + strlen(status),"Max   : %d<br>",max);
   sprintf(status + strlen(status),"Min   : %d<br>",min);
   sprintf(status + strlen(status),"Step  : %d<br>",step);
   sprintf(status + strlen(status),"Array  : [ ");
   for (size_t i = 0 ; i < 10 ; i++)
     {
        if(i<size_array_len)
           sprintf(status + strlen(status)," %d,",size_array[i]);
     }

   if(10<size_array_len)
      sprintf(status + strlen(status)," ... ");
   sprintf(status + strlen(status)," ]");

   sprintf(status + strlen(status),"<br>");
   sprintf(status + strlen(status),"%s",styles_names[app->i_style]);

   return status;
}

int elm_main(int argc, char **argv)
{
  app = calloc(sizeof(APP), 1);

   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);

   app->win = elm_win_util_standard_add("Main", "App");
   elm_win_autodel_set(app->win, EINA_TRUE);

   app->box = elm_box_add(app->win);
   app->boxHor = elm_box_add(app->box);
   app->boxHor2 = elm_box_add(app->box);
   app->txtblock = evas_object_textblock_add(app->box);
   app->bg = elm_bg_add(app->box);
   elm_bg_color_set(app->bg,255,255,255);

   Evas_Textblock_Style *style = evas_textblock_style_new();
   evas_textblock_style_set(style,styles[0]);
   evas_object_textblock_style_set(app->txtblock,style);
   evas_object_textblock_text_markup_set(app->txtblock,contents[0]);

   elm_box_horizontal_set(app->boxHor, EINA_TRUE);
   elm_box_horizontal_set(app->boxHor2, EINA_TRUE);

   evas_object_size_hint_weight_set(app->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(app->box, EVAS_HINT_FILL, EVAS_HINT_FILL);

   evas_object_size_hint_weight_set(app->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(app->box, EVAS_HINT_FILL, EVAS_HINT_FILL);

   evas_object_show(app->txtblock);
   evas_object_show(app->bg);
   evas_object_show(app->box);
   evas_object_show(app->boxHor);
   evas_object_show(app->boxHor2);

   elm_box_pack_end(app->box, app->bg);
   elm_box_pack_end(app->box, app->boxHor);
   elm_box_pack_end(app->box, app->boxHor2);

   elm_object_content_set(app->bg,app->txtblock);

   elm_win_resize_object_add(app->win, app->box);
   evas_object_resize(app->win, 320, 480);

   for(int i = 0 ; i < BUTTON_ALL ; i++)
     {
        app->btn[i] = elm_button_add(app->boxHor);
        evas_object_smart_callback_add(app->btn[i], "clicked", _btn_clicked, NULL);
        elm_object_text_set(app->btn[i], BUTTON_STR[i]);
        elm_box_pack_end(app->boxHor, app->btn[i]);
        evas_object_show(app->btn[i]);
     }

   app->lbl_status = elm_label_add(app->boxHor2);
   elm_object_text_set(app->lbl_status, get_fit_status(app->txtblock));
   elm_box_pack_end(app->boxHor2, app->lbl_status);
   evas_object_show(app->lbl_status);

   evas_object_size_hint_weight_set(app->txtblock, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(app->txtblock, EVAS_HINT_FILL, EVAS_HINT_FILL);

   evas_object_size_hint_weight_set(app->bg, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(app->bg, EVAS_HINT_FILL, EVAS_HINT_FILL);

   evas_object_show(app->win);
   elm_run();
   return 0;
}

ELM_MAIN()
```

**Edje**

```
// compile: edje_cc source.edc
// run: edje_player source.edje
collections {
   styles
   {
      style
      {
         name: "text_style";
         base: "font=sans font_size=30 color=#FFF wrap=mixed ellipsis=1.0";
         tag: "br" "\n";
         tag: "ps" "ps";
         tag: "tab" "\t";
         tag: "b" "+ font_weight=Bold";
      }
   }
   group {
      name: "my_group"; // must be the same as in source.c
      parts {

         part
         {
            name: "background";
            type: RECT;
            scale: 1;
            description
            {
               color: 0 0 0 0;
               rel1.relative: 0.0 0.0;
               rel2.relative: 1.0 1.0;
            }
         }

         part
         {
            name: "text";
            type: TEXTBLOCK;
            scale: 1;
            entry_mode: NONE;
            effect: OUTLINE_SHADOW;
            description
            {
               state: "default" 0.0;
               rel1.to : "background";
               rel1.relative: 0.0 0.0;
               rel2.to : "background";
               rel2.relative: 1.0 1.0;
               text
               {
                  style: "text_style";
                  align: 0.0 0.0;
                  text: "Hello World This is Me";
                  fit: 1 1;
                  fit_step: 1;
                  size_range: 30 200;
                  //fit_size_array: 20 40 60 80 100 200;
               }
            }
         }
      }
   }
}
```

Found Task T5724 relative to this Feature

Reviewers: woohyun, bowonryu, cedric, raster

Subscribers: #committers, #reviewers, cedric

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9280
2019-11-05 20:40:59 +09:00
Shinwoo Kim 51169ac325 evas filter: Implement inverse color filter
Summary: This is the first version of inverse color filter both GL and SW.

Test Plan:
1. Create filter_example with following .
efl_gfx_filter_program_set(image, "inverse_color ()", "inverse color");

2. Run.
./filter_example (Use ELM_ACCEL=gl for GL engine)

Reviewers: Hermet, jsuya

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10335
2019-11-05 10:45:14 +09:00
Xavi Artigas 0e71e0e286 docs: Polish Efl.Canvas.Animation_Group and sons
Summary: These docs were almost empty.

Reviewers: bu5hm4n, zmike, cedric, Jaehyun_Cho

Reviewed By: cedric

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10564
2019-11-04 13:51:21 +01:00
Marcel Hollerbach 56d541fbdb efl_canvas_animation: improve generally
Summary:
to be taken over by doccop
Depends on D10559

Reviewers: Jaehyun_Cho, bu5hm4n

Reviewed By: bu5hm4n

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10560
2019-11-04 13:46:49 +01:00
Xavi Artigas dc5ffbb866 docs: Polish Efl.Canvas.Animation_*
Summary:
These docs were lacking a lot of detail.

Depends on D10562

Reviewers: bu5hm4n, cedric, zmike, Jaehyun_Cho

Reviewed By: cedric

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10565
2019-11-04 13:06:53 +01:00
Marcel Hollerbach a1a77f5590 efl_canvas_animation_translate: move from x&y to container types
Summary:
this now uses Eina.Position2D so its easier to pass arround other
positions.

ref T8288
Depends on D10559

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8288

Differential Revision: https://phab.enlightenment.org/D10562
2019-11-04 13:06:53 +01:00
Marcel Hollerbach e2a011f56b efl_canvas_animation_scale: move from 2 doubles to vectors
Summary:
with this the passing of positions is getting more easy. Additionally,
Reading the API call gets easier, as parameters are semantically
grouped.
Depends on D10558

Reviewers: segfaultxavi, Jaehyun_Cho

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8288

Differential Revision: https://phab.enlightenment.org/D10559
2019-11-04 13:06:53 +01:00
Marcel Hollerbach 92a4fab5d7 efl_canvas_animation: be more explicit with errors
Summary:
with this commit invalid values are not accepted silently anymore. But
rather a error will be raised.
Depends on D10350

Reviewers: segfaultxavi, Jaehyun_Cho

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8288

Differential Revision: https://phab.enlightenment.org/D10558
2019-11-04 13:06:53 +01:00
Marcel Hollerbach f47b927745 efl_canvas_animation_rotate: adjust API
Summary:
in task T8288 we concluded that a few APIs need to be adjusted in order
to stabelize animation classes at some point. This also adds a new macro
to eina in order to create EINA_VECTOR2 values more easily.

ref T8288

Reviewers: Jaehyun_Cho, segfaultxavi, zmike

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8288

Differential Revision: https://phab.enlightenment.org/D10350
2019-11-04 13:06:53 +01:00
Cedric BAIL 81165d743f efl: fix include due to stale files.
Reviewers: zmike

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10583
2019-10-31 15:43:21 -04:00
Cedric Bail a9227fd530 evas: move watching over destruction of device to custom logic due to high use.
Summary:
This specific EFL_EVENT_DEL handler was registered thousand of time alone on
an Evas device. Potential solution are to improve handling of this kind of large
scale callback logic or just not take that path. I find it easier to have a custom
code in this case to handle the destruction of Evas device and avoid this
thousand of callback.

Depends on D10492

Reviewers: zmike, raster, bu5hm4n, Hermet

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8321

Differential Revision: https://phab.enlightenment.org/D10493
2019-10-31 13:29:56 -04:00
Cedric Bail 21f07b9fa9 evas: deprecate evas_device_parent_set.
Summary:
It is unlikely that the code was working before and it was a bad idea
anyway. There is no user of this API in EFL.

Depends on D10490

Reviewers: zmike, raster, bu5hm4n, Hermet

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8321

Differential Revision: https://phab.enlightenment.org/D10491
2019-10-31 13:29:56 -04:00
Cedric Bail 3fd6693764 evas: move exposed internal structure of Efl_Input_Device to be private.
Summary: Depends on D10489

Reviewers: zmike, raster, bu5hm4n, Hermet

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8321

Differential Revision: https://phab.enlightenment.org/D10490
2019-10-31 13:29:56 -04:00
Cedric Bail 7dc98ab3d0 evas: move efl_input_device into evas/Efl_Canvas.h
Summary:
The internal and the API we would like is mostly a canvas API. A lot of the code
in evas is working around the fact that efl_input_device is not defined inside Evas.
This patch is the first step to try to clean this up.

Depends on D10487

Reviewers: zmike, raster, bu5hm4n, Hermet

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8321

Differential Revision: https://phab.enlightenment.org/D10488
2019-10-31 13:29:56 -04:00
Carsten Haitzler 80d317f20e evas - revert evas variation sequence support - out of bound accesses
This code is filled with out of bounds accesses now after the reverted
patch. All those base_char+1, itr+1 etc. in
evas_common_font_query_run_font_end_get() are accessing BEYOND
the end of the run. textgrid shows this instantly to fall over as it
uses single unicode codepoint chars with no nul terminator. As this
api takes an explicit run_len we should never access beyond the end of
the run_len.

Please revisit this code and keep in mind proper memory/bounds
accessing. If there was ano run_len and it assumed strings were
regular strings that had to be nul terminated... then it might be ok,
but not here.

of course if i put in guards for these +1's then it ends up in
infintie loops, so enough debugging and send it back for a rethink. :)

....

Revert "evas_object_textblock: add support for variation sequences"

This reverts commit 46f2d8acdc.
2019-10-31 12:31:52 +00:00
Mike Blumenkrantz 1d62c95a2a evas/font: simplify handling strings when constructing font names
no need to strcpy here when we can just pass the length to stringshare directly

CID 1382854

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10441
2019-10-30 08:49:05 -07:00
Mike Blumenkrantz f4019d3303 eina: add comparison macros for Eina_Size2D and Eina_Position2D
Summary:
I'm tired of typing all this out. it's exhausting.

also add a couple usages internally to verify that this works as expected

@feature

Reviewers: cedric, bu5hm4n, devilhorns

Reviewed By: devilhorns

Subscribers: devilhorns, bu5hm4n, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10557
2019-10-29 14:52:58 -04:00
Marcel Hollerbach 28f630ba41 meson: redo evas building
Summary:
before recent times we had to support static and shared building based
on the options of the user, which forced us to complicate our build with
the evas_goal hack. the evas_goal hack more or less was the idea of
"faking" the evas build in the evas directory, finish all the .eo
generation there, then build the modules and make all the static files
ready. Then build everything in evas_goal.

Now, that we just build everything the same always, we can simply build
it in the evas way (removing the evas_goal hack FINALLY), as the same modules
are build statically and shared.
This also gives us the possibility to build the shared image loaders
*again* the the modules directory, which unbreaks peoples build scripts
who packaged loader files seperatly.

Reviewers: zmike, raster, cedric, stefan_schmidt

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10548
2019-10-29 12:54:56 -04:00
Cedric BAIL 4329b88df4 evas: disable Eina Cow Garbage Collection on dynamic content.
Summary:
Dynamic content are likely to trigger an image state change at pretty
much every frame. This lead to unecessary attempt by Eina_Cow to
deduplicate/cleanup data that are changing all the time. This reduce
memory consumption in Expedite tests that in some small amount. The
gain get bigger the more animation you get on screen. There might be
other potential gain for heavy animated case.

Reviewers: zmike, Hermet, bu5hm4n, smohanty

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8302

Differential Revision: https://phab.enlightenment.org/D10532
2019-10-25 15:45:14 -04:00
Ali Alzyod 46f2d8acdc evas_object_textblock: add support for variation sequences
Summary: update font processing to handle variation sequences unicodes to select proper glypg in respect to variation seqences

Test Plan:
```
#define EFL_EO_API_SUPPORT 1
#define EFL_BETA_API_SUPPORT 1
#include <Eina.h>
#include <Efl.h>
#include <Elementary.h>

EAPI_MAIN int
elm_main(int argc, char **argv)
{
   Evas_Object *win, *textblock;

   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);

   win = elm_win_util_standard_add("Main", "");
   elm_win_autodel_set(win, EINA_TRUE);
   textblock = evas_object_textblock_add(win);
   efl_canvas_text_style_set(textblock,NULL,"DEFAULT='font=DejaVuSans font_fallbacks=SamsungColorEmoji color=#000 font_size=20'");
   evas_object_textblock_text_markup_set(textblock, "8&#xfe0f;&#x20E3;&#x262a;&#xfe0f;AAA&#x262a;&#xfe0E;1234567&#xfe0f;&#x20E3;");

   evas_object_size_hint_weight_set(textblock, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(textblock, EVAS_HINT_FILL, EVAS_HINT_FILL);
   evas_object_show(textblock);
   evas_object_move(textblock, 0, 0);
   evas_object_resize(textblock, 320, 320);
   evas_object_resize(win, 320, 320);
   evas_object_show(win);
   elm_run();
   return 0;

}

ELM_MAIN()

```

Reviewers: woohyun, bowonryu, segfaultxavi, cedric, bu5hm4n

Reviewed By: woohyun, cedric

Subscribers: bu5hm4n, subodh6129, herdsman, segfaultxavi, zmike, cedric, #committers, #reviewers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9053
2019-10-19 14:01:36 +09:00
Mike Blumenkrantz 3b161da0ce evas/language: #ifdef guard variable which is only used inside #ifdef
Summary:
this variable is already only changed inside an #ifdef, so declare and
free it only inside the same ifdef for clarity

ref 9d9aa8b6ae
CID 1400807

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10389
2019-10-18 13:28:41 -04:00
Woochanlee 484a482942 gesture_manager: Deleted function and definition that are no more use.
Summary:
D7762

Searching for event what is using in gesture manager.
But the value was wrong.

And now D10437 made it better.

Reviewers: Hermet, smohanty, zmike

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10438
2019-10-17 10:41:15 -04:00
junsu choi 59419006b8 efl_canvas_vg : Propagates the alpha color of the parent
Summary:
The current color is affected by the parent's opacity.
If p_opacity is set, it will be applied to the current color.

Test Plan: N/A

Reviewers: Hermet, smohanty, kimcinoo

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10399
2019-10-16 15:12:13 +09:00
Mike Blumenkrantz dc5c17a104 evas/render: selectively inhibit render callbacks
Summary:
only call these if they are subscribed to now

ref T8321

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8321

Differential Revision: https://phab.enlightenment.org/D10361
2019-10-14 09:30:17 -04:00
Mike Blumenkrantz 78ea96af89 evas/smart: inhibit smart member add/del callbacks when no subscribers exist
Summary:
this is triggered a ton on app startup

ref T8321
Depends on D10357

Reviewers: bu5hm4n, cedric

Reviewed By: bu5hm4n, cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8321

Differential Revision: https://phab.enlightenment.org/D10358
2019-10-14 09:29:57 -04:00
Mike Blumenkrantz f174bf2eb2 evas/smart: print actual errors when smart api functions are called on non-smarts
Summary:
this is an error, and it should be printed
Depends on D10355

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10356
2019-10-14 09:29:43 -04:00
Mike Blumenkrantz 3175690466 evas/smart: inhibit evas-internal smart callbacks when there are no subscribers
Summary:
we know these ahead of time since they're hardcoded, so we can block their
emission just like we do for eo events

ref T8321
Depends on D10354

Reviewers: cedric

Reviewed By: cedric

Subscribers: bu5hm4n, cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8321

Differential Revision: https://phab.enlightenment.org/D10355
2019-10-14 09:29:37 -04:00
Mike Blumenkrantz e96d18b046 evas/callbacks: emit hardcoded legacy smart callbacks always
Summary:
these are not strictly related to the event callback types and should not
have their emission tied to the corresponding event

also add unit test to verify all of these

@fix

Reviewers: cedric

Reviewed By: cedric

Subscribers: bu5hm4n, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10353
2019-10-14 09:29:23 -04:00
Hermet Park 68c824e3e9 canvas vg: don't draw images if it's full transparent. 2019-10-14 17:53:53 +09:00
WooHyun Jung 247331363a eolian: fix eolian errors with EOLIAN_ENFORCE_SINCE=1
Summary:
This is not the end of fixing eolian errors. I need to keep fixing
more.

Test Plan:
1. export EOLIAN_ENFORCE_SINCE=1
2. ninja

Reviewers: q66, segfaultxavi, zmike, bu5hm4n, Jaehyun_Cho

Reviewed By: segfaultxavi, Jaehyun_Cho

Subscribers: Jaehyun_Cho, stefan_schmidt, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10370
2019-10-14 16:55:52 +09:00
Shinwoo Kim 431d62d095 evas filter: Implement grayscale filter in SW
Summary: Initial version implementing grayscale filter in SW.

Test Plan:
1. Create filter_example with following.
efl_gfx_filter_program_set(image, "grayscale ()", "grayscale");

1. Run.
./filter_example

Reviewers: Hermet, jsuya

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10219
2019-10-14 11:13:40 +09:00
Shinwoo Kim f0b8c6b94e evas filter: preserve text source color
Summary:
The filter did not use text source color. Whatever color a text has, filter
used white color instead of it.

Test Plan: efl_gfx_filter_program_set(non_white_color_text, "code", "name");

Reviewers: Hermet, jsuya, cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10336
2019-10-14 11:11:40 +09:00
Shinwoo Kim 8da73f9a68 evas_cache_image: drop image after replacement
Summary:
When a newly created Image_Entry works for instead of an old one,
we need to drop it. And we did dorp it.

The line calling ref and drop was added by following commit.

   d550190 evas image cache - add lots more locking to try stamp out
           any thread bug

But it is missed by following commit.

   9f99ab1 evas cache: clear up caching locking and reference count.

Reviewers: Hermet, raster, jsuya, cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10333
2019-10-14 11:07:27 +09:00
Mike Blumenkrantz 9d9aa8b6ae evas/language: #ifdef guard variable which is only used inside #ifdef
Summary:
this variable is already only changed inside an #ifdef, so declare and
free it only inside the same ifdef for clarity

CIDs 1401016, 1400807

Reviewers: cedric

Reviewed By: cedric

Subscribers: bu5hm4n, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10320
2019-10-11 10:03:17 -04:00
Marcel Hollerbach dd093de23c efl_canvas_animation_player: fix double free
Summary:
when we are returning 0 in a animation callback, the animator will be
deleted.

This fixes a crash in tab_pager.
Depends on D10306

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10307
2019-10-11 10:03:17 -04:00
junsu choi 6b2504ba56 evas_vg_cache: Hashkey of cache use value provider list
Summary:
Even if the same window, the same file, and the same size,
different images may be requested due to property changes caused by value_provider.

Test Plan: N/A

Reviewers: Hermet, smohanty, kimcinoo

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10303
2019-10-08 20:33:20 +09:00
Xavi Artigas 5a447ed327 docs: Remove redundant documentation
Lots of EO files had the same information at the property and set/get level.
Removed the redundant bits, and moved to the property level the common ones.
Set and Get documentation should be used only to clarify setter-only or
getter-only behavior.
2019-10-07 16:40:50 +02:00
Carsten Haitzler f8e027c395 build - efl run in tree - make exception for image loaders/savers
due to meson's insistence on naming even moudles libmodule.so, and our
complexity of build as in the previous commits ... have a special case
for in tree module loading for these.
2019-10-05 20:00:52 +01:00
Xavi Artigas 5e5aac5006 evas: silence compiler warning in textblock
Uninitialized variable.
2019-10-02 16:37:33 +02:00
junsu choi 779bd0539e vg_common_json: Override value_provider list
Summary:
If value_provider is applied to Efl.Ui.Animation_View, it is passed as vector object.
The passed value_provider list passes to Vg_File_Data.
If there is a value_Provider list in Vg_File_Data,
it apply the property to Lottie_Animation using lottie_animation_property_override api.

Depends on D9874

Test Plan:
...

Eo *vp = efl_add(EFL_GFX_VG_VALUE_PROVIDER_CLASS, p);
efl_gfx_vg_value_provider_keypath_set(vp, "**");
efl_gfx_vg_value_provider_fill_color_set(vp, 100, 0 ,0 ,255);
efl_ui_animation_view_value_provider_override(anim_view, vp);

vp = efl_add(EFL_GFX_VG_VALUE_PROVIDER_CLASS, p);
efl_gfx_vg_value_provider_keypath_set(vp, "**");
efl_gfx_vg_value_provider_stroke_width_set(vp, 50.0);
efl_gfx_vg_value_provider_stroke_color_set(vp, 0, 255, 0, 100);
efl_ui_animation_view_value_provider_override(anim_view, vp);
...

Reviewers: Hermet, kimcinoo, smohanty

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9897
2019-10-02 14:30:06 +09:00
junsu choi 6deb21f9f9 Efl.Gfx.Vg.Value_Provider: Introduce property change feature of Efl.Ui.Animation_View
Summary:
Efl.Gfx.Vg.Value_Provider is an object for integrating and managing the properties of vector objects.
These values are dependent on the keypath.
Keypath is the target a specific content or a set of contents that will be updated.
It can include the specific name of the contents, wildcard(*) or Globstar(**).

The valueProvider is borrowed from another library that uses a vector object of type json, such as Efl.Ui.Animation_View
(5fc0e59e0c/lottie-swift/src/Public/iOS/AnimatedControl.swift (L50))

This feature should be used with some patches that apply to the vg json loader and Efl.Canvas.Vg.Object.

Test Plan: N/A

Reviewers: Hermet, kimcinoo, smohanty

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9874
2019-10-02 14:19:30 +09:00
Hermet Park 94c193e40b Revert "evas map: diable high quality texture mapping feature."
This reverts commit 3787050515.

This patch should go on.
2019-10-02 11:43:32 +09:00
Daniel Kolesa 71c83d2005 efl: add code to enforce presence of @since tags
This is not yet enabled because there's too many instances where
this is broken.

Ref T7704
2019-09-30 20:12:35 +02:00
Marcel Hollerbach f324e9fc11 efl_canvas_animation_player: improve docs
Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10250
2019-09-30 17:18:52 +02:00
Mike Blumenkrantz 34a21d7ef9 efl/canvas: add Efl_Canvas.h
this includes all the efl.canvas headers and adds some compilation tests
for the header to the unit test suite

ref T8274

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D10226
2019-09-30 10:33:24 +02:00
Hermet Park 3787050515 evas map: diable high quality texture mapping feature.
This is a little bit buggy, need to make it stablize further.

Temporarily diable this for 1.23 release.
2019-09-30 16:54:45 +09:00
Shinwoo Kim 081e318d90 evas filter: Implement grayscale filter in pure GL
Summary:
Initial version implementing grayscale filter in pure GL.
This patch needs a logt of love as 5bce712 did.

Grasyscale formula:
https://www.tutorialspoint.com/dip/grayscale_to_rgb_conversion.htm

Test Plan:
1. Create filter_example with following .
efl_gfx_filter_program_set(image, "grayscale ()", "grayscale");

2. Run.
ELM_ACCEL=gl ./filter_example

Reviewers: Hermet, jsuya

Subscribers: ali.alzyod, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9858
2019-09-27 15:35:03 +09:00
Cedric Bail 29beda7f4f evas: fix memory leak with Efl.Canvas.Vg
Summary:
It is not correct to change the parent and hope that refcount will work
for you. The parent chain is a decision made by the user, not something
a widget can touch. Only ref count are to be used when given an outside
object. As things where not triggering destruction, there was also no
point where the image buffer would be getting to zero and be freed. This
commit also fix this.

Reviewers: Hermet, zmike

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10169
2019-09-27 14:19:38 +09:00
Mike Blumenkrantz 6443120eb3 evas/object; fix null deref
Summary:
_efl_canvas_object_clipper_prev_reset() derefs obj->cur

CID 1396985
Depends on D10211

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10212
2019-09-26 18:00:05 -04:00
Daniel Kolesa 6d93dc4cbf eolian: rename event_prefix to event_c_prefix for consistency 2019-09-26 16:47:22 +02:00
Shinwoo Kim 5fa21a9629 evas_callbacks: check if obj is NULL before using it
Summary:
evas_object_callbacks_finalized could take NULL obj because
_efl_canvas_object_efl_object_finalize could call it with NULL obj.

Reviewers: bu5hm4n, jsuya, Hermet

Reviewed By: bu5hm4n

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10141
2019-09-25 06:53:53 -04:00
Mike Blumenkrantz 4b9d85173b efl/player: progress -> playback_progress
no functional changes

ref T7877

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10116
2019-09-24 15:23:18 -07:00
Mike Blumenkrantz b730443e2d efl/player: play_speed -> playback_speed
no functional changes

ref T7877

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10115
2019-09-24 15:23:16 -07:00
Mike Blumenkrantz 3d3cdc5955 efl/player: rename 'play' property to 'pause'
this is a bit of an overhaul wherein the existing 'play' mechanics are
all inverted. 'pause' is a state which stops playback but does not affect
the playback_position property.

this patch also includes implementations of Efl.Player::playing for
a couple classes which (now) only implement pause, as this is a requirement
for the objects to actually activate their animations

test cases:
* unit tests
* all elm_test animation cases
* elm_test video
* rage

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10114
2019-09-24 15:23:15 -07:00
Mike Blumenkrantz 89bee7a11a efl/player: merge start+stop methods into 'playing' property
this has some overlap with the existing 'play' property which will
soon be renamed. the intent here is that there is a property for
controlling the 'playing' state and then another property for managing
'pausing' the play state

ref T7877

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D10113
2019-09-24 15:23:13 -07:00