Commit Graph

4764 Commits

Author SHA1 Message Date
Mike Blumenkrantz c37e545a03 Revert "evas: Compile out unused functions"
Summary:
This reverts commit 7d36ef88bc.
Depends on D11338

Reviewers: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11339
2020-02-14 08:33:38 -05:00
Mike Blumenkrantz dc14257c96 Revert "evas: remove image_load from the engine."
Summary:
This reverts commit 867d826395.
Depends on D11337

Reviewers: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11338
2020-02-14 08:33:32 -05:00
Mike Blumenkrantz 7aec0565cb Revert "evas: remove unused function evas_common_load_image_from_file."
Summary:
This reverts commit 7672d1050e.
Depends on D11335

Reviewers: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11336
2020-02-14 08:33:20 -05:00
Mike Blumenkrantz 08b291e540 Revert "evas: remove unused function evas_cache_engine_image_request."
Summary:
This reverts commit 90e1ca7154.
Depends on D11334

Reviewers: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11335
2020-02-14 08:33:13 -05:00
Mike Blumenkrantz c1dd72fc91 Revert "evas: remove unused function evas_cache_image_request."
Summary: This reverts commit ee3f4e0529.

Reviewers: raster

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11334
2020-02-14 08:33:07 -05:00
Marcel Hollerbach 0c313f89b0 efl_canvas_gesture: replace parse with import
we probebly want to use import here, as we want to rebuild this file
when efl_canvas_gesture_events is changed.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D11273
2020-02-14 09:44:27 +01:00
Mike Blumenkrantz f5c4c4ee15 efl/gesture: remove Efl.Canvas.Gesture_Recognizer_Type
this serves no purpose and isn't used anywhere

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11323
2020-02-14 09:21:19 +01:00
Mike Blumenkrantz 93abc9cbeb efl/gesture: rework custom gesture recognizer methodology
this needs to return the actual gesture class type so that custom gesture
events can implement their own properties if necessary

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11322
2020-02-14 09:21:15 +01:00
Mike Blumenkrantz f917f75c56 efl/gesture: improve docs
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11321
2020-02-14 09:21:12 +01:00
Mike Blumenkrantz f5273decbb efl/gesture: remove bespoke recognizer properties for tap timeout
this should all be managed by efl.config

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11320
2020-02-14 09:21:09 +01:00
Mike Blumenkrantz 61b5131393 efl/gesture: un-@protected efl.canvas.gesture_recognizer::continues
recognizers need to be able to get and set this appropriately

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11319
2020-02-14 09:21:06 +01:00
Mike Blumenkrantz f145b53892 efl/gesture: api renames for Efl.Canvas.Gesture_Touch
ref T8554

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11300
2020-02-14 09:21:03 +01:00
Mike Blumenkrantz 77b6d0efd7 efl/gesture: fix long tap timeout errors
this is the timer pointer, and we need to be able to delete the timer when
the gesture ends

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11299
2020-02-14 09:21:00 +01:00
Mike Blumenkrantz 9e53d9c017 efl/gesture: fix touch state tracking
correctly set 'pressed' member of touch data only on press events and
don't change it on move events in order to avoid having mismatched states

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11291
2020-02-14 09:20:54 +01:00
Mike Blumenkrantz edcc16238b efl/gesture: remove recognizer::reset method
this wasn't used and doesn't seem necessary

ref T8503

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11279
2020-02-14 09:20:51 +01:00
Mike Blumenkrantz 3d858f3948 efl/gesture: fix tap gesture type naming
we use c_enum_naming_style in our enums, not cSharpEnumNamingStyle

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11275
2020-02-14 09:20:48 +01:00
Mike Blumenkrantz a136ab2e00 efl/gesture: remove gesture_touch::multi_touch
this is redundant now that touch_count exists

ref T8554

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11274
2020-02-14 09:20:45 +01:00
Mike Blumenkrantz 28b7ea6f0c efl/gesture: rework gesture_recognizer::add to be a 'type' property
this simplifies (and optimizes) a bunch of code by letting gesture recognizers
return directly the type of gesture they recognize for use internally

