summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* efl: Make stable single-valued getters consistent.devs/lauromoura/getter_returnsLauro Moura2019-11-053-4/+12
| | | | | | | | | | | | | | | | | 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
* eolian: Imply @no_unused if @move in return.Lauro Moura2019-11-056-8/+14
| | | | | | | | | | | | | | | | | | | | 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 Subscribers: #reviewers, #committers, bu5hm4n, felipealmeida, cedric, segfaultxavi Tags: #efl Differential Revision: https://phab.enlightenment.org/D10601
* docs: Efl.Gfx.ViewXavi Artigas2019-11-051-1/+4
|
* travis: update Ubuntu image to the 19.10 releaseStefan Schmidt2019-11-051-1/+1
| | | | | | | We keep the 18.04 LTS until a new LTS comes along. Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de> Differential Revision: https://phab.enlightenment.org/D10600
* ci: work around ccache segafult during setupStefan Schmidt2019-11-051-1/+2
| | | | | | | | This is the same fix we applied for the macOS. Somehow ccache segfaults during the init. This only shows on the Ubuntu 19.10 update. Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de> Differential Revision: https://phab.enlightenment.org/D10599
* travis/ci: update Fedora CI images to 31Stefan Schmidt2019-11-052-8/+8
| | | | | | | | Also disable the gstreamer 0.10 module since this version is no longer shipped with Fedora 31. Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de> Differential Revision: https://phab.enlightenment.org/D10597
* tests/spec: allow for a longer timeout of the spec suite for dist buildStefan Schmidt2019-11-051-1/+2
| | | | | | | | | | | | During our ninja dist builds on the CI we run into timeouts for the spec test suite taking longer than the default 30s. We can't pass any multiplier into the ninja dist command as we are doing on the other unit test runs. Allow th default value for this suite to also cover the CI case. It does no harm on sutuations where it finishes faster. Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de> Differential Revision: https://phab.enlightenment.org/D10593
* tests/ecore-wl2: Remove surface testChristopher Michael2019-11-054-60/+1
| | | | | | | This test is not necessary anymore as the ecore_wl2_surface function it was testing is now an internal function ref T8016
* evas-wayland-common: Move boolean fields to bottom of structureChristopher Michael2019-11-051-3/+2
|
* evas-wayland-common: Fix variable typeChristopher Michael2019-11-051-1/+1
| | | | | The 'resizing' variable here does not need to be an 'int' as it's either true or false, so change to be Eina_Bool.
* evas-wayland-common: Add include for ecore_wl2 internal functionsChristopher Michael2019-11-051-0/+1
|
* ecore-wl2: Remove dead commentChristopher Michael2019-11-051-4/+0
| | | | | Now that the (mostly unused) functions have been moved to be internal, we don't need a comment in here about documenting them
* ecore-wl2: Move ecore_wl2_surface_alpha_get function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_surface_window_get function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_surface_manager_del function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_surface_manager_add function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_surface_buffer_create function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_window_surface_flush function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_surface_flush function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_surface_post function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_surface_assign function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_surface_data_get function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_surface_reconfigure function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_surface_destroy function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_surface_create function to be internalChristopher Michael2019-11-052-1/+2
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_age_inc function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_age_set function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_age_get function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_busy_get function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_busy_get function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_destroy function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_unlock function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_lock function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_discard function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_unmap function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_map function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_wl_buffer_get function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_destroy function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_create function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_buffer_init function to be internalChristopher Michael2019-11-052-1/+1
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2: Move ecore_wl2_window_damage function to be internalChristopher Michael2019-11-052-1/+2
| | | | | | | | As this function is only used in 1 place and will likely never be used outside of the modular dmabuf engine, we can move it to be internal only. ref T8013
* ecore-wl2-dmabuf: Add include for internal functionsChristopher Michael2019-11-051-0/+1
|
* ecore-wl2: Move variables to be above functionsChristopher Michael2019-11-051-3/+3
| | | | NB: No functional changes
* evas_textblock: content fit featureAli Alzyod2019-11-0510-89/+983
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* docs: Efl.Ui.Table_StaticXavi Artigas2019-11-051-1/+7
| | | | | | The need for this class is still being discussed in https://phab.enlightenment.org/T8206 but at least it is a bit more clear what its purpose is.
* evas filter: Implement inverse color filterShinwoo Kim2019-11-0516-2/+298
| | | | | | | | | | | | | | | | | | | | | 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
* csharp: Changing visibility of nested class/structBruno da Silva Belo2019-11-047-40/+42
| | | | | | | | | | | | | | Reviewers: felipealmeida, lauromoura, YOhoho Reviewed By: YOhoho Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T8393 Differential Revision: https://phab.enlightenment.org/D10588
* docs: Polish Efl.Canvas.Animation_Group and sonsXavi Artigas2019-11-043-9/+29
| | | | | | | | | | | | | | 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
* efl_canvas_animation: improve generallyMarcel Hollerbach2019-11-041-20/+45
| | | | | | | | | | | | | | | | 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
* docs: Polish Efl.Canvas.Animation_*Xavi Artigas2019-11-044-33/+91
| | | | | | | | | | | | | | | | | 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