ref T8503

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11267
2020-02-14 09:20:42 +01:00
Mike Blumenkrantz 23f772b434 efl/gesture: use new config value for thumbscroll friction
the old one used here is marked deprecated

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11263
2020-02-14 09:20:39 +01:00
Mike Blumenkrantz 151ec0748a efl/config: merge all gesture manager config code into efl.config
this is all just duplicated code, so we can deduplicate it with minimal
effort to clean up the api

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11251
2020-02-14 09:20:30 +01:00
Mike Blumenkrantz 7da4ab3633 efl/gesture: remove manager config
we can just use efl.config here instead of duplicating it

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11248
2020-02-14 09:20:24 +01:00
Mike Blumenkrantz 0f2a61b5f2 efl/gesture: move manager's recognizer cleanup function to eo
this is needed by recognizers which use timers in order to do timeouts
on gestures

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11245
2020-02-14 09:20:18 +01:00
Hermet Park 6307fc056a canvas image: remove unnecessary condition check. 2020-02-14 17:07:05 +09:00
Hermet Park 1fff2f13ed gfx mapping: + null check for safety 2020-02-14 13:09:14 +09:00
Hermet Park 9569156b3f canvas vector: remove unreacheable code.
pd->buffer is always false.
2020-02-14 13:04:42 +09:00
SangHyeon Jade Lee 04b82b3f87 evas_textblock : remove wrong condition check for size_t value
Summary:
pos in cursor handle is defined size_t type,
(see efl_canvas_textblock_internal.h)
which is unsigned int, and always bigger or equal to 0.

Reviewers: bowonryu, ali.alzyod

Reviewed By: ali.alzyod

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11333
2020-02-13 20:14:55 +09:00
Hermet Park d62f967ed6 canvas textblock: + null handling 2020-02-13 19:16:01 +09:00
Hermet Park db0f08fbae canvas textblock: + null safety 2020-02-13 19:05:43 +09:00
Hermet Park 6684f41626 canvas font: correct wrong masking length.
the masking length should be x2 - x1 otherwise,
it will try to mask over regions with dirty pixels.

@fix
2020-02-13 16:50:21 +09:00
Wonki Kim b0a7532dad evas: remove redundant conditions.
Summary:
conditions of the inner and outer statement are identical.
this patch removes a condition of them.

Reviewers: jsuya, Hermet

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11324
2020-02-12 16:48:16 +09:00
Shinwoo Kim 2f852c92e8 evas_render: initialize variable
Summary:
evas_object_image_load_region_get could be called with following stack.

(#0) evas_object_image_load_region_get
(#1) evas_render_proxy_subrender
(#2) evas_filter_context_proxy_render_all
(#3) evas_filter_object_render
(#4) evas_object_text_render

This means that evas_object_image_load_region_get is called by text object.
In this case, the load region value has garbabe, and it leads to invalid
memory access which is detected by Assan(T8610).

This patch initialize variable before using evas_object_image_load_region_set.

Reviewers: Hermet, jsuya, bu5hm4n, zmike

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11316
2020-02-11 09:03:43 -05:00
Hermet Park fbf792896f canvas proxy: fix broken proxy source clip set behavior.
Some internal logic has been wrongly changed while it's on refactoring.

Fixed by reverting it.
2020-02-11 21:45:56 +09:00
Ali Alzyod 4f99a37aee efl.canvas.textblock: allow all white spaces in style string not just space
Summary:
style string can contain any kind of white spaces and it will be fine

For example
```
"font=sans font_size=30 color=red "
```
Is the same as
```
"font=sans\tfont_size=30\n  color=red "
```

Reviewers: woohyun, segfaultxavi, tasn, zmike

Reviewed By: segfaultxavi

Subscribers: bu5hm4n, cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8532

Differential Revision: https://phab.enlightenment.org/D11303
2020-02-11 12:10:00 +01:00
Hermet Park 98f2c3d5ee evas object: + null check for safety 2020-02-10 21:23:20 +09:00
Ali Alzyod 3560b0f62f evas_object_textbox: deal with <br> <tab> without closing '/'
This causes many issues because textbox functions deals with <br> <tab> differently depending that user write them with or without '/' at the end (for example <br> vs <br/>)
while most functionaliity are the same (like viewing <br> and <br/> are the same).
cursor dealing with these tags can be differently.
now we will assume <br> <tab> are already have there own closing tag, even if it is missing

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11293
2020-02-05 17:41:24 +01:00
Marcel Hollerbach 4a81eb6468 eot files: fixup all since tags
these tags have been wrong. eolian does not allow anything < 1.22
2020-02-05 16:30:57 +01:00
Mike Blumenkrantz 27a7924ec6 efl/gesture: remove unused manager function
no functional changes

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11244
2020-02-05 10:11:05 +01:00
Mike Blumenkrantz 501063eb5c evas/object: remove weird gesture manager method
these two objects have zero relation, and I don't know why this ever
existed

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11243
2020-02-05 10:11:02 +01:00
Mike Blumenkrantz e002305e4b efl/gesture: free object gesture list in destructor
leak--

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11242
2020-02-05 10:10:59 +01:00
Mike Blumenkrantz 5ffa495a1b efl/gesture: use array instead of list for garbage gesture objects
this is always a full iteration so we don't actually need a list

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11241
2020-02-05 10:10:56 +01:00
Mike Blumenkrantz 02b721078a efl/gesture: fix gesture object cleanup when unregistering a recognizer
these objects need to be cleaned up immediately outside of event
processing to avoid having them automatically deleted later on and
triggering a double delete

Differential Revision: https://phab.enlightenment.org/D11240
2020-02-05 10:10:54 +01:00
Mike Blumenkrantz ca2cc5915d efl/gesture: implement custom gesture recognizer framework
this adds support for creating custom (out of tree) gesture recognizers by
adding an abstract recognizer class that can be inherited and reused

docs TBA

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11223
2020-02-05 10:10:49 +01:00
Mike Blumenkrantz 2c8d7aa7c0 efl/gesture: break out gesture processing code into separate function
this will get reused shortly

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11222
2020-02-05 10:10:46 +01:00
Mike Blumenkrantz f9dacb5811 efl/gesture: remove manager's recognizer_get method
this exposes internal objects that we shouldn't be exposing

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11221
2020-02-05 10:10:43 +01:00
Mike Blumenkrantz 1320156e03 efl/gesture: conditionally ignore multi-touch unpress events in zoom recognizer
if we have not begun to process a zoom gesture by this point, then we should
not be emitting a cancel result

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11208
2020-02-05 10:10:37 +01:00
Mike Blumenkrantz d62e3f97ad efl/gesture: ignore successive press events in zoom recognizer when canceled
cancel is used to indicate that a gesture which has begun to trigger has been
canceled, so if we have already canceled then we should not re-cancel here

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11207
2020-02-05 10:10:34 +01:00
Mike Blumenkrantz c8ff8b1706 efl/gesture: ignore multi-touch end events in tap gesture recognizer
we only care about the last touch unpress event, so we should be ignoring
every other event instead of canceling, as we are also ignoring the
multi-touch press events

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11206
2020-02-05 10:10:31 +01:00
Mike Blumenkrantz 3612467c4f efl/gesture: avoid direct double access in structs
this is functionally wrong (the comparison fails) and also causes SIGBUS on
arm

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11198
2020-02-05 10:10:27 +01:00
Mike Blumenkrantz 17995ee710 efl/gesture: reorder gesture private structs
order based on descending member size

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11197
2020-02-05 10:10:24 +01:00
Mike Blumenkrantz a29a59fa64 efl/gesture: remove 'gesture' member from recognizer data struct
this was never used

ref T8503

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11178
2020-02-05 10:10:21 +01:00
Mike Blumenkrantz 9691299c34 efl/gesture: remove 'manager' member from recognizer data struct
this can be fetched using efl_provider_find from the recognizer

ref T8503

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11177
2020-02-05 10:10:18 +01:00
Mike Blumenkrantz 7444007fe7 efl/gesture: remove 'config' property from recognizers
this is a manager functionality, and recognizers are always child objects of
managers

ref T8503

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11176
2020-02-05 10:10:14 +01:00
Mike Blumenkrantz 159b73c0d8 efl/gesture: expose 'continues' as a public property for recognizers
we still access this using private data in the in-tree recognizers, but
now it's also accessible normally to custom recognizers

ref T8503

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11175
2020-02-05 10:10:11 +01:00
Mike Blumenkrantz 54cb6e04d2 efl/gesture: add an event to notify when a config value has been changed
recognizers should be storing config values internally to avoid overhead
of multiple eo/hash lookups on every event

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11174
2020-02-05 10:10:08 +01:00
Mike Blumenkrantz 89e8cb912c efl/gesture: move finger_size into private structs of recognizers
we must write these recognizers using publicly available apis to ensure
that we don't accidentally start using private struct data

this requires a lot of changes to properly manage the config value for finger
size and update the recognizer data when changed (which external recognizers
will need to monitor an event to achieve) and then also to change some
recognizers so they don't use memset and unset the finger_size value

ref TT8503

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11173
2020-02-05 10:10:05 +01:00
Mike Blumenkrantz ff8e8fd5f8 efl/gesture: discard non-press events for all touch points if unseen previously
not sure why this was restricted to first touch point previously, but the logic
applies to all points as we don't want to be tracking input for a touch we
haven't gotten a down for

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11169
2020-02-05 10:10:01 +01:00
Mike Blumenkrantz bf0fe4a800 efl/gesture: add 'pressed' state info for touch data
since we retain touch info for the duration of a touch sequence, including
after a touch point has been unpressed, it's necessary to track the current
state of each point and then use that to accurately determine the number of
touches active

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11168
2020-02-05 10:09:57 +01:00
Mike Blumenkrantz 0bb36d23e2 efl/gesture: correctly reset zoom gesture recognizer data on >2 finger touch
canceling without a proper reset breaks the recognizer for successive events

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11167
2020-02-05 10:09:55 +01:00
Mike Blumenkrantz 5abe7f14d2 efl/gesture: more accurately handle flick/momentum recognition with multi-touch
if we have one of these gestures where we are flicking/momentuming with multiple
touch points, we want to permit this so long as the touch points are moving vaguely
in the same direction, e.g., press -> swipe with 2 fingers

with this, we now cancel these gestures with multi-touch active if we detect motion
with subsequent touch events that doesn't match the vector of the "active" press
for which we are monitoring events

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11165
2020-02-05 10:09:51 +01:00
Mike Blumenkrantz 72bba1d837 efl/gesture: break out _direction_get() into helper function
this is useful in multiple places, no functional changes

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11164
2020-02-05 10:09:48 +01:00
Mike Blumenkrantz 12a064874e evas/events: fix multi-touch object targeting on touch down events
a touch press is both a touch and a move event, which means the canvas must
update its list of target objects on the first touch press to avoid using the
wrong objects when processing events

@fix

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D11163
2020-02-05 10:09:45 +01:00
Mike Blumenkrantz a1222c7d60 efl/gesture: correct config value name for glayer_double_tap_timeout
typo--

Reviewed-by: Hermet Park <<hermetpark@gmail.com>>
Differential Revision: https://phab.enlightenment.org/D11155
2020-02-05 10:09:42 +01:00
Mike Blumenkrantz e41434d96d efl/gesture: redo (and make stupider) hash usage in gesture manager
this rewrites the gesture event dispatcher to use a hash of hashes for
tracking which events are being watched on a given object to avoid:
* dispatching n gesture events per object to each callback, where n is the
  number of gesture callbacks for any given type
* removing all gesture callbacks when only one callback is removed

this is not smart code. it should be improved at some time, but that time
is not now.

Differential Revision: https://phab.enlightenment.org/D11144
2020-02-05 10:09:05 +01:00
Mike Blumenkrantz 38641ecd9b efl/gesture: add touch_count property for gesture event info
this allows us to provide the number of touch points active in any gesture
so we can detect e.g., double-tap with two fingers

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11126
2020-02-05 10:09:03 +01:00
Mike Blumenkrantz ce3d569cfd efl/gesture: fix zoom to ignore single press events and not crash
zoom requires two fingers for a pinch, so skip the first press

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11088
2020-02-05 10:08:57 +01:00
Mike Blumenkrantz 89b35b3f79 efl/gesture: restrict flick and momentum gestures to original touch point
if multiple fingers are pressed down, filter and use only the first finger
to make gesture recognizing more accurate

this may change later once tests develop

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11087
2020-02-05 10:08:54 +01:00
Mike Blumenkrantz 15527dbecb efl/gesture: handle multi-touch press for tap gestures
any time multiple fingers are pressed down at the same time, we should
treat this as a single gesture like if only one finger was pressed

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11086
2020-02-05 10:08:51 +01:00
Yeongjong Lee 723382bf5c evas: prevent calling api with NULL filter image
This fixes a bunch of warnings like that
```
../src/lib/eo/eo.c:644 _efl_object_call_resolve() NULL passed to function xxx().
```

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11283
2020-02-05 08:58:25 +01:00
Marcel Hollerbach 7f57e8e601 move stabelized items out of @beta
fixes T8570
fixes T8567
fixes T8566
fixes T8521
fixes T8501
fixes T8460
fixes T8455
fixes T8454
fixes T8254
fixes T7945
fixes T7944
fixes T7943
fixes T7942
fixes T7941
fixes T7940
fixes T7939
fixes T7938
fixes T7937
fixes T7936
fixes T7935
fixes T7934
fixes T7933
fixes T7858
fixes T7857
fixes T7856
fixes T7855
fixes T8599

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11264
2020-02-05 08:58:22 +01:00
abdulleh Ghujeh ecd10c8c3d efl_canvas_textblock: incorrect value returned for underline dashed gap
the function text_underline_dashed_gap_get return underline_dash_width value instead of underline_dash_gap value.
this patch return the correct value.

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11277
2020-02-05 08:58:18 +01:00
Ali Alzyod ba99891710 efl.canvas.textblock: update style strings
Summary:
Update

backing -> background_type
backing_color -> background_color
underline_dash_color -> underline_dashed_color
underline - > underline_type
strikethrough - > strikethrough_type
style -> (effect_type + shadow_direction)
underline_dash_width -> underline_dashed_width
underline_dashed_gap -> underline_dashed_gap

**+prevent unified APIs from supporting legacy style tags, and prevent legacy APIs from the ability to use new unified tags**

Reviewers: zmike, woohyun, segfaultxavi, bu5hm4n, cedric

Reviewed By: segfaultxavi, bu5hm4n

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8523

Differential Revision: https://phab.enlightenment.org/D11188
2020-02-04 17:54:34 +01:00
Shinwoo Kim 8986f8d2dc evas proxy: make it work for load_region
Summary:
This makes a proxy object use a selective region of a source object.
So far a proxy has not worked for load_region at all.
This should be better solution than https://phab.enlightenment.org/D10604
introducing new interface.

This is useful when the source is too big to allocate a proxy surface.
This will be used by elm_scroller to solve following issue.

[Issue]
If size of elm_sclloer content is too big, then the proxy of
elm_scroller to show loop effect does not work. Because
evas_gl_common_image_surface_new does not allow
bigger size surface than max_texture_size

Reviewers: Hermet, jsuya

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10626
2020-02-04 12:14:25 +09:00
Shinwoo Kim 50f3648391 evas proxy: make it work for File_Save.save
Summary:
File_Save.save does not work for proxy object from following commit.

   c53f152 evas: Make save() work on snapshots

Test Plan:
1. Add an image object and set source object.
evas_object_image_source_set(obj, source);

2. Save the object as a file when you need.
evas_object_image_save(obj, "./file_name.png", NULL, NULL);

Reviewers: cedric, Hermet, jsuya

Reviewed By: Hermet

Subscribers: zmike, subodh6129, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10629
2020-02-04 12:06:38 +09:00
Marcel Hollerbach 509ad38083 evas_object_grid: fix leaking of pointer
priv->children was leaked to a freed pointer here.
This is now fixed.
2020-01-31 13:52:51 +01:00
Woochanlee 260964dbdd evas_object_grid: Fix memory leak.
_evas_object_smart_clipped_init() (in evas_object_smart.c) is called when evas_object_grid is created.
And a rectangle is created in the function.

But, the rectangle is not deleted even  though evas_objecct_grid is deleted.
This patch fixes the problem by deleting it in smart_del fucntion.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11140
2020-01-31 13:52:51 +01:00
Shinwoo Kim e0b4ddaeb8 evas filter: fix crash issue
Summary:
If image object geometry is same with image size, then a crash occurs on both
GL and SW engine.

[Test Code]
evas_object_image_size_get(img, &w, &h);
evas_object_resize(img, w, h);

[GL engine]
eng_ector_buffer_wrap should use output instead of engine for calling
evas_ector_buffer_engine_image, because it expects the output not the engine.

[SW engine]
eng_ector_buffer_wrap should check if im->image.data is NULL because
_evas_ector_software_buffer_evas_ector_buffer_engine_image_set returns before
calling evas_cache_iamge_ref if im->image.data is NULL, and it causes
a segmentation fault finally with following backtrace.

(#0) evas_cache_image_drop (im=0x0)
(#1) _evas_ector_software_buffer_efl_object_destructor
(#2) efl_destructor
(#3) _efl_del_internal
(#4) _efl_unref_internal
(#5) _efl_add_internal_end
(#6) _efl_add_end
(#7) eng_ector_buffer_wrap

Test Plan: {F3841366}

Reviewers: Hermet, jsuya

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11258
2020-01-31 21:35:18 +09:00
Mike Blumenkrantz 28e89a5ac7 efl/gesture: move Point_Data to eo and add methods to fetch it for recognizers
this lets gesture framework track two touch points in order to distinguish between
successive presses and e.g., treat a simultaneous two finger tap as a single tap
gesture rather than two

it also simplifies some internal code and removes most hash lookups

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11085
2020-01-30 17:06:54 +01:00
Mike Blumenkrantz eb0dd2262d efl/gesture: unset timer pointers for tap recognizers
avoid having stale timer pointers around once timers have triggered

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11081
2020-01-30 17:06:42 +01:00
Mike Blumenkrantz f1bbd2bcab efl/gesture: formatting
some parts of this were entirely unreadable due to mixed tabs/spaces and other
bizarre formatting issues which somehow made it into the tree

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D11053
2020-01-30 17:06:33 +01:00
Mike Blumenkrantz 17c6743180 efl/gesture: do not emit events for canceled gestures with no state
for non-continuing gestures which have been canceled at this point, we must
not emit events in order to avoid sending useless events which serve no
purpose other than to waste cpu cycles

Reviewed-by: woochan lee <wc0917.lee@samsung.com>
Reviewed-by: Jaehyun Cho <jae_hyun.cho@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11027
2020-01-30 17:06:24 +01:00
junsu choi 9cb73aea1b vg_common_json: Supports transform properties
Summary:
Supports scale, position, and rotation properties
related to transform among properties supported by value provider.

Test Plan:
Remove 'json' in evas-loaders-disabler
build
elementary_test -to "value provider"
(path : layer.box1)

Depends on D11213

Reviewers: Hermet, smohanty, kimcinoo

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11129
2020-01-29 21:42:43 +09:00
junsu choi 5a3f3d0ab6 Efl.Gfx.Vg.Value_Provider: Change transform value type to Matrix4
Summary:
Change type to matrix4 for 3-axis use when using value provider.

Depends on D11159

Test Plan: N/A

Reviewers: Hermet, kimcinoo, smohanty

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11213
2020-01-29 21:39:53 +09:00
Cedric BAIL 948da9ace6 evas: prepare separation of POST_RENDER event from being an unified and legacy event at the same time.
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Differential Revision: https://phab.enlightenment.org/D11048
2020-01-29 09:51:28 +01:00
Hermet Park 6fd0502342 canvas vector: fix incorrect caching hit.
animated vector(lottie) caches current playing resource data,
for resuing if it's possible, but it must take care of the drawing size.

Previous logic missed that part, fixed it.
2020-01-28 18:06:33 +09:00
Ali Alzyod 1b37f1504f evas_textblock: <ps> tag respects multiline propertie
previously multi-line property does not effect  <ps> tag.
now <ps> is treated visually like <br> when multiline is set to EINA_FALSE

this issue was that each new paragraph will create new line regardless of multi line property value,  now only first paragraph will create new line if multi-line property is false, and other paragraphs will use same line

this will also fix the following patch https://phab.enlightenment.org/D8603
And both will use same test suite code

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9064
2020-01-27 09:26:05 +01:00
Carsten Haitzler 8ec6e28b7c evas - loaders - jp2k - re-enable in the build after it was lost
it seems to have been forgotten. bring it back to building again

@fix
2020-01-25 20:16:47 +00:00
Ali Alzyod 932ea7a70e efl.canvas.textblock: annotate obstacle methods as beta
Summary:
We decided to annotate these methods as beta

**obstacle_add**
**obstacle_del**
**obstacles_update**

Reviewers: woohyun, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8460

Differential Revision: https://phab.enlightenment.org/D11136
2020-01-23 12:34:39 +01:00
Ali Alzyod 8143b81dd6 evas_object_textblock: treat variation sequence as single run
Summary:
Variation sequence treated as a single run, if we found one, we keep looking adding to the same  run, but if it is not, then we need to start a new one.

Before:
{F3826735}

After:
{F3826736}

Test Plan:
```
#include <stdio.h>
#include <Elementary.h>
/*
gcc -o example test.c `pkg-config --cflags --libs elementary`
*/

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

   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);

   win = elm_win_util_standard_add("emoji-example", "emoji-example");
   elm_win_autodel_set(win, EINA_TRUE);

   en = elm_entry_add(win);
   elm_entry_scrollable_set(en, EINA_TRUE);
   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);

   elm_object_text_set(en, "<font_size=25>&#x262a;&#x262a;&#xfe0f;&#x262a;가</font_size>");

   evas_object_show(en);

   elm_object_content_set(win, en);
   evas_object_resize(win, 400, 200);
   evas_object_show(win);

   elm_run();

   return 0;
}
ELM_MAIN()
```

Reviewers: woohyun, bowonryu

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8542

Differential Revision: https://phab.enlightenment.org/D11096
2020-01-23 16:21:22 +09:00
Marcel Hollerbach baa7870082 evas_object_box: fix invalidator
the iteration over the content of the box did never cleanup the
children pointer, which resulted in buggy behavior.

This fixes test suite crashes with freeq debugging on.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D11123
2020-01-22 15:11:22 +01:00
Shinwoo Kim 7311b6fe32 Efl.Canvas.Group: implement Efl.Gfx.Filter
Summary: This patch makes Efl.Canvas.Group work for Efl.Gfx.Filter

Reviewers: Hermet, jsuya, zmike

Reviewed By: Hermet

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10435
2020-01-21 19:29:37 +09:00
Xavi Artigas a49e3ad7e3 docs: Typos in Doxygen docs 2020-01-21 10:59:12 +01:00
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