diff --git a/.ci/ci-configure.sh b/.ci/ci-configure.sh index 54ed89d4a5..97fcb1785d 100755 --- a/.ci/ci-configure.sh +++ b/.ci/ci-configure.sh @@ -25,7 +25,7 @@ if [ "$DISTRO" != "" ] ; then DISABLED_LINUX_COPTS=" -Daudio=false -Davahi=false -Dx11=false -Dphysics=false -Deeze=false \ -Dopengl=none -Deina-magic-debug=false -Dbuild-examples=false -Dbuild-tests=false \ -Dcrypto=gnutls -Dglib=false -Dgstreamer=false -Dsystemd=false -Dpulseaudio=false \ - -Dnetwork-backend=connman -Dxinput2=false -Dtslib=false -Devas-modules=static \ + -Dnetwork-backend=connman -Dxinput2=false -Dtslib=false \ -Devas-loaders-disabler=gst,pdf,ps,raw,svg,xcf,bmp,dds,eet,generic,gif,ico,jp2k,json,pmaps,psd,tga,tgv,tiff,wbmp,webp,xpm \ -Decore-imf-loaders-disabler=xim,ibus,scim -Demotion-loaders-disabler=gstreamer,gstreamer1,libvlc,xine \ -Demotion-generic-loaders-disabler=vlc -Dfribidi=false -Dfontconfig=false \ @@ -37,7 +37,7 @@ if [ "$DISTRO" != "" ] ; then MINGW_COPTS="--cross-file .ci/cross_toolchain.txt -Davahi=false -Deeze=false -Dsystemd=false \ -Dpulseaudio=false -Dx11=false -Dopengl=none -Dlibmount=false \ - -Devas-loaders-disabler=json,pdf,ps,raw,svg,rsvg -Devas-modules=static -Dbindings=luajit \ + -Devas-loaders-disabler=json,pdf,ps,raw,svg,rsvg -Dbindings=luajit \ -Dharfbuzz=true -Dpixman=true -Dembedded-lz4=false " if [ "$1" = "options-enabled" ]; then diff --git a/data/elementary/images/three_box.json b/data/elementary/images/three_box.json new file mode 100644 index 0000000000..f58fbcdec8 --- /dev/null +++ b/data/elementary/images/three_box.json @@ -0,0 +1 @@ +{"v":"5.5.9","fr":29.9700012207031,"ip":0,"op":130.000005295009,"w":1920,"h":1080,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"layer","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[960,540,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[300,300],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-261,"s":[1,0,0,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1,0,0,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[0,1,0,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":57,"s":[0,0,1,1]},{"t":119.000004846969,"s":[1,0,0,1]}],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-400,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":37,"s":[10]},{"t":108.00000439893,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-600,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[300,300],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[1,0.917647123337,0,1]},{"t":96.0000039101602,"s":[1,1,1,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":1,"s":[2]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":46,"s":[69]},{"t":102.000004154545,"s":[2]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[300,300],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[600,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"box3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":-6.00000024438501,"op":894.000036413367,"st":-6.00000024438501,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/doc/meson.build b/doc/meson.build index 11e80dfadc..5598b18ba3 100644 --- a/doc/meson.build +++ b/doc/meson.build @@ -133,7 +133,7 @@ foreach widget_preview : widget_previews dependencies: elementary, build_by_default: false, c_args : [ - '-DPACKAGE_DATA_DIR="'+meson.current_build_dir()+'"', + '-DPACKAGE_DATA_DIR="'+join_paths(meson.source_root(), 'data', 'elementary')+'"', '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"', '-DDOCW_DIR="'+meson.current_build_dir()+'"'] @@ -182,8 +182,8 @@ doc_target += custom_target('doxygen', ) compress_target = custom_target('package_doc_tar', - command: [tar, '-C', meson.build_root(), '-cf', 'efl-'+meson.project_version()+'.tar', 'html', 'man'], - output: 'efl-'+meson.project_version()+'.tar', + command: [tar, '-C', meson.build_root(), '--xz', '-cf', 'efl-'+meson.project_version()+'-doc.tar.xz', 'html', 'man'], + output: 'efl-'+meson.project_version()+'-doc.tar.xz', depends: doc_target, build_by_default: false ) diff --git a/doc/widgets/widget_preview_colorselector.c b/doc/widgets/widget_preview_colorselector.c index 784a2d67b4..48b3daca29 100644 --- a/doc/widgets/widget_preview_colorselector.c +++ b/doc/widgets/widget_preview_colorselector.c @@ -8,6 +8,7 @@ evas_object_show(bx); Evas_Object *o = elm_colorselector_add(win); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);; +elm_colorselector_palette_item_selected_set(eina_list_data_get(elm_colorselector_palette_items_get(o)), EINA_TRUE); elm_box_pack_end(bx, o); evas_object_show(o); diff --git a/elm_intro.h.in b/elm_intro.h.in index 7394aaad7c..cf489dbe05 100644 --- a/elm_intro.h.in +++ b/elm_intro.h.in @@ -1,5 +1,5 @@ /** - * @page elementary_main + * @page elementary_main Elementary * @image html elementary.png * @version @VMAJ@.@VMIN@.@VMIC@ * @date 2008-2014 diff --git a/meson.build b/meson.build index d653f96ede..4de9757946 100644 --- a/meson.build +++ b/meson.build @@ -247,26 +247,14 @@ endif ecore_evas_wayland_engine_include_dir = [] +evas_static_list = [] + evas_lib = ['evas' ,[], false, true, false, false, true, true, ['eina', 'efl', 'eo'], ['vg_common', 'libunibreak']] evas_img_modules = ['evas' ,[], true, false, false, false, false, false, ['eina', 'efl', 'eo'], ['vg_common', 'libunibreak']] evas_engines = [join_paths('evas', 'engines'),[], true, false, false, false, false, false, [], []] evas_goal = ['evas_goal' ,[], false, true, false, false, false, false, ['eina', 'efl', 'eo'], []] -if get_option('evas-modules') == 'static' - evas_settings = [ - evas_lib, - evas_img_modules, - evas_engines, - evas_goal, - ] -else - evas_settings = [ - evas_lib, - evas_img_modules, - evas_goal, - evas_engines, - ] -endif +evas_settings = [ evas_lib, evas_img_modules, evas_goal, evas_engines ] subprojects = [ # name | option | mod | lib | bin | bench | tests | examples | pkg-config options | name of static libs diff --git a/meson_options.txt b/meson_options.txt index e665910c5d..1c8103cfd1 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -192,13 +192,6 @@ option('unmount-path', description : 'Path to the unmount binary, if "detect" internal eeze bins are used' ) -option('evas-modules', - type : 'combo', - choices : ['shared', 'static'], - value : 'shared', - description : 'Should modules be shared or statically inlined' -) - option('evas-loaders-disabler', type : 'array', description : 'List of modular image loaders to disable in efl', diff --git a/src/bin/elementary/meson.build b/src/bin/elementary/meson.build index debce1ded8..502573c49e 100644 --- a/src/bin/elementary/meson.build +++ b/src/bin/elementary/meson.build @@ -161,6 +161,7 @@ elementary_test_src = [ 'test_ui_items.c', 'test_ui_frame.c', 'test_efl_ui_animation_view.c', + 'test_efl_gfx_vg_value_provider.c', 'test.h' ] diff --git a/src/bin/elementary/test.c b/src/bin/elementary/test.c index 8d5e997140..8259ed8b0c 100644 --- a/src/bin/elementary/test.c +++ b/src/bin/elementary/test.c @@ -406,6 +406,7 @@ void test_efl_ui_item(void *data, Evas_Object *obj, void *event_info); void test_ui_frame(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED); void test_efl_ui_animation_view(void *data, Evas_Object *obj, void *event_info); +void test_efl_gfx_vg_value_provider(void *data, Evas_Object *obj, void *event_info); static void _list_udpate(void); @@ -1301,6 +1302,7 @@ add_tests: //------------------------------// ADD_TEST_EO(NULL, "Vector Animation", "Animation View", test_efl_ui_animation_view); + ADD_TEST_EO(NULL, "Vector Animation", "Value Provider", test_efl_gfx_vg_value_provider); #undef ADD_TEST diff --git a/src/bin/elementary/test_efl_gfx_vg_value_provider.c b/src/bin/elementary/test_efl_gfx_vg_value_provider.c new file mode 100644 index 0000000000..7f5add084c --- /dev/null +++ b/src/bin/elementary/test_efl_gfx_vg_value_provider.c @@ -0,0 +1,605 @@ +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#endif +#include +#include +#include "elm_priv.h" + +#ifndef EFL_BETA_API_SUPPORT +#define EFL_BETA_API_SUPPORT +#endif + +#ifndef EFL_EO_API_SUPPORT +#define EFL_EO_API_SUPPORT +#endif + +#ifdef BUILD_VG_LOADER_JSON + +Evas_Object *values[4], *anim_view; +Evas_Object *path_entry, *type_hoversel; + +Eina_Bool +add_value_provider(char* new_path, char* new_type, char* new_values) +{ + const char* type = elm_object_text_get(type_hoversel); + if (!type) return EINA_FALSE; + const char* path = efl_text_get(path_entry); + if (!path) return EINA_FALSE; + + if (strstr(type, "Color") != NULL) + { + int color[4]; + Eo *vp = efl_add(EFL_GFX_VG_VALUE_PROVIDER_CLASS, anim_view); + efl_gfx_vg_value_provider_keypath_set(vp, (char*)path); + for (int i = 0; i < 4; i++) + { + char* v = (char*)efl_text_get(values[i]); + if (v) color[i] = atoi(v); + } + + sprintf(new_path, "%s", path); + sprintf(new_values, "%d %d %d %d",color[0], color[1], color[2], color[3]); + if (!strcmp(type, "FillColor")) + { + efl_gfx_vg_value_provider_fill_color_set(vp, color[0], color[1], color[2], color[3]); + sprintf(new_type, "FillColor"); + } + if (!strcmp(type, "StrokeColor")) + { + efl_gfx_vg_value_provider_stroke_color_set(vp, color[0], color[1], color[2], color[3]); + sprintf(new_type, "StrokeColor"); + } + + + efl_ui_animation_view_value_provider_override(anim_view, vp); + } + if (!strcmp(type, "StrokeWidth")) + { + double width; + Eo *vp = efl_add(EFL_GFX_VG_VALUE_PROVIDER_CLASS, anim_view); + efl_gfx_vg_value_provider_keypath_set(vp, (char*)path); + char* v = (char*)efl_text_get(values[0]); + if (v) width = strtod(v, NULL); + efl_gfx_vg_value_provider_stroke_width_set(vp, width); + efl_ui_animation_view_value_provider_override(anim_view, vp); + evas_object_show(anim_view); + sprintf(new_path, "%s", path); + sprintf(new_type, "StrokeWidth"); + sprintf(new_values, "%f", width); + } + return EINA_TRUE; +} + +static void +btn_clicked_cb(void *data , const Efl_Event *ev ) +{ + const char *text = efl_text_get(ev->object); + + if (!text) return; + + if (!strcmp("Play", text)) + efl_ui_animation_view_play((Evas_Object*)data); + else if (!strcmp("Pause", text)) + efl_ui_animation_view_pause((Evas_Object*)data); + else if (!strcmp("Resume", text)) + efl_ui_animation_view_resume((Evas_Object*)data); + else if (!strcmp("Play Back", text)) + efl_ui_animation_view_play_back((Evas_Object*)data); + else if (!strcmp("Stop", text)) + efl_ui_animation_view_stop((Evas_Object*)data); + else if (!strcmp("ADD", text)) + { + Evas_Object *list = (Evas_Object*)data; + Elm_Object_Item *list_it; + char new_path[255], new_type[255], new_values[255]; + if (add_value_provider(new_path, new_type, new_values)) + { + char buf[255]; + //TODO: Even if there is the same path as the existing item, it is added without updating. + // In efl_ui_animation_view, duplicate paths are managed. + // However, animator (lottie) does not have an implementation that manages overridden values. + /*Eina_List *items = (Eina_List*)elm_list_items_get(list); + Eina_List *l; + EINA_LIST_FOREACH(items, l, list_it) + { + char item_text[255]; + strcpy(item_text, elm_object_item_text_get(list_it)); + if (item_text[0] != '/') + { + char* path = strtok(item_text, "/"); + char* type = strtok(NULL, "/"); + if (!strcmp(new_path, path) && !strcmp(new_type, type)) + { + elm_object_item_del(list_it); + break; + } + } + }*/ + sprintf(buf, "%s/%s/%s", new_path, new_type, new_values); + list_it = elm_list_item_append(list, buf, NULL, NULL, NULL, NULL); + elm_list_item_bring_in(list_it); + elm_list_go(list); + } + } + else if (!strcmp("DEL", text)) + { + Evas_Object *list = (Evas_Object*)data; + Elm_Object_Item *list_it = elm_list_selected_item_get(list); + if (list_it) + { + char item_text[255]; + strcpy(item_text, elm_object_item_text_get(list_it)); + if (item_text[0] != '/') + { + /* Need to work */ + } + //TODO + printf("Value provider remove is not implemented yet\n"); + /*elm_object_item_del(list_it); + elm_list_go(list);*/ + } + } +} + +static void +check_changed_cb(void *data, const Efl_Event *event) +{ + Evas_Object *anim_view = data; + efl_ui_animation_view_auto_repeat_set(anim_view, efl_ui_selectable_selected_get(event->object)); +} + +static void +speed_changed_cb(void *data, const Efl_Event *event) +{ + Evas_Object *anim_view = data; + double speed = 1; + if (efl_ui_selectable_selected_get(event->object)) speed = 0.25; + efl_ui_animation_view_speed_set(anim_view, speed); +} + +static void +limit_frame_cb(void *data, const Efl_Event *event) +{ + Evas_Object *anim_view = data; + int frame_count = efl_ui_animation_view_frame_count_get(anim_view); + printf("Total Frame Count : %d\n", frame_count); + if (efl_ui_selectable_selected_get(event->object)) + { + efl_ui_animation_view_min_frame_set(anim_view, 5); + efl_ui_animation_view_max_frame_set(anim_view, 10); + printf("Frames to show 5-10 only\n"); + } + else + { + efl_ui_animation_view_min_frame_set(anim_view, 0); + efl_ui_animation_view_max_frame_set(anim_view, frame_count); + printf("Showing all frames now\n"); + } +} + +static void +update_anim_view_state(Evas_Object *anim_view, Evas_Object *label) +{ + Efl_Ui_Animation_View_State state = efl_ui_animation_view_state_get(anim_view); + + switch (state) + { + case EFL_UI_ANIMATION_VIEW_STATE_NOT_READY: + efl_text_set(label, "State = Not Ready"); + break; + case EFL_UI_ANIMATION_VIEW_STATE_PLAY: + efl_text_set(label, "State = Playing"); + break; + case EFL_UI_ANIMATION_VIEW_STATE_PLAY_BACK: + efl_text_set(label, "State = Playing Back"); + break; + case EFL_UI_ANIMATION_VIEW_STATE_PAUSE: + efl_text_set(label, "State = Paused"); + break; + case EFL_UI_ANIMATION_VIEW_STATE_STOP: + efl_text_set(label, "State = Stopped"); + break; + } +} + +static void +_play_updated(void *data, Evas_Object *obj, void *ev EINA_UNUSED) +{ + Evas_Object *slider = data; + efl_ui_range_value_set(slider, efl_ui_animation_view_progress_get(obj)); +} + +static void +_state_update(void *data, Evas_Object *obj, void *ev EINA_UNUSED) +{ + Evas_Object *label = data; + update_anim_view_state(obj, label); +} + +static void +_play_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) +{ + printf("done!\n"); +} + +static void +_play_repeated(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) +{ + printf("repeated!\n"); +} + +static void +_slider_changed_cb(void *data, const Efl_Event *ev) +{ + Evas_Object *anim_view = data; + efl_ui_animation_view_progress_set(anim_view, efl_ui_range_value_get(ev->object)); +} + +static void +_slider_reset(void *data, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) +{ + Evas_Object *slider = data; + efl_ui_range_value_set(slider, 0); +} + +void values_input(Eo* box, const char* type) +{ + for (int i = 0; i < 4; i++) + { + if (values[i]) + { + //efl_pack_unpack(box, values[i]); + efl_del(values[i]); + values[i] = NULL; + } + } + if (strstr(type, "Color") != NULL) + { + char color_text[4][2] = { "R", "G", "B", "A" }; + for (int i = 0; i < 4; i++) + { + values[i] = efl_add(EFL_UI_TEXT_CLASS, box, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_fill_set(efl_added, EINA_FALSE, EINA_FALSE), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_interactive_editable_set(efl_added, EINA_TRUE), + efl_pack(box, efl_added)); + efl_gfx_hint_size_min_set(values[i], EINA_SIZE2D(50, 10)); + efl_text_set(efl_part(values[i], "efl.text_guide"), color_text[i]); + } + } + else if (!strcmp(type, "StrokeWidth")) + { + values[0] = efl_add(EFL_UI_TEXT_CLASS, box, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_fill_set(efl_added, EINA_FALSE, EINA_FALSE), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_interactive_editable_set(efl_added, EINA_TRUE), + efl_pack(box, efl_added)); + efl_gfx_hint_size_min_set(values[0], EINA_SIZE2D(50, 10)); + efl_text_set(efl_part(values[0], "efl.text_guide"), "Width(double type)"); + } +} + +static void +_hover_item_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + Evas_Object* box = (Evas_Object*)data; + const char *selected = elm_object_item_text_get(event_info); + + elm_object_text_set(obj, selected); + values_input(box, selected); +} + +void +test_efl_gfx_vg_value_provider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Eo *win, *box, *box_sub, *label, *check, *slider, *list; + char buf[255]; + // This line must to need. + setenv("ELM_ACCEL", "gl", 1); + + win = efl_add_ref(EFL_UI_WIN_CLASS, NULL, + efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC), + efl_text_set(efl_added, "Efl_Ui_Animation_View demo"), + efl_ui_win_autodel_set(efl_added, EINA_TRUE)); + + // Create a box in Canvas + box = efl_add(EFL_UI_BOX_CLASS, win, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, EFL_GFX_HINT_EXPAND), + efl_content_set(win, efl_added)); + + //Create a label to show state of animation + label = efl_add(EFL_UI_TEXT_CLASS, win, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.1), + efl_gfx_hint_fill_set(efl_added, EINA_FALSE, EINA_FALSE), + efl_pack(box, efl_added)); + + //Create Animation View to play animation directly from JSON file + snprintf(buf, sizeof(buf), "%s/images/three_box.json", elm_app_data_dir_get()); + anim_view = efl_add(EFL_UI_ANIMATION_VIEW_CLASS, win, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, EFL_GFX_HINT_EXPAND), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_gfx_entity_size_set(efl_added, EINA_SIZE2D(600, 600)), + efl_file_set(efl_added, buf), + efl_pack(box, efl_added)); + +//----------------------------------------------------------------------------------- + box_sub = efl_add(EFL_UI_BOX_CLASS, box, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.1), + efl_pack(box, efl_added)); + //Path + efl_add(EFL_UI_TEXT_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE), + efl_text_set(efl_added, "Path examples : three_box.json\n" + "**\n" + "layer.*.Fill 1\n" + "layer.box1.*\n" + "layer.box1.Fill 1\n" + "layer.box1.Stroke 1\n" + "layer.box_sub.Fill 1\n" + "layer.box_sub.Stroke 1\n" + "layer.box_sub.Fill 1\n" + "layer.box_sub.Stroke 1\n"), + efl_text_interactive_editable_set(efl_added, EINA_FALSE), + efl_text_multiline_set(efl_added, EINA_TRUE), + efl_pack(box_sub, efl_added)); + + efl_add(EFL_UI_TEXT_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, 0, 0), + efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE), + efl_text_set(efl_added, "[Value Provider]"), + efl_text_interactive_editable_set(efl_added, EINA_FALSE), + efl_text_multiline_set(efl_added, EINA_TRUE), + efl_pack(box_sub, efl_added)); +//----------------------------------------------------------------------------------- + // Controller Set : 0 + box_sub = efl_add(EFL_UI_BOX_CLASS, box, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.1), + efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), + efl_pack(box, efl_added)); + + //Path + efl_add(EFL_UI_TEXT_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, 0, 0), + efl_gfx_hint_fill_set(efl_added, EINA_FALSE, EINA_FALSE), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_set(efl_added, "PATH : "), + efl_text_interactive_editable_set(efl_added, EINA_FALSE), + efl_pack(box_sub, efl_added)); + + path_entry = efl_add(EFL_UI_TEXT_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, 0.1, 0), + efl_gfx_hint_fill_set(efl_added, EINA_FALSE, EINA_FALSE), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_interactive_editable_set(efl_added, EINA_TRUE), + efl_pack(box_sub, efl_added)); + efl_gfx_hint_size_min_set(path_entry, EINA_SIZE2D(200, 10)); + efl_text_set(efl_part(path_entry, "efl.text_guide"), "Enter path(ex: ** or Layer.Shape.Fill) "); + + efl_add(EFL_UI_TEXT_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, 0, 0), + efl_gfx_hint_fill_set(efl_added, EINA_FALSE, EINA_FALSE), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_set(efl_added, "TYPE : "), + efl_text_interactive_editable_set(efl_added, EINA_FALSE), + efl_pack(box_sub, efl_added)); + type_hoversel = elm_hoversel_add(box_sub); + elm_hoversel_hover_parent_set(type_hoversel, win); + evas_object_size_hint_weight_set(type_hoversel, 0, 0); + evas_object_size_hint_align_set(type_hoversel, EVAS_HINT_FILL, EVAS_HINT_FILL); + efl_gfx_hint_size_min_set(type_hoversel, EINA_SIZE2D(100, 10)), + elm_object_text_set(type_hoversel, "FillColor"); + elm_hoversel_item_add(type_hoversel, "FillColor", NULL, ELM_ICON_NONE, _hover_item_selected_cb, box_sub); + elm_hoversel_item_add(type_hoversel, "StrokeColor", NULL, ELM_ICON_NONE, _hover_item_selected_cb, box_sub); + elm_hoversel_item_add(type_hoversel, "StrokeWidth", NULL, ELM_ICON_NONE, _hover_item_selected_cb, box_sub); + evas_object_show(type_hoversel); + elm_object_focus_set(type_hoversel, EINA_TRUE); + efl_pack(box_sub, type_hoversel); + + efl_add(EFL_UI_TEXT_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, 0, 0), + efl_gfx_hint_fill_set(efl_added, EINA_FALSE, EINA_FALSE), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_set(efl_added, "VALUES : "), + efl_text_interactive_editable_set(efl_added, EINA_FALSE), + efl_pack(box_sub, efl_added)); + values_input(box_sub, elm_object_text_get(type_hoversel)); + +//----------------------------------------------------------------------------------- + + // Controller Set : 0 + box_sub = efl_add(EFL_UI_BOX_CLASS, box, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.1), + efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), + efl_pack(box, efl_added)); + + list = elm_list_add(win); + evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(list); + efl_pack(box_sub, list); + + elm_object_item_disabled_set(elm_list_item_append(list, "Example : ** / FillColor / 255, 255, 255, 255", NULL, NULL, NULL, NULL), EINA_TRUE); + efl_gfx_hint_size_min_set(list, EINA_SIZE2D(400, 100)), + elm_list_go(list); + + + + efl_add(EFL_UI_BUTTON_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, 0, 0), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_set(efl_added, "ADD"), + efl_pack(box_sub, efl_added), + efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(50, 20)), + efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, btn_clicked_cb, list)); + + efl_add(EFL_UI_BUTTON_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, 0, 0), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_set(efl_added, "DEL"), + efl_pack(box_sub, efl_added), + efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(50, 20)), + efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, btn_clicked_cb, list)); +//----------------------------------------------------------------------------------- + // Controller Set : 0 + box_sub = efl_add(EFL_UI_BOX_CLASS, box, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.1), + efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), + efl_pack(box, efl_added)); + + //Loop + check = efl_add(EFL_UI_CHECK_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_fill_set(efl_added, EINA_FALSE, EINA_FALSE), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_pack(box_sub, efl_added)); + efl_text_set(check, "Loop"); + efl_event_callback_add(check, EFL_UI_EVENT_SELECTED_CHANGED, check_changed_cb, anim_view); + + //Speed: 0.5x + check = efl_add(EFL_UI_CHECK_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_fill_set(efl_added, EINA_FALSE, EINA_FALSE), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_pack(box_sub, efl_added)); + efl_text_set(check, "Speed: 0.25x"); + efl_event_callback_add(check, EFL_UI_EVENT_SELECTED_CHANGED, speed_changed_cb, anim_view); + + //Limit Frames + check = efl_add(EFL_UI_CHECK_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_fill_set(efl_added, EINA_FALSE, EINA_FALSE), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_pack(box_sub, efl_added)); + efl_text_set(check, "Limit Frames"); + efl_event_callback_add(check, EFL_UI_EVENT_SELECTED_CHANGED, limit_frame_cb, anim_view); + + + //Duration Text + snprintf(buf, sizeof(buf), "Duration: %1.2fs", efl_ui_animation_view_duration_time_get(anim_view)); + efl_add(EFL_UI_TEXT_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_fill_set(efl_added, EINA_FALSE, EINA_FALSE), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_set(efl_added, buf), + efl_pack(box_sub, efl_added)); + + //Slider + slider = efl_add(EFL_UI_SLIDER_CLASS, box, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.1), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_ui_range_limits_set(efl_added, 0, 1), + efl_event_callback_add(efl_added, EFL_UI_RANGE_EVENT_CHANGED, _slider_changed_cb, anim_view), + efl_pack(box, efl_added)); + + //Controller Set: 1 + box_sub = efl_add(EFL_UI_BOX_CLASS, box, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, 1), + efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), + efl_pack(box, efl_added)); + + //Play Button + efl_add(EFL_UI_BUTTON_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_set(efl_added, "Play"), + efl_pack(box_sub, efl_added), + efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, btn_clicked_cb, anim_view)); + + + //Play Back Button + efl_add(EFL_UI_BUTTON_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_set(efl_added, "Play Back"), + efl_pack(box_sub, efl_added), + efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, btn_clicked_cb, anim_view)); + + //Stop Button + efl_add(EFL_UI_BUTTON_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_set(efl_added, "Stop"), + efl_pack(box_sub, efl_added), + efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, btn_clicked_cb, anim_view)); + + //Controller Set: 2 + box_sub = efl_add(EFL_UI_BOX_CLASS, box, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, 1), + efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), + efl_pack(box, efl_added)); + + //Pause Button + efl_add(EFL_UI_BUTTON_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_set(efl_added, "Pause"), + efl_pack(box_sub, efl_added), + efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, btn_clicked_cb, anim_view)); + + //Resume Button + efl_add(EFL_UI_BUTTON_CLASS, box_sub, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_text_set(efl_added, "Resume"), + efl_pack(box_sub, efl_added), + efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, btn_clicked_cb, anim_view)); + + evas_object_smart_callback_add(anim_view, "play,start", _state_update, label); + evas_object_smart_callback_add(anim_view, "play,stop", _state_update, label); + evas_object_smart_callback_add(anim_view, "play,pause", _state_update, label); + evas_object_smart_callback_add(anim_view, "play,resume", _state_update, label); + + evas_object_smart_callback_add(anim_view, "play,repeat", _play_repeated, label); + evas_object_smart_callback_add(anim_view, "play,done", _play_done, label); + + evas_object_smart_callback_add(anim_view, "play,update", _play_updated, slider); + evas_object_smart_callback_add(anim_view, "play,stop", _slider_reset, slider); + + update_anim_view_state(anim_view, label); + + efl_gfx_entity_size_set(win, EINA_SIZE2D(600, 850)); +} + +#else + +void +test_efl_gfx_vg_value_provider(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Eo *win, *box; + char buf[255]; + + win = efl_add_ref(EFL_UI_WIN_CLASS, NULL, + efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC), + efl_text_set(efl_added, "Efl_Ui_Animation_View demo"), + efl_ui_win_autodel_set(efl_added, EINA_TRUE)); + + // Create a box + box = efl_add(EFL_UI_BOX_CLASS, win, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, EFL_GFX_HINT_EXPAND), + efl_content_set(win, efl_added)); + + efl_add(EFL_UI_TEXT_CLASS, win, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, 0.1), + efl_gfx_hint_fill_set(efl_added, EINA_FALSE, EINA_FALSE), + efl_text_set(efl_added, "Evas Vg Json (Lottie) Loader is not supported, Only Static Vector Image is available!"), + efl_pack(box, efl_added)); + + //Create Vector object. + snprintf(buf, sizeof(buf), "%s/images/tiger.svg", elm_app_data_dir_get()); + efl_add(EFL_CANVAS_VG_OBJECT_CLASS, win, + efl_gfx_hint_weight_set(efl_added, EFL_GFX_HINT_EXPAND, EFL_GFX_HINT_EXPAND), + efl_gfx_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), + efl_gfx_entity_size_set(efl_added, EINA_SIZE2D(600, 600)), + efl_file_simple_load(efl_added, buf, NULL), + efl_gfx_entity_visible_set(efl_added, EINA_TRUE), + efl_pack(box, efl_added)); + + efl_gfx_entity_size_set(win, EINA_SIZE2D(600, 730)); +} + +#endif diff --git a/src/bin/elementary/test_evas_snapshot.c b/src/bin/elementary/test_evas_snapshot.c index f1395f2750..40513bb8c5 100644 --- a/src/bin/elementary/test_evas_snapshot.c +++ b/src/bin/elementary/test_evas_snapshot.c @@ -129,7 +129,7 @@ test_evas_snapshot(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e efl_ui_win_autodel_set(efl_added, 1)); table = efl_add(EFL_UI_TABLE_CLASS, win, - efl_gfx_arrangement_content_padding_set(efl_added, 5, 5, 1)); + efl_gfx_arrangement_content_padding_set(efl_added, 5, 5)); efl_content_set(win, table); // Objects below the snapshot diff --git a/src/bin/elementary/test_gfx_filters.c b/src/bin/elementary/test_gfx_filters.c index 4cd521430f..35360b61b6 100644 --- a/src/bin/elementary/test_gfx_filters.c +++ b/src/bin/elementary/test_gfx_filters.c @@ -387,7 +387,7 @@ test_gfx_filters(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), efl_gfx_hint_weight_set(efl_added, 1.0, 0.0), efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE), - efl_gfx_arrangement_content_padding_set(efl_added, 5, 5, 1), + efl_gfx_arrangement_content_padding_set(efl_added, 5, 5), efl_gfx_hint_margin_set(efl_added, 5, 5, 5, 5), efl_gfx_arrangement_content_align_set(efl_added, 0, 0.5)); efl_pack(box, box2); diff --git a/src/bin/elementary/test_ui_box.c b/src/bin/elementary/test_ui_box.c index 8b2e8ef2d8..57dc98bd6f 100644 --- a/src/bin/elementary/test_ui_box.c +++ b/src/bin/elementary/test_ui_box.c @@ -72,11 +72,11 @@ user_min_slider_cb(void *data EINA_UNUSED, const Efl_Event *event) static void padding_slider_cb(void *data, const Efl_Event *event) { - int val = elm_slider_value_get(event->object); + unsigned int val = lround(elm_slider_value_get(event->object)); Eo *win = data, *box; box = efl_key_wref_get(win, "box"); - efl_gfx_arrangement_content_padding_set(box, val, val, EINA_TRUE); + efl_gfx_arrangement_content_padding_set(box, val, val); } static void @@ -240,7 +240,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in vbox = efl_add(EFL_UI_BOX_CLASS, win, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL)); - efl_gfx_arrangement_content_padding_set(vbox, 10, 10, EINA_TRUE); + efl_gfx_arrangement_content_padding_set(vbox, 10, 10); efl_gfx_hint_margin_set(vbox, 5, 5, 5, 5); elm_win_resize_object_add(win, vbox); @@ -256,7 +256,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in hbox = efl_add(EFL_UI_BOX_CLASS, win, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL)); efl_content_set(f, hbox); - efl_gfx_arrangement_content_padding_set(hbox, 10, 0, EINA_TRUE); + efl_gfx_arrangement_content_padding_set(hbox, 10, 0); /* weights radio group */ @@ -533,7 +533,7 @@ test_ui_box(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in bx = efl_add(EFL_UI_BOX_CLASS, win, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL)); efl_key_wref_set(win, "box", bx); - efl_gfx_arrangement_content_padding_set(bx, 10, 10, EINA_TRUE); + efl_gfx_arrangement_content_padding_set(bx, 10, 10); efl_gfx_hint_align_set(bx, 0.5, 0.5); efl_gfx_hint_weight_set(bx, 1, 1); efl_content_set(f, bx); diff --git a/src/bin/elementary/test_ui_pager.c b/src/bin/elementary/test_ui_pager.c index e0df202244..34792f3832 100644 --- a/src/bin/elementary/test_ui_pager.c +++ b/src/bin/elementary/test_ui_pager.c @@ -443,12 +443,12 @@ static void pack_cb(void *data, back_btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Pack", btn, NULL, efl_added, NULL)); in_box1 = efl_add(EFL_UI_BOX_CLASS, box, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL)); sp1 = efl_add(EFL_UI_SPIN_BUTTON_CLASS, in_box1, @@ -458,7 +458,7 @@ static void pack_cb(void *data, efl_ui_pager_current_page_get(pager))); in_box2 = efl_add(EFL_UI_BOX_CLASS, box, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL)); sp2 = efl_add(EFL_UI_SPIN_BUTTON_CLASS, in_box2); @@ -628,7 +628,7 @@ static void current_page_cb(void *data, back_btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Current Page", btn, NULL, efl_added, NULL)); @@ -674,7 +674,7 @@ static void indicator_cb(void *data, back_btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Indicator", btn, NULL, efl_added, NULL)); diff --git a/src/bin/elementary/test_ui_pager_scroll.c b/src/bin/elementary/test_ui_pager_scroll.c index b6548a4b88..c60ac486b2 100644 --- a/src/bin/elementary/test_ui_pager_scroll.c +++ b/src/bin/elementary/test_ui_pager_scroll.c @@ -495,7 +495,7 @@ static void padding_cb(void *data, back_btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Padding Size", btn, NULL, efl_added, NULL)); @@ -522,7 +522,7 @@ static void side_page_num_cb(void *data, back_btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Side Page Num", btn, NULL, efl_added, NULL)); @@ -555,12 +555,12 @@ static void pack_cb(void *data, back_btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Pack", btn, NULL, efl_added, NULL)); in_box1 = efl_add(EFL_UI_BOX_CLASS, box, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL)); sp1 = efl_add(EFL_UI_SPIN_BUTTON_CLASS, in_box1, @@ -570,7 +570,7 @@ static void pack_cb(void *data, efl_ui_pager_current_page_get(pager))); in_box2 = efl_add(EFL_UI_BOX_CLASS, box, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL)); sp2 = efl_add(EFL_UI_SPIN_BUTTON_CLASS, in_box2); @@ -739,7 +739,7 @@ static void current_page_cb(void *data, back_btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Current Page", btn, NULL, efl_added, NULL)); @@ -787,7 +787,7 @@ static void scroll_block_cb(void *data, back_btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Scroll Block", btn, NULL, efl_added, NULL)); @@ -826,7 +826,7 @@ static void loop_cb(void *data EINA_UNUSED, back_btn_cb, navi)); box = efl_add(EFL_UI_RADIO_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Loop", btn, NULL, efl_added, NULL)); @@ -874,7 +874,7 @@ static void indicator_cb(void *data EINA_UNUSED, back_btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Indicator", btn, NULL, efl_added, NULL)); diff --git a/src/bin/elementary/test_ui_relative_layout.c b/src/bin/elementary/test_ui_relative_layout.c index 426d471c06..40d9891725 100644 --- a/src/bin/elementary/test_ui_relative_layout.c +++ b/src/bin/elementary/test_ui_relative_layout.c @@ -150,7 +150,7 @@ _setter_add(Eo *vbox, Eo *btn, Options option) hbox = efl_add(EFL_UI_BOX_CLASS, vbox, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), - efl_gfx_arrangement_content_padding_set(efl_added, 2, 2, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 2, 2), efl_pack(vbox, efl_added)); efl_add(EFL_UI_TEXT_CLASS, hbox, @@ -192,13 +192,13 @@ _button_frame_add(Eo *box, Eo *btn) vbox = efl_add(EFL_UI_BOX_CLASS, f, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL), - efl_gfx_arrangement_content_padding_set(efl_added, 2, 2, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 2, 2), efl_gfx_hint_margin_set(efl_added, 2, 2, 2, 2), efl_content_set(f, efl_added)); hbox = efl_add(EFL_UI_BOX_CLASS, vbox, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), - efl_gfx_arrangement_content_padding_set(efl_added, 2, 2, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 2, 2), efl_pack(vbox, efl_added)); efl_add(EFL_CANVAS_RECTANGLE_CLASS, hbox, @@ -231,7 +231,7 @@ _button_frame_add(Eo *box, Eo *btn) hbox = efl_add(EFL_UI_BOX_CLASS, vbox, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), - efl_gfx_arrangement_content_padding_set(efl_added, 2, 2, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 2, 2), efl_pack(vbox, efl_added)); efl_add(EFL_UI_TEXT_CLASS, hbox, @@ -251,7 +251,7 @@ _button_frame_add(Eo *box, Eo *btn) hbox = efl_add(EFL_UI_BOX_CLASS, vbox, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), - efl_gfx_arrangement_content_padding_set(efl_added, 2, 2, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 2, 2), efl_pack(vbox, efl_added)); efl_add(EFL_UI_TEXT_CLASS, hbox, @@ -281,7 +281,7 @@ test_ui_relative_layout(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, vo vbox = efl_add(EFL_UI_BOX_CLASS, win, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL), - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), efl_gfx_hint_margin_set(efl_added, 5, 5, 5, 5), efl_content_set(win, efl_added)); @@ -293,7 +293,7 @@ test_ui_relative_layout(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, vo hbox = efl_add(EFL_UI_BOX_CLASS, f, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), - efl_gfx_arrangement_content_padding_set(efl_added, 10, 0, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 0), efl_content_set(f, efl_added)); /* contents */ diff --git a/src/bin/elementary/test_ui_spotlight.c b/src/bin/elementary/test_ui_spotlight.c index 384da6e751..a41ab69be5 100644 --- a/src/bin/elementary/test_ui_spotlight.c +++ b/src/bin/elementary/test_ui_spotlight.c @@ -594,12 +594,12 @@ pack_cb(void *data, back_btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Pack", btn, NULL, efl_added, NULL)); in_box1 = efl_add(EFL_UI_BOX_CLASS, box, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL)); sp1 = efl_add(EFL_UI_SPIN_BUTTON_CLASS, in_box1); @@ -611,7 +611,7 @@ pack_cb(void *data, efl_ui_range_value_set(sp1, num); in_box2 = efl_add(EFL_UI_BOX_CLASS, box, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL)); sp2 = efl_add(EFL_UI_SPIN_BUTTON_CLASS, in_box2); @@ -781,7 +781,7 @@ active_index_cb(void *data, back_btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Active Index", btn, NULL, efl_added, NULL)); @@ -828,7 +828,7 @@ indicator_cb(void *data, back_btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Indicator", btn, NULL, efl_added, NULL)); diff --git a/src/bin/elementary/test_ui_tab_pager.c b/src/bin/elementary/test_ui_tab_pager.c index 1f35bf01a8..62e4e7df09 100644 --- a/src/bin/elementary/test_ui_tab_pager.c +++ b/src/bin/elementary/test_ui_tab_pager.c @@ -200,7 +200,7 @@ _current_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, _btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Current", btn, NULL, efl_added, NULL)); sp = efl_add(EFL_UI_SPIN_BUTTON_CLASS, box, @@ -301,7 +301,7 @@ _pack_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, _btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Pack", btn, NULL, efl_added, NULL)); /* Pack Begin */ @@ -329,7 +329,7 @@ _pack_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) efl_pack_end(box, efl_added)); in_box = efl_add(EFL_UI_BOX_CLASS, box, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), efl_pack_end(box, efl_added)); @@ -406,7 +406,7 @@ _unpack_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, _btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Unpack", btn, NULL, efl_added, NULL)); /* Clear */ @@ -430,7 +430,7 @@ _unpack_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) efl_pack_end(box, efl_added)); in_box = efl_add(EFL_UI_BOX_CLASS, box, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL), efl_pack_end(box, efl_added)); @@ -500,7 +500,7 @@ _tab_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, _btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Tab", btn, NULL, efl_added, NULL)); label_check = efl_add(EFL_UI_CHECK_CLASS, box); @@ -560,7 +560,7 @@ _transition_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) efl_event_callback_add(efl_added, EFL_INPUT_EVENT_CLICKED, _btn_cb, navi)); box = efl_add(EFL_UI_BOX_CLASS, navi, - efl_gfx_arrangement_content_padding_set(efl_added, 10, 10, EINA_TRUE), + efl_gfx_arrangement_content_padding_set(efl_added, 10, 10), elm_naviframe_item_push(navi, "Transition", btn, NULL, efl_added, NULL)); btn = efl_add(EFL_UI_BUTTON_CLASS, box, diff --git a/src/bin/elementary/test_ui_table.c b/src/bin/elementary/test_ui_table.c index 67f7067657..bc448bf9b5 100644 --- a/src/bin/elementary/test_ui_table.c +++ b/src/bin/elementary/test_ui_table.c @@ -79,7 +79,7 @@ static void padding_slider_cb(void *data, const Efl_Event *event) { int val = elm_slider_value_get(event->object); - efl_gfx_arrangement_content_padding_set(data, val, val, EINA_TRUE); + efl_gfx_arrangement_content_padding_set(data, val, val); } static void @@ -201,7 +201,7 @@ test_ui_table(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_ vbox = efl_add(EFL_UI_BOX_CLASS, win, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL)); - efl_gfx_arrangement_content_padding_set(vbox, 10, 10, EINA_TRUE); + efl_gfx_arrangement_content_padding_set(vbox, 10, 10); efl_gfx_hint_weight_set(vbox, 1, 1); efl_gfx_hint_margin_set(vbox, 5, 5, 5, 5); elm_win_resize_object_add(win, vbox); @@ -222,7 +222,7 @@ test_ui_table(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_ hbox = efl_add(EFL_UI_BOX_CLASS, win, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL)); elm_object_content_set(f, hbox); - efl_gfx_arrangement_content_padding_set(hbox, 10, 0, EINA_TRUE); + efl_gfx_arrangement_content_padding_set(hbox, 10, 0); /* weights radio group */ @@ -570,7 +570,7 @@ test_ui_table_linear(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, vbox = efl_add(EFL_UI_BOX_CLASS, win, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL)); - efl_gfx_arrangement_content_padding_set(vbox, 10, 10, EINA_TRUE); + efl_gfx_arrangement_content_padding_set(vbox, 10, 10); efl_gfx_hint_margin_set(vbox, 5, 5, 5, 5); elm_win_resize_object_add(win, vbox); efl_gfx_entity_visible_set(vbox, 1); @@ -591,7 +591,7 @@ test_ui_table_linear(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, hbox = efl_add(EFL_UI_BOX_CLASS, win, efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL)); elm_object_content_set(f, hbox); - efl_gfx_arrangement_content_padding_set(hbox, 5, 0, EINA_TRUE); + efl_gfx_arrangement_content_padding_set(hbox, 5, 0); efl_gfx_entity_visible_set(hbox, 1); ico = elm_icon_add(win); diff --git a/src/bin/eolian_mono/eolian/mono/documentation.hh b/src/bin/eolian_mono/eolian/mono/documentation.hh index 0035754dbe..0bdfbda64e 100644 --- a/src/bin/eolian_mono/eolian/mono/documentation.hh +++ b/src/bin/eolian_mono/eolian/mono/documentation.hh @@ -560,7 +560,7 @@ struct documentation_generator { std::string str = doc.full_text; if (!doc.since.empty()) - str += "\\
Since EFL " + doc.since; + str += "\\
Since EFL " + doc.since + "."; str += tail_text; return generate_tag_summary(sink, str, context); } diff --git a/src/bin/eolian_mono/eolian/mono/events.hh b/src/bin/eolian_mono/eolian/mono/events.hh index 6c5f12ea2a..2e4ca32c66 100644 --- a/src/bin/eolian_mono/eolian/mono/events.hh +++ b/src/bin/eolian_mono/eolian/mono/events.hh @@ -447,36 +447,30 @@ struct event_definition_generator scope_tab << "{\n" << scope_tab << scope_tab << "add\n" << scope_tab << scope_tab << "{\n" - << scope_tab << scope_tab << scope_tab << "lock (eflBindingEventLock)\n" + << scope_tab << scope_tab << scope_tab << "Efl.EventCb callerCb = (IntPtr data, ref Efl.Event.NativeStruct evt) =>\n" << scope_tab << scope_tab << scope_tab << "{\n" - << scope_tab << scope_tab << scope_tab << scope_tab << "Efl.EventCb callerCb = (IntPtr data, ref Efl.Event.NativeStruct evt) =>\n" + << scope_tab << scope_tab << scope_tab << scope_tab << "var obj = Efl.Eo.Globals.WrapperSupervisorPtrToManaged(data).Target;\n" + << scope_tab << scope_tab << scope_tab << scope_tab << "if (obj != null)\n" << scope_tab << scope_tab << scope_tab << scope_tab << "{\n" - << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "var obj = Efl.Eo.Globals.WrapperSupervisorPtrToManaged(data).Target;\n" - << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "if (obj != null)\n" + << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << event_args + << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "try\n" << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "{\n" - << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << event_args - << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "try\n" - << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "{\n" - << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "value?.Invoke(obj, args);\n" - << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "}\n" - << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "catch (Exception e)\n" - << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "{\n" - << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "Eina.Log.Error(e.ToString());\n" - << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);\n" - << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "}\n" + << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "value?.Invoke(obj, args);\n" << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "}\n" - << scope_tab << scope_tab << scope_tab << scope_tab << "};\n\n" - << scope_tab << scope_tab << scope_tab << scope_tab << "string key = \"_" << upper_c_name << "\";\n" - << scope_tab << scope_tab << scope_tab << scope_tab << "AddNativeEventHandler(" << library_name << ", key, callerCb, value);\n" - << scope_tab << scope_tab << scope_tab << "}\n" // End of lock block + << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "catch (Exception e)\n" + << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "{\n" + << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "Eina.Log.Error(e.ToString());\n" + << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);\n" + << scope_tab << scope_tab << scope_tab << scope_tab << scope_tab << "}\n" + << scope_tab << scope_tab << scope_tab << scope_tab << "}\n" + << scope_tab << scope_tab << scope_tab << "};\n\n" + << scope_tab << scope_tab << scope_tab << "string key = \"_" << upper_c_name << "\";\n" + << scope_tab << scope_tab << scope_tab << "AddNativeEventHandler(" << library_name << ", key, callerCb, value);\n" << scope_tab << scope_tab << "}\n\n" << scope_tab << scope_tab << "remove\n" << scope_tab << scope_tab << "{\n" - << scope_tab << scope_tab << scope_tab << "lock (eflBindingEventLock)\n" - << scope_tab << scope_tab << scope_tab << "{\n" - << scope_tab << scope_tab << scope_tab << scope_tab << "string key = \"_" << upper_c_name << "\";\n" - << scope_tab << scope_tab << scope_tab << scope_tab << "RemoveNativeEventHandler(" << library_name << ", key, value);\n" - << scope_tab << scope_tab << scope_tab << "}\n" // End of lock block + << scope_tab << scope_tab << scope_tab << "string key = \"_" << upper_c_name << "\";\n" + << scope_tab << scope_tab << scope_tab << "RemoveNativeEventHandler(" << library_name << ", key, value);\n" << scope_tab << scope_tab << "}\n" << scope_tab << "}\n\n" ).generate(sink, attributes::unused, context); diff --git a/src/bindings/mono/efl_mono/Bind.cs b/src/bindings/mono/efl_mono/Bind.cs index 27c78593d6..c4aec5b5e1 100644 --- a/src/bindings/mono/efl_mono/Bind.cs +++ b/src/bindings/mono/efl_mono/Bind.cs @@ -13,7 +13,7 @@ namespace Efl { /// /// It is internally instantiated and returned by generated extension methods. /// -/// (Since EFL 1.23) +/// Since EFL 1.23. /// public class BindableProperty { @@ -79,7 +79,7 @@ public class BindableProperty /// /// It is internally instantiated and returned by generated extension methods. /// -/// (Since EFL 1.23) +/// Since EFL 1.23. /// public class BindablePart { @@ -99,7 +99,7 @@ public class BindablePart /// Represents bindable factory parts as used by instances. /// -/// (Since EFL 1.23) +/// Since EFL 1.23. /// public class BindableFactoryPart { diff --git a/src/bindings/mono/efl_mono/Factory.cs b/src/bindings/mono/efl_mono/Factory.cs index f0d62bbb68..2c9f139ca7 100644 --- a/src/bindings/mono/efl_mono/Factory.cs +++ b/src/bindings/mono/efl_mono/Factory.cs @@ -15,7 +15,7 @@ namespace Efl { namespace Ui { /// factory.Style().Bind("Name"); // The factory Style property is bound to the Name property for the given model. /// /// -/// (Since EFL 1.23) +/// Since EFL 1.23. /// /// public class ItemFactory : Efl.Ui.LayoutFactory, IDisposable diff --git a/src/bindings/mono/efl_mono/GenericModel.cs b/src/bindings/mono/efl_mono/GenericModel.cs index 6b162ed58d..79cca5f2a5 100644 --- a/src/bindings/mono/efl_mono/GenericModel.cs +++ b/src/bindings/mono/efl_mono/GenericModel.cs @@ -11,7 +11,7 @@ namespace Efl { /// Generic implementation for MVVM models based on /// -/// (Since EFL 1.23) +/// Since EFL 1.23. /// public class GenericModel : Efl.Object, Efl.IModel, IDisposable { diff --git a/src/bindings/mono/efl_mono/UserModel.cs b/src/bindings/mono/efl_mono/UserModel.cs index ffe6f9e6d6..08e6f6e371 100644 --- a/src/bindings/mono/efl_mono/UserModel.cs +++ b/src/bindings/mono/efl_mono/UserModel.cs @@ -65,7 +65,7 @@ internal class ModelHelper /// PersonModel p = await model.GetAtAsync(0); /// /// -/// (Since EFL 1.23) +/// Since EFL 1.23. /// [Efl.Eo.BindingEntity] public class UserModel : Efl.MonoModelInternal, IDisposable diff --git a/src/bindings/mono/efl_mono/efl_all.cs b/src/bindings/mono/efl_mono/efl_all.cs index 52903013fe..e57da1b80e 100644 --- a/src/bindings/mono/efl_mono/efl_all.cs +++ b/src/bindings/mono/efl_mono/efl_all.cs @@ -39,7 +39,10 @@ static class UnsafeNativeMethods } } -/// Wrapper around the initialization functions of all modules. (Since EFL 1.23) +/// Wrapper around the initialization functions of all modules. +/// +/// Since EFL 1.23. +/// public static class All { private static bool InitializedUi = false; @@ -109,7 +112,10 @@ public static class All namespace Ui { -/// Initialization and shutdown of the UI libraries. (Since EFL 1.23) +/// Initialization and shutdown of the UI libraries. +/// +/// Since EFL 1.23. +/// public static class Config { public static void Init() diff --git a/src/bindings/mono/efl_mono/efl_csharp_application.cs b/src/bindings/mono/efl_mono/efl_csharp_application.cs index 5010cc9419..809b2433bd 100644 --- a/src/bindings/mono/efl_mono/efl_csharp_application.cs +++ b/src/bindings/mono/efl_mono/efl_csharp_application.cs @@ -9,7 +9,10 @@ namespace Efl namespace Csharp { -///The components to be initialized. (Since Efl 1.23) +/// The components to be initialized. +/// +/// Since EFL 1.23. +/// public enum Components { ///Basic components: Eina, Eo, Ecore, Evas and DBus. @@ -22,13 +25,13 @@ public enum Components /// This represents the entry point for the EFL framework /// You can use this class to implement the 4 abstract methods which will then be called accordingly /// All subsystems of efl are booted up correctly when the abstract methods of this class are called. +/// +/// Since EFL 1.23. /// /// /// Calls to efl outside those efl-callbacks or outside the mainloop are not allowed and will lead to issues /// /// -/// (Since EFL 1.23) -/// /// /// UserApp is the class that implements the Application abstract /// diff --git a/src/bindings/mono/eina_mono/eina_accessor.cs b/src/bindings/mono/eina_mono/eina_accessor.cs index 6442c55961..5880503062 100644 --- a/src/bindings/mono/eina_mono/eina_accessor.cs +++ b/src/bindings/mono/eina_mono/eina_accessor.cs @@ -19,7 +19,10 @@ internal class AccessorNativeFunctions } /// Accessors provide an uniform way of accessing Eina containers, -/// similar to C++ STL's and C# IEnumerable (SINCE EFL 1.23). +/// similar to C++ STL's and C# IEnumerable. +/// +/// Since EFL 1.23. +/// public class Accessor : IEnumerable, IDisposable { /// Pointer to the native accessor. @@ -133,7 +136,10 @@ public class Accessor : IEnumerable, IDisposable } } -///Accessor for Inlists (SINCE EFL 1.23). +/// Accessor for Inlists. +/// +/// Since EFL 1.23. +/// public class AccessorInList : Accessor { /// Create a new accessor wrapping the given pointer. @@ -153,7 +159,10 @@ public class AccessorInList : Accessor } } -///Accessor for Inarrays (SINCE EFL 1.23). +/// Accessor for Inarrays. +/// +/// Since EFL 1.23. +/// public class AccessorInArray : Accessor { /// Create a new accessor wrapping the given pointer. diff --git a/src/bindings/mono/eina_mono/eina_array.cs b/src/bindings/mono/eina_mono/eina_array.cs index 90cc4b4cf1..655fbab03a 100644 --- a/src/bindings/mono/eina_mono/eina_array.cs +++ b/src/bindings/mono/eina_mono/eina_array.cs @@ -45,7 +45,10 @@ public static class ArrayNativeFunctions eina_array_foreach_custom_export_mono(IntPtr array, IntPtr cb, IntPtr fdata); } -/// A container of contiguous allocated elements (SINCE EFL 1.23). +/// A container of contiguous allocated elements. +/// +/// Since EFL 1.23. +/// public class Array : IEnumerable, IDisposable { public static uint DefaultStep = 32; diff --git a/src/bindings/mono/eina_mono/eina_binbuf.cs b/src/bindings/mono/eina_mono/eina_binbuf.cs index 3dcda65bf8..66b89e272d 100644 --- a/src/bindings/mono/eina_mono/eina_binbuf.cs +++ b/src/bindings/mono/eina_mono/eina_binbuf.cs @@ -7,7 +7,9 @@ namespace Eina { /// -/// A Generic buffer designed to be a mutable string (SINCE EFL 1.23). +/// A Generic buffer designed to be a mutable string. +/// +/// Since EFL 1.23. /// public class Binbuf : IDisposable { diff --git a/src/bindings/mono/eina_mono/eina_common.cs b/src/bindings/mono/eina_mono/eina_common.cs index 7d97a9142e..77ed8b719e 100644 --- a/src/bindings/mono/eina_mono/eina_common.cs +++ b/src/bindings/mono/eina_mono/eina_common.cs @@ -41,7 +41,10 @@ internal static class NativeCustomExportFunctions efl_mono_native_efl_unref_addr_get(); } -/// Wrapper around native memory DllImport'd functions +/// Wrapper around native memory DllImport'd functions. +/// +/// Since EFL 1.23. +/// public static class MemoryNative { public static void Free(IntPtr ptr) @@ -126,6 +129,11 @@ public static class MemoryNative } } +/// +/// Conversor of raw pointer to a type and type to raw pointer +/// +/// Since EFL 1.23. +/// public static class PrimitiveConversion { public static T PointerToManaged(IntPtr nat) @@ -148,6 +156,11 @@ public static class PrimitiveConversion } } +/// +/// Conversor of string to native string and native string to string. +/// +/// Since EFL 1.23. +/// public static class StringConversion { public static IntPtr ManagedStringToNativeUtf8Alloc(string managedString) diff --git a/src/bindings/mono/eina_mono/eina_config.cs b/src/bindings/mono/eina_mono/eina_config.cs index 9f3028f62d..1b57da029c 100644 --- a/src/bindings/mono/eina_mono/eina_config.cs +++ b/src/bindings/mono/eina_mono/eina_config.cs @@ -6,6 +6,11 @@ using System.Runtime.InteropServices; namespace Eina { +/// +/// Manage the initialization and cleanup for eina. +/// +/// Since EFL 1.23. +/// public class Config { [DllImport(efl.Libs.Eina)] private static extern int eina_init(); @@ -27,8 +32,9 @@ public class Config } /// -/// Wrapper class for pointers that need some cleanup afterwards -/// like strings. +/// Wrapper class for pointers that need some cleanup afterwards like strings +/// +/// Since EFL 1.23. /// public class DisposableIntPtr : IDisposable { diff --git a/src/bindings/mono/eina_mono/eina_error.cs b/src/bindings/mono/eina_mono/eina_error.cs index f3f4fbae03..a1b4f1e9d9 100644 --- a/src/bindings/mono/eina_mono/eina_error.cs +++ b/src/bindings/mono/eina_mono/eina_error.cs @@ -6,7 +6,10 @@ using System.Runtime.InteropServices; namespace Eina { -/// Error codes from native Eina methods. (Since EFL 1.23) +/// Error codes from native Eina methods. +/// +/// Since EFL 1.23. +/// public struct Error : IComparable { int code; diff --git a/src/bindings/mono/eina_mono/eina_hash.cs b/src/bindings/mono/eina_mono/eina_hash.cs index aca590fea2..f4678a1f26 100644 --- a/src/bindings/mono/eina_mono/eina_hash.cs +++ b/src/bindings/mono/eina_mono/eina_hash.cs @@ -130,7 +130,10 @@ public static class HashNativeFunctions eina_hash_iterator_ptr_key_wrapper_new_custom_export_mono(IntPtr hash); } -/// Wrapper around native dictionary mapping keys to values. (Since EFL 1.23) +/// Wrapper around native dictionary mapping keys to values. +/// +/// Since EFL 1.23. +/// public class Hash : IEnumerable>, IDisposable { public IntPtr Handle {get; set;} = IntPtr.Zero; diff --git a/src/bindings/mono/eina_mono/eina_inarray.cs b/src/bindings/mono/eina_mono/eina_inarray.cs index 4ca3babe5a..a9c8d5fc92 100644 --- a/src/bindings/mono/eina_mono/eina_inarray.cs +++ b/src/bindings/mono/eina_mono/eina_inarray.cs @@ -67,7 +67,10 @@ public static class InarrayNativeFunctions eina_inarray_accessor_new(IntPtr array); } -/// Wrapper around an inplace array. (Since EFL 1.23) +/// Wrapper around an inplace array. +/// +/// Since EFL 1.23. +/// public class Inarray : IEnumerable, IDisposable { public static uint DefaultStep = 0; diff --git a/src/bindings/mono/eina_mono/eina_inlist.cs b/src/bindings/mono/eina_mono/eina_inlist.cs index f93c1ab485..ed98730c5d 100644 --- a/src/bindings/mono/eina_mono/eina_inlist.cs +++ b/src/bindings/mono/eina_mono/eina_inlist.cs @@ -80,7 +80,10 @@ public static class InlistNativeFunctions eina_inlist_iterator_wrapper_new_custom_export_mono(IntPtr in_list); } -/// Wrapper around an inplace list. (Since EFL 1.23) +/// Wrapper around an inplace list. +/// +/// Since EFL 1.23. +/// public class Inlist : IEnumerable, IDisposable { public IntPtr Handle {get;set;} = IntPtr.Zero; diff --git a/src/bindings/mono/eina_mono/eina_iterator.cs b/src/bindings/mono/eina_mono/eina_iterator.cs index 47d1627638..defbd9601d 100644 --- a/src/bindings/mono/eina_mono/eina_iterator.cs +++ b/src/bindings/mono/eina_mono/eina_iterator.cs @@ -29,7 +29,10 @@ public static class IteratorNativeFunctions eina_carray_iterator_new(IntPtr array); } -/// Wrapper around a native Eina iterator. (Since EFL 1.23) +/// Wrapper around a native Eina iterator. +/// +/// Since EFL 1.23. +/// public class Iterator : IEnumerable, IDisposable { public IntPtr Handle {get;set;} = IntPtr.Zero; diff --git a/src/bindings/mono/eina_mono/eina_list.cs b/src/bindings/mono/eina_mono/eina_list.cs index 7521ed6f46..cf787455bd 100644 --- a/src/bindings/mono/eina_mono/eina_list.cs +++ b/src/bindings/mono/eina_mono/eina_list.cs @@ -106,7 +106,10 @@ public static class ListNativeFunctions eina_list_last_data_get_custom_export_mono(IntPtr list); } -/// Native wrapper around a linked list of items. (Since EFL 1.23) +/// Native wrapper around a linked list of items. +/// +/// Since EFL 1.23. +/// public class List : IEnumerable, IDisposable { diff --git a/src/bindings/mono/eina_mono/eina_log.cs b/src/bindings/mono/eina_mono/eina_log.cs index 1e0de41941..5782ef6466 100644 --- a/src/bindings/mono/eina_mono/eina_log.cs +++ b/src/bindings/mono/eina_mono/eina_log.cs @@ -9,7 +9,10 @@ namespace Eina { // Manual wrappers around eina functions -/// EFL Logging facilities. (Since EFL 1.23) +/// EFL Logging facilities. +/// +/// Since EFL 1.23. +/// public class Log { [DllImport(efl.Libs.Eina)] private static extern void eina_log_print( diff --git a/src/bindings/mono/eina_mono/eina_promises.cs b/src/bindings/mono/eina_mono/eina_promises.cs index 2d0f99d991..897d200cf1 100644 --- a/src/bindings/mono/eina_mono/eina_promises.cs +++ b/src/bindings/mono/eina_mono/eina_promises.cs @@ -71,7 +71,7 @@ static internal class PromiseNativeMethods /// /// With a Promise you can attach futures to it, which will be used to notify of the value being available. /// -/// (Since Efl 1.23) +/// Since Efl 1.23. /// public class Promise : IDisposable { diff --git a/src/bindings/mono/eina_mono/eina_slice.cs b/src/bindings/mono/eina_mono/eina_slice.cs index 1e31f8134d..a0c8fd971c 100644 --- a/src/bindings/mono/eina_mono/eina_slice.cs +++ b/src/bindings/mono/eina_mono/eina_slice.cs @@ -14,7 +14,10 @@ public interface ISliceBase int Length {get;set;} }; -/// Pointer to a slice of native memory. (Since EFL 1.23) +/// Pointer to a slice of native memory. +/// +/// Since EFL 1.23. +/// [StructLayout(LayoutKind.Sequential)] public struct Slice : ISliceBase { @@ -41,7 +44,10 @@ public struct Slice : ISliceBase } } -/// Pointer to a slice of native memory. (Since EFL 1.23) +/// Pointer to a slice of native memory. +/// +/// Since EFL 1.23. +/// [StructLayout(LayoutKind.Sequential)] public struct RwSlice : ISliceBase { diff --git a/src/bindings/mono/eina_mono/eina_strbuf.cs b/src/bindings/mono/eina_mono/eina_strbuf.cs index e6a8ced124..97664d9620 100644 --- a/src/bindings/mono/eina_mono/eina_strbuf.cs +++ b/src/bindings/mono/eina_mono/eina_strbuf.cs @@ -50,7 +50,10 @@ static internal class StrbufNativeMethods } // namespace EinaNative -///Native string buffer, similar to the C# StringBuilder class. (Since EFL 1.23) +/// Native string buffer, similar to the C# StringBuilder class. +/// +/// Since EFL 1.23. +/// public class Strbuf : IDisposable { ///Pointer to the underlying native handle. diff --git a/src/bindings/mono/eina_mono/eina_value.cs b/src/bindings/mono/eina_mono/eina_value.cs index 561f696fa4..d3791bd4f3 100644 --- a/src/bindings/mono/eina_mono/eina_value.cs +++ b/src/bindings/mono/eina_mono/eina_value.cs @@ -536,7 +536,10 @@ static internal class UnsafeNativeMethods } } -/// Struct for passing Values by value to Unmanaged functions. (Since EFL 1.23) +/// Struct for passing Values by value to Unmanaged functions. +/// +/// Since EFL 1.23. +/// [StructLayout(LayoutKind.Sequential)] public struct ValueNative { @@ -549,7 +552,10 @@ public struct ValueNative } } -/// Exception for failures when setting an container item. (Since EFL 1.23) +/// Exception for failures when setting an container item. +/// +/// Since EFL 1.23. +/// [Serializable] public class SetItemFailedException : Exception { @@ -574,7 +580,10 @@ public class SetItemFailedException : Exception } } -/// Exception for methods that must have been called on a container. (Since EFL 1.23) +/// Exception for methods that must have been called on a container. +/// +/// Since EFL 1.23. +/// [Serializable] public class InvalidValueTypeException: Exception { @@ -600,7 +609,10 @@ public class InvalidValueTypeException: Exception } -/// Managed-side Enum to represent Eina_Value_Type constants. (Since EFL 1.23) +/// Managed-side Enum to represent Eina_Value_Type constants. +/// +/// Since EFL 1.23. +/// public enum ValueType { /// Signed 8 bit integer. Same as 'sbyte' @@ -729,7 +741,7 @@ static class ValueTypeMethods /// marshall_type_impl.hh in the generator). User-facing API still uses Eina.ValueType /// normally. /// -/// (Since EFL 1.23) +/// Since EFL 1.23. /// [EditorBrowsable(EditorBrowsableState.Never)] public class ValueTypeBox @@ -935,7 +947,7 @@ static class ValueTypeBridge /// blobs and structs. It is able to convert between data types, including /// to and from strings. /// -/// (Since EFL 1.23) +/// Since EFL 1.23. /// public class Value : IDisposable, IComparable, IEquatable { diff --git a/src/bindings/mono/eldbus_mono/eldbus_config.cs b/src/bindings/mono/eldbus_mono/eldbus_config.cs index b2decdf5eb..b0a0c1fd13 100644 --- a/src/bindings/mono/eldbus_mono/eldbus_config.cs +++ b/src/bindings/mono/eldbus_mono/eldbus_config.cs @@ -6,7 +6,10 @@ using System.Runtime.InteropServices; namespace eldbus { -/// Initializes Eldbus. (Since EFL 1.23) +/// Initializes Eldbus. +/// +/// Since EFL 1.23. +/// public static class Config { [DllImport(efl.Libs.Eldbus)] private static extern int eldbus_init(); diff --git a/src/bindings/mono/eldbus_mono/eldbus_connection.cs b/src/bindings/mono/eldbus_mono/eldbus_connection.cs index 8bdc7a161b..18ec10f32a 100644 --- a/src/bindings/mono/eldbus_mono/eldbus_connection.cs +++ b/src/bindings/mono/eldbus_mono/eldbus_connection.cs @@ -88,7 +88,10 @@ public static class EldbusConnectionNativeFunctions // eldbus_name_owner_changed_callback_del(IntPtr conn, string bus, Eldbus_Name_Owner_Changed_Cb cb, IntPtr cb_data); } -/// Represents a DBus connection. (Since EFL 1.23) +/// Represents a DBus connection. +/// +/// Since EFL 1.23. +/// public class Connection : IDisposable { public enum Type diff --git a/src/bindings/mono/eldbus_mono/eldbus_message.cs b/src/bindings/mono/eldbus_mono/eldbus_message.cs index bb0a8d81c9..2bd7431c98 100644 --- a/src/bindings/mono/eldbus_mono/eldbus_message.cs +++ b/src/bindings/mono/eldbus_mono/eldbus_message.cs @@ -189,7 +189,10 @@ public static class EldbusMessageNativeFunctions } -/// Represents a DBus message. (Since EFL 1.23) +/// Represents a DBus message. +/// +/// Since EFL 1.23. +/// public class Message : IDisposable { public IntPtr Handle {get;set;} = IntPtr.Zero; diff --git a/src/bindings/mono/eldbus_mono/eldbus_object.cs b/src/bindings/mono/eldbus_mono/eldbus_object.cs index b703b48fbf..d86ad6cc61 100644 --- a/src/bindings/mono/eldbus_mono/eldbus_object.cs +++ b/src/bindings/mono/eldbus_mono/eldbus_object.cs @@ -82,7 +82,10 @@ public static class EldbusObjectNativeFunctions // eldbus_object_manager_interfaces_removed(IntPtr obj, Eldbus_Signal_Cb cb, IntPtr cb_data); } -/// Represents a DBus object. (Since EFL 1.23) +/// Represents a DBus object. +/// +/// Since EFL 1.23. +/// public class Object : System.IDisposable { diff --git a/src/bindings/mono/eldbus_mono/eldbus_pending.cs b/src/bindings/mono/eldbus_mono/eldbus_pending.cs index 65b1f3be35..3570ca1842 100644 --- a/src/bindings/mono/eldbus_mono/eldbus_pending.cs +++ b/src/bindings/mono/eldbus_mono/eldbus_pending.cs @@ -41,7 +41,10 @@ public static class EldbusPendingNativeFunctions eldbus_pending_free_cb_del(IntPtr pending, IntPtr cb, IntPtr data); } -/// Represents a DBus pending. (Since EFL 1.23) +/// Represents a DBus pending. +/// +/// Since EFL 1.23. +/// public class Pending { public IntPtr Handle {get;set;} = IntPtr.Zero; diff --git a/src/bindings/mono/eldbus_mono/eldbus_proxy.cs b/src/bindings/mono/eldbus_mono/eldbus_proxy.cs index 5a2baf211a..2d692cdd65 100644 --- a/src/bindings/mono/eldbus_mono/eldbus_proxy.cs +++ b/src/bindings/mono/eldbus_mono/eldbus_proxy.cs @@ -65,7 +65,10 @@ public static class EldbusProxyNativeFunctions eldbus_proxy_event_callback_del(IntPtr proxy, int type, IntPtr cb, IntPtr cb_data); } -/// Represents a DBus proxy object. (Since EFL 1.23) +/// Represents a DBus proxy object. +/// +/// Since EFL 1.23. +/// public class Proxy : IDisposable { public IntPtr Handle {get;set;} = IntPtr.Zero; diff --git a/src/bindings/mono/eo_mono/EoWrapper.cs b/src/bindings/mono/eo_mono/EoWrapper.cs index 79d597c7b6..eae4eea3b5 100644 --- a/src/bindings/mono/eo_mono/EoWrapper.cs +++ b/src/bindings/mono/eo_mono/EoWrapper.cs @@ -20,7 +20,7 @@ namespace Eo public abstract class EoWrapper : IWrapper, IDisposable { /// Object used to synchronize access to EFL events. - protected readonly object eflBindingEventLock = new object(); + private readonly object eflBindingEventLock = new object(); private bool generated = true; private System.IntPtr handle = IntPtr.Zero; @@ -215,30 +215,33 @@ public abstract class EoWrapper : IWrapper, IDisposable /// Managed delegate that will be called by evtCaller on event raising. protected void AddNativeEventHandler(string lib, string key, Efl.EventCb evtCaller, object evtDelegate) { - IntPtr desc = Efl.EventDescription.GetNative(lib, key); - if (desc == IntPtr.Zero) + lock (eflBindingEventLock) { - Eina.Log.Error($"Failed to get native event {key}"); - return; - } + IntPtr desc = Efl.EventDescription.GetNative(lib, key); + if (desc == IntPtr.Zero) + { + Eina.Log.Error($"Failed to get native event {key}"); + return; + } - var wsPtr = Efl.Eo.Globals.efl_mono_wrapper_supervisor_get(handle); - var ws = Efl.Eo.Globals.WrapperSupervisorPtrToManaged(wsPtr); - if (ws.EoEvents.ContainsKey((desc, evtDelegate))) - { - Eina.Log.Warning($"Event proxy for event {key} already registered!"); - return; - } + var wsPtr = Efl.Eo.Globals.efl_mono_wrapper_supervisor_get(handle); + var ws = Efl.Eo.Globals.WrapperSupervisorPtrToManaged(wsPtr); + if (ws.EoEvents.ContainsKey((desc, evtDelegate))) + { + Eina.Log.Warning($"Event proxy for event {key} already registered!"); + return; + } - IntPtr evtCallerPtr = Marshal.GetFunctionPointerForDelegate(evtCaller); - if (!Efl.Eo.Globals.efl_event_callback_priority_add(handle, desc, 0, evtCallerPtr, wsPtr)) - { - Eina.Log.Error($"Failed to add event proxy for event {key}"); - return; - } + IntPtr evtCallerPtr = Marshal.GetFunctionPointerForDelegate(evtCaller); + if (!Efl.Eo.Globals.efl_event_callback_priority_add(handle, desc, 0, evtCallerPtr, wsPtr)) + { + Eina.Log.Error($"Failed to add event proxy for event {key}"); + return; + } - ws.EoEvents[(desc, evtDelegate)] = (evtCallerPtr, evtCaller); - Eina.Error.RaiseIfUnhandledException(); + ws.EoEvents[(desc, evtDelegate)] = (evtCallerPtr, evtCaller); + Eina.Error.RaiseIfUnhandledException(); + } } /// Removes the given event handler for the given event. For internal use only. @@ -247,30 +250,33 @@ public abstract class EoWrapper : IWrapper, IDisposable /// The delegate to be removed. protected void RemoveNativeEventHandler(string lib, string key, object evtDelegate) { - IntPtr desc = Efl.EventDescription.GetNative(lib, key); - if (desc == IntPtr.Zero) + lock (eflBindingEventLock) { - Eina.Log.Error($"Failed to get native event {key}"); - return; - } - - var wsPtr = Efl.Eo.Globals.efl_mono_wrapper_supervisor_get(handle); - var ws = Efl.Eo.Globals.WrapperSupervisorPtrToManaged(wsPtr); - var evtPair = (desc, evtDelegate); - if (ws.EoEvents.TryGetValue(evtPair, out var caller)) - { - if (!Efl.Eo.Globals.efl_event_callback_del(handle, desc, caller.evtCallerPtr, wsPtr)) + IntPtr desc = Efl.EventDescription.GetNative(lib, key); + if (desc == IntPtr.Zero) { - Eina.Log.Error($"Failed to remove event proxy for event {key}"); + Eina.Log.Error($"Failed to get native event {key}"); return; } - ws.EoEvents.Remove(evtPair); - Eina.Error.RaiseIfUnhandledException(); - } - else - { - Eina.Log.Error($"Trying to remove proxy for event {key} when it is not registered."); + var wsPtr = Efl.Eo.Globals.efl_mono_wrapper_supervisor_get(handle); + var ws = Efl.Eo.Globals.WrapperSupervisorPtrToManaged(wsPtr); + var evtPair = (desc, evtDelegate); + if (ws.EoEvents.TryGetValue(evtPair, out var caller)) + { + if (!Efl.Eo.Globals.efl_event_callback_del(handle, desc, caller.evtCallerPtr, wsPtr)) + { + Eina.Log.Error($"Failed to remove event proxy for event {key}"); + return; + } + + ws.EoEvents.Remove(evtPair); + Eina.Error.RaiseIfUnhandledException(); + } + else + { + Eina.Log.Error($"Trying to remove proxy for event {key} when it is not registered."); + } } } diff --git a/src/examples/elementary/table_cxx_example_01.cc b/src/examples/elementary/table_cxx_example_01.cc index 11e97b589f..f96bf8291b 100644 --- a/src/examples/elementary/table_cxx_example_01.cc +++ b/src/examples/elementary/table_cxx_example_01.cc @@ -15,7 +15,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) efl::ui::Table table(instantiate, win); win.content_set(table); - table.content_padding_set(5, 5, true); + table.content_padding_set(5, 5); // FIXME // table.homogeneous_set(true); diff --git a/src/examples/elementary/table_cxx_example_02.cc b/src/examples/elementary/table_cxx_example_02.cc index f0ca35e76d..0fe8cf0b6f 100644 --- a/src/examples/elementary/table_cxx_example_02.cc +++ b/src/examples/elementary/table_cxx_example_02.cc @@ -16,7 +16,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) efl::ui::Table table(instantiate, win); win.content_set(table); - table.content_padding_set(5, 5, true); + table.content_padding_set(5, 5); efl::canvas::Rectangle rect(instantiate, win); rect.color_set(255, 0, 0, 255); diff --git a/src/lib/edje/Edje_Edit.h b/src/lib/edje/Edje_Edit.h index 3803a64d0d..b08a85246d 100644 --- a/src/lib/edje/Edje_Edit.h +++ b/src/lib/edje/Edje_Edit.h @@ -1878,6 +1878,17 @@ EAPI Eina_Bool edje_edit_part_mouse_events_get(Evas_Object *obj, const char *par */ EAPI Eina_Bool edje_edit_part_mouse_events_set(Evas_Object *obj, const char *part, Eina_Bool mouse_events); +/** + * @brief Gets required value for part. + * + * @param obj Object being edited. + * @param part Part to get if the part is required by API. + * + * @return @c EINA_TRUE if part is required by the object's implementation, @c EINA_FALSE otherwise. + * @since 1.23 + */ +EAPI Eina_Bool edje_edit_part_required_get(Evas_Object *obj, const char *part); + /** * @brief Gets anti-aliasing for part. * diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c index ef58e91511..1aa5eb8633 100644 --- a/src/lib/edje/edje_edit.c +++ b/src/lib/edje/edje_edit.c @@ -3873,6 +3873,13 @@ edje_edit_part_mouse_events_set(Evas_Object *obj, const char *part, Eina_Bool mo return EINA_TRUE; } +EAPI Eina_Bool +edje_edit_part_required_get(Evas_Object *obj, const char *part) +{ + GET_RP_OR_RETURN(EINA_FALSE); + return rp->part->required; +} + EAPI Eina_Bool edje_edit_part_anti_alias_get(Evas_Object *obj, const char *part) { diff --git a/src/lib/efl/interfaces/efl_gfx_arrangement.eo b/src/lib/efl/interfaces/efl_gfx_arrangement.eo index 00f3fe4281..9a3cc4a444 100644 --- a/src/lib/efl/interfaces/efl_gfx_arrangement.eo +++ b/src/lib/efl/interfaces/efl_gfx_arrangement.eo @@ -40,9 +40,8 @@ interface @beta Efl.Gfx.Arrangement set {} get {} values { - pad_horiz: double(0.0); [[Horizontal padding.]] - pad_vert: double(0.0); [[Vertical padding.]] - scalable: bool(false); [[$true if scalable.]] + pad_horiz: uint(0u); [[Horizontal padding.]] + pad_vert: uint(0u); [[Vertical padding.]] } } } diff --git a/src/lib/efl/interfaces/efl_text_markup_util.eo b/src/lib/efl/interfaces/efl_text_markup_util.eo index 90d63e10d4..7f83a10272 100644 --- a/src/lib/efl/interfaces/efl_text_markup_util.eo +++ b/src/lib/efl/interfaces/efl_text_markup_util.eo @@ -5,23 +5,21 @@ class @beta Efl.Text_Markup_Util { methods { text_to_markup @static { [[Converts a given (UTF-8) text to a markup-compatible string. - This is used mainly to set a plain text with the $.markup_set - property. + This is used mainly to set a plain text with @Efl.Text_Markup.markup.set. ]] params { - @in text: string; [[The text (UTF-8) to convert to markup]] + @in text: string; [[The text (UTF-8) to convert to markup.]] } - return: mstring @move; [[The markup representation of given text]] + return: mstring @move; [[The markup representation of given text.]] } markup_to_text @static { - [[Converts a given (UTF-8) text to a markup-compatible string. - This is used mainly to set a plain text with the $.markup_set - property. + [[Converts a markup string to a (UTF-8) plain text. + This is used mainly to set a markup text with the @Efl.Text.text.set. ]] params { - @in text: string; [[The markup-text to convert to text (UTF-8)]] + @in text: string; [[The markup-text to convert to text (UTF-8).]] } - return: mstring @move; [[The text representation of given format]] + return: mstring @move; [[The text representation of given markup string.]] } } } diff --git a/src/lib/elementary/efl_page_indicator_icon.c b/src/lib/elementary/efl_page_indicator_icon.c index 258b494e0f..4a13db3d05 100644 --- a/src/lib/elementary/efl_page_indicator_icon.c +++ b/src/lib/elementary/efl_page_indicator_icon.c @@ -148,7 +148,7 @@ _efl_page_indicator_icon_efl_page_indicator_bind(Eo *obj, if (spd->pager.obj) { efl_ui_layout_orientation_set(spd->idbox, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL); - efl_gfx_arrangement_content_padding_set(spd->idbox, 15, 15, EINA_TRUE); + efl_gfx_arrangement_content_padding_set(spd->idbox, 15, 15); pd->v = eina_value_float_new(0.0); diff --git a/src/lib/elementary/efl_ui_animation_view.c b/src/lib/elementary/efl_ui_animation_view.c index 7bcbbebcd7..2941d05d74 100644 --- a/src/lib/elementary/efl_ui_animation_view.c +++ b/src/lib/elementary/efl_ui_animation_view.c @@ -688,6 +688,11 @@ EOLIAN static void _efl_ui_animation_view_efl_object_destructor(Eo *obj, Efl_Ui_Animation_View_Data *pd EINA_UNUSED) { + Efl_Gfx_Vg_Value_Provider *vp; + EINA_LIST_FREE(pd->vp_list, vp) + efl_unref(vp); + eina_list_free(pd->vp_list); + efl_destructor(efl_super(obj, MY_CLASS)); } @@ -1237,6 +1242,37 @@ _efl_ui_animation_view_efl_ui_widget_widget_sub_object_del(Eo *obj, Efl_Ui_Anima efl_canvas_group_change(obj); return EINA_TRUE; + +EOLIAN static void +_efl_ui_animation_view_value_provider_override(Eo *obj EINA_UNUSED, Efl_Ui_Animation_View_Data *pd, Efl_Gfx_Vg_Value_Provider *value_provider) +{ + if (!value_provider) return; + + if (pd->vp_list) + { + const char *keypath1 = efl_gfx_vg_value_provider_keypath_get(value_provider); + if (!keypath1) + { + ERR("Couldn't override Value Provider(%p). Keypath is NULL.", value_provider); + return; + } + const Eina_List *l; + Efl_Gfx_Vg_Value_Provider *_vp; + EINA_LIST_FOREACH(pd->vp_list, l, _vp) + { + const char *keypath2 = efl_gfx_vg_value_provider_keypath_get(_vp); + if (!strcmp(keypath1, keypath2)) + { + pd->vp_list = eina_list_remove(pd->vp_list, _vp); + efl_unref(_vp); + break; + } + } + } + + efl_ref(value_provider); + pd->vp_list = eina_list_append(pd->vp_list, value_provider); + efl_key_data_set(pd->vg, "_vg_value_providers", pd->vp_list); } EAPI Elm_Animation_View* diff --git a/src/lib/elementary/efl_ui_animation_view.eo b/src/lib/elementary/efl_ui_animation_view.eo index 3486ef865d..2213746076 100644 --- a/src/lib/elementary/efl_ui_animation_view.eo +++ b/src/lib/elementary/efl_ui_animation_view.eo @@ -1,5 +1,5 @@ -enum Efl.Ui.Animation_View_State +enum @beta Efl.Ui.Animation_View_State { [[State of animation view]] not_ready, [[Animation is not ready to play. (Probably, it didn't file set yet or failed to read file.]] @@ -256,7 +256,21 @@ class @beta Efl.Ui.Animation_View extends Efl.Ui.Widget implements Efl.Gfx.View, ]] } } + value_provider_override{ + [[Override each value of the animation object. + Values can be properties of Efl.Gfx.Vg.Value_provider such as color and matrix information. + Example: + Eo *vp = efl_add(EFL_GFX_VG_VALUE_PROVIDER_CLASS, NULL); + @Efl.Gfx.Vg.Value_Provider.keypath.set(vp, "SomeLayer:SomeObject:SomeContents"); + // Set vp property + @.value_provider_override(target_animation_view, vg); + See @Efl.Gfx.Vg.Value_Provider + ]] + params { + value_provider: Efl.Gfx.Vg.Value_Provider; [[ Override the values of the animation object. this should have keypath infomation. See @Efl.Gfx.Vg.Value_Provider ]] + } + } } implements { Efl.Object.constructor; diff --git a/src/lib/elementary/efl_ui_animation_view_private.h b/src/lib/elementary/efl_ui_animation_view_private.h index b5bcd56ff2..c0d2b36186 100644 --- a/src/lib/elementary/efl_ui_animation_view_private.h +++ b/src/lib/elementary/efl_ui_animation_view_private.h @@ -20,6 +20,7 @@ struct _Efl_Ui_Animation_View_Data double min_progress; double max_progress; Eina_List *subs; + Eina_List *vp_list; Eina_Bool play_back : 1; Eina_Bool auto_play : 1; diff --git a/src/lib/elementary/efl_ui_average_model.eo b/src/lib/elementary/efl_ui_average_model.eo index 98d97598f8..9c1413995a 100644 --- a/src/lib/elementary/efl_ui_average_model.eo +++ b/src/lib/elementary/efl_ui_average_model.eo @@ -3,10 +3,10 @@ class @beta Efl.Ui.Average_Model extends Efl.Ui.Exact_Model [[Class to be used to store object item size for List/Grid View. This model provide the same feature as @Efl.Ui.Exact_Model except for the - @Efl.Model.property "$total.width" and "$total.height" which reflect an + @Efl.Model.property $["total.width"] and $["total.height"] which reflect an estimated value of the total size by using the currently know size from its children as an average size for all its children. As more children fill - "$self.width" and "$self.height", this model will figure out a more precise + $["self.width"] and $["self.height"], this model will figure out a more precise answer. Once all children size is known, the result will be exact and the same as @Efl.Ui.Exact_Model. diff --git a/src/lib/elementary/efl_ui_bg.c b/src/lib/elementary/efl_ui_bg.c index 614896dd2c..51b12158db 100644 --- a/src/lib/elementary/efl_ui_bg.c +++ b/src/lib/elementary/efl_ui_bg.c @@ -292,7 +292,7 @@ _efl_ui_bg_legacy_efl_object_constructor(Eo *obj, void *_pd EINA_UNUSED) efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY); EFL_UI_BG_DATA_GET_OR_RETURN_VAL(obj, pd, obj); efl_gfx_entity_scale_set(pd->img, 1.0); - + efl_ui_layout_finger_size_multiplier_set(obj, 0, 0); return obj; } diff --git a/src/lib/elementary/efl_ui_box.c b/src/lib/elementary/efl_ui_box.c index 3cee95ccab..7d97ec3f85 100644 --- a/src/lib/elementary/efl_ui_box.c +++ b/src/lib/elementary/efl_ui_box.c @@ -406,27 +406,23 @@ _efl_ui_box_efl_ui_layout_orientable_orientation_get(const Eo *obj EINA_UNUSED, } EOLIAN static void -_efl_ui_box_efl_gfx_arrangement_content_padding_set(Eo *obj, Efl_Ui_Box_Data *pd, double h, double v, Eina_Bool scalable) +_efl_ui_box_efl_gfx_arrangement_content_padding_set(Eo *obj, Efl_Ui_Box_Data *pd, unsigned int h, unsigned int v) { - scalable = !!scalable; if (h < 0) h = 0; if (v < 0) v = 0; - if (EINA_DBL_EQ(pd->pad.h, h) && EINA_DBL_EQ(pd->pad.v, v) && - (pd->pad.scalable == scalable)) + if (EINA_DBL_EQ(pd->pad.h, h) && EINA_DBL_EQ(pd->pad.v, v)) return; pd->pad.h = h; pd->pad.v = v; - pd->pad.scalable = scalable; efl_pack_layout_request(obj); } EOLIAN static void -_efl_ui_box_efl_gfx_arrangement_content_padding_get(const Eo *obj EINA_UNUSED, Efl_Ui_Box_Data *pd, double *h, double *v, Eina_Bool *scalable) +_efl_ui_box_efl_gfx_arrangement_content_padding_get(const Eo *obj EINA_UNUSED, Efl_Ui_Box_Data *pd, unsigned int *h, unsigned int *v) { - if (scalable) *scalable = pd->pad.scalable; if (h) *h = pd->pad.h; if (v) *v = pd->pad.v; } diff --git a/src/lib/elementary/efl_ui_box_private.h b/src/lib/elementary/efl_ui_box_private.h index 4cb94c5d8f..bc9fca1d47 100644 --- a/src/lib/elementary/efl_ui_box_private.h +++ b/src/lib/elementary/efl_ui_box_private.h @@ -19,8 +19,7 @@ struct _Efl_Ui_Box_Data Eina_List *children; struct { - double h, v; - Eina_Bool scalable: 1; + unsigned int h, v; } pad; struct { diff --git a/src/lib/elementary/efl_ui_container_layout.c b/src/lib/elementary/efl_ui_container_layout.c index 34a8bbb49b..60bdaa8d5b 100644 --- a/src/lib/elementary/efl_ui_container_layout.c +++ b/src/lib/elementary/efl_ui_container_layout.c @@ -111,16 +111,12 @@ void _efl_ui_container_layout_init(Eo* obj, Efl_Ui_Container_Layout_Calc *calc) { Eina_Rect geom; - Eina_Bool pad_scalable; geom = efl_gfx_entity_geometry_get(obj); efl_gfx_hint_margin_get(obj, &calc[0].margin[0], &calc[0].margin[1], &calc[1].margin[0], &calc[1].margin[1]); - calc[0].scale = calc[1].scale = efl_gfx_entity_scale_get(obj); - efl_gfx_arrangement_content_padding_get(obj, &calc[0].pad, &calc[1].pad, &pad_scalable); - calc[0].pad = pad_scalable ? (calc[0].pad * calc[0].scale) : calc[0].pad; - calc[1].pad = pad_scalable ? (calc[1].pad * calc[1].scale) : calc[1].pad; + efl_gfx_arrangement_content_padding_get(obj, &calc[0].pad, &calc[1].pad); // pack align is used if "no item has a weight" efl_gfx_arrangement_content_align_get(obj, &calc[0].align, &calc[1].align); diff --git a/src/lib/elementary/efl_ui_container_layout.h b/src/lib/elementary/efl_ui_container_layout.h index 097abee13b..031dd30190 100644 --- a/src/lib/elementary/efl_ui_container_layout.h +++ b/src/lib/elementary/efl_ui_container_layout.h @@ -30,8 +30,7 @@ struct _Efl_Ui_Container_Layout_Calc int size; int margin[2]; double align; - double scale; - double pad; + unsigned int pad; Eina_Bool fill : 1; }; diff --git a/src/lib/elementary/efl_ui_exact_model.eo b/src/lib/elementary/efl_ui_exact_model.eo index 691a7504ef..0e63976e54 100644 --- a/src/lib/elementary/efl_ui_exact_model.eo +++ b/src/lib/elementary/efl_ui_exact_model.eo @@ -2,13 +2,13 @@ class @beta Efl.Ui.Exact_Model extends Efl.Ui.Size_Model { [[Class to be used to store object item size for List/Grid View. - This model provide "$total.width" and "$total.height" as an accumulated size of all - its children "$self.width" and "$self.height" @Efl.Model.property. This is currently + This model provide $["total.width"] and $["total.height"] as an accumulated size of all + its children $["self.width"] and $["self.height"] @Efl.Model.property. This is currently assuming a vertical list only. - This model will return an error code EAGAIN for "$item.width" and "$item.height" all + This model will return an error code $EAGAIN for $["item.width"] and $["item.height"] all the time and the View that use this Model should continue to get this value even after - computing all the "$self.width" and "$self.height" of this object children.]] + computing all the $["self.width"] and $["self.height"] of this object children.]] implements { Efl.Object.constructor; diff --git a/src/lib/elementary/efl_ui_homogeneous_model.eo b/src/lib/elementary/efl_ui_homogeneous_model.eo index 996c1ac364..87d38b52b4 100644 --- a/src/lib/elementary/efl_ui_homogeneous_model.eo +++ b/src/lib/elementary/efl_ui_homogeneous_model.eo @@ -2,16 +2,16 @@ class @beta Efl.Ui.Homogeneous_Model extends Efl.Ui.Size_Model { [[Class to be used to store object item size for List/Grid View. - This model provides the properties "$item.width" and "$item.height" which have the - same value for all siblings of this object. The first sibling that defines "$self.width" - and "$self.height" set them for all other siblings and also set "$item.width" and - "$item.height" for the parent (See @Efl.Ui.Size_Model). + This model provides the properties $["item.width"] and $["item.height"] which have the + same value for all siblings of this object. The first sibling that defines $["self.width"] + and $["self.height"] set them for all other siblings and also set $["item.width"] and + $["item.height"] for the parent (See @Efl.Ui.Size_Model). - Subsequent attempts to set "$self.width" or "$self.height" will fail with a + Subsequent attempts to set $["self.width"] or $["self.height"] will fail with a Read Only error code. - The properties "$total.width" and "$total.height" are computed from the number of node, - the "$self.width" and "$self.height" assuming that the View is a vertical list.]] + The properties $["total.width"] and $["total.height"] are computed from the number of node, + the $["self.width"] and $["self.height"] assuming that the View is a vertical list.]] implements { Efl.Object.constructor; diff --git a/src/lib/elementary/efl_ui_layout_factory.eo b/src/lib/elementary/efl_ui_layout_factory.eo index ac15fcc73d..4640004bec 100644 --- a/src/lib/elementary/efl_ui_layout_factory.eo +++ b/src/lib/elementary/efl_ui_layout_factory.eo @@ -1,13 +1,24 @@ class @beta Efl.Ui.Layout_Factory extends Efl.Ui.Caching_Factory { - [[Efl Ui Layout Factory class]] + [[@Efl.Ui.Factory that creates @Efl.Ui.Layout objects with caching. + + This factory is meant to be used by @Efl.Ui.View objects that use + items with Layout and need the items to be created, updated, + their model set and connected automatically before the @Efl.Ui.View + receives the item instance. + + This class inherits from @Efl.Ui.Caching_Factory and inherits + all its properties. + ]] methods { theme_config { - [[]] + [[Set the theme that will be applied to the created @Efl.Ui.Layout objects. + See @Efl.Ui.Layout_Base.theme for more details. + ]] params { klass: string; [[The class of the group.]] group: string; [[The group.]] - style: string; [[The style to used.]] + style: string; [[The style to use.]] } } } diff --git a/src/lib/elementary/efl_ui_size_model.eo b/src/lib/elementary/efl_ui_size_model.eo index 333347d478..a0bf0d1a1d 100644 --- a/src/lib/elementary/efl_ui_size_model.eo +++ b/src/lib/elementary/efl_ui_size_model.eo @@ -2,14 +2,14 @@ class @beta Efl.Ui.Size_Model extends Efl.Composite_Model { [[Class to be used to store object item size for List/Grid View. - This model provide the following properties that can be retrived by + This model provide the following properties that can be retrieved by @Efl.Model.properties.get : - - "$self.width" and "$self.height" define the size of this object from the point of - view of the @Efl.Ui.View that use it. It only apply on children and not on the + - $["self.width"] and $["self.height"] define the size of this object from the point of + view of the @Efl.Ui.View that use it. They only apply to children and not to the top root object. - - "$item.width" and "$item.height" define all the children size and is available + - $["item.width"] and $["item.height"] define all the children size and are available only on @Efl.Ui.Size_Model that do have children. - - "$total.width" and "$total.height" define the accumulated size used by all the children. + - $["total.width"] and $["total.height"] define the accumulated size used by all the children. Only vertical list accumulation logic is implemented at this point.]] data: null; diff --git a/src/lib/elementary/efl_ui_spotlight_indicator_icon.c b/src/lib/elementary/efl_ui_spotlight_indicator_icon.c index 2165ec94f7..c7bc2a31de 100644 --- a/src/lib/elementary/efl_ui_spotlight_indicator_icon.c +++ b/src/lib/elementary/efl_ui_spotlight_indicator_icon.c @@ -81,7 +81,7 @@ _efl_ui_spotlight_indicator_icon_efl_ui_spotlight_indicator_bind(Eo *obj, Efl_Ui efl_content_set(efl_part(pd->container, "efl.indicator"), pd->indicator); efl_gfx_entity_visible_set(pd->indicator, EINA_TRUE); efl_ui_layout_orientation_set(pd->indicator, EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL); - efl_gfx_arrangement_content_padding_set(pd->indicator, 15, 15, EINA_TRUE); + efl_gfx_arrangement_content_padding_set(pd->indicator, 15, 15); for (int i = 0; i < efl_content_count(pd->container); ++i) { diff --git a/src/lib/elementary/efl_ui_table.c b/src/lib/elementary/efl_ui_table.c index 865fc76577..9e70116953 100644 --- a/src/lib/elementary/efl_ui_table.c +++ b/src/lib/elementary/efl_ui_table.c @@ -267,27 +267,23 @@ _efl_ui_table_efl_object_invalidate(Eo *obj, Efl_Ui_Table_Data *pd) } EOLIAN static void -_efl_ui_table_efl_gfx_arrangement_content_padding_set(Eo *obj, Efl_Ui_Table_Data *pd, double h, double v, Eina_Bool scalable) +_efl_ui_table_efl_gfx_arrangement_content_padding_set(Eo *obj, Efl_Ui_Table_Data *pd, unsigned int h, unsigned int v) { - scalable = !!scalable; if (h < 0) h = 0; if (v < 0) v = 0; - if (EINA_DBL_EQ(pd->pad.h, h) && EINA_DBL_EQ(pd->pad.v, v) && - (pd->pad.scalable == scalable)) + if (EINA_DBL_EQ(pd->pad.h, h) && EINA_DBL_EQ(pd->pad.v, v)) return; pd->pad.h = h; pd->pad.v = v; - pd->pad.scalable = scalable; efl_pack_layout_request(obj); } EOLIAN static void -_efl_ui_table_efl_gfx_arrangement_content_padding_get(const Eo *obj EINA_UNUSED, Efl_Ui_Table_Data *pd, double *h, double *v, Eina_Bool *scalable) +_efl_ui_table_efl_gfx_arrangement_content_padding_get(const Eo *obj EINA_UNUSED, Efl_Ui_Table_Data *pd, unsigned int *h, unsigned int *v) { - if (scalable) *scalable = pd->pad.scalable; if (h) *h = pd->pad.h; if (v) *v = pd->pad.v; } diff --git a/src/lib/elementary/efl_ui_table_private.h b/src/lib/elementary/efl_ui_table_private.h index 47d1cc4cb7..5b24e046fb 100644 --- a/src/lib/elementary/efl_ui_table_private.h +++ b/src/lib/elementary/efl_ui_table_private.h @@ -38,8 +38,7 @@ struct _Efl_Ui_Table_Data int last_col, last_row; // only used by pack api Efl_Ui_Layout_Orientation fill_dir; // direction in which cells are added when using pack() struct { - double h, v; - Eina_Bool scalable: 1; + unsigned int h, v; } pad; struct { double h, v; diff --git a/src/lib/elementary/efl_ui_tags.c b/src/lib/elementary/efl_ui_tags.c index b06e4a512f..2a8fb8417a 100644 --- a/src/lib/elementary/efl_ui_tags.c +++ b/src/lib/elementary/efl_ui_tags.c @@ -50,10 +50,10 @@ _shrink_mode_set(Eo *obj, if (shrink == EINA_TRUE) { Evas_Coord w = 0; - double box_inner_item_width_padding = 0; + unsigned int box_inner_item_width_padding = 0; Eina_Value val; - efl_gfx_arrangement_content_padding_get(sd->box, &box_inner_item_width_padding, NULL, NULL); + efl_gfx_arrangement_content_padding_get(sd->box, &box_inner_item_width_padding, NULL); // unpack all items and entry efl_pack_unpack_all(sd->box); EINA_LIST_FOREACH(sd->layouts, l, layout) @@ -69,7 +69,7 @@ _shrink_mode_set(Eo *obj, Eina_Size2D label_min = efl_gfx_hint_size_combined_min_get(sd->label); w -= label_min.w; - w -= box_inner_item_width_padding; + w -= (Evas_Coord)box_inner_item_width_padding; } layout = NULL; @@ -487,14 +487,14 @@ _box_resize_cb(void *data, Eina_Rect r; Eina_List *l; Eo *layout; - double hpad; + unsigned int hpad; Efl_Ui_Tags_Data *sd = efl_data_scope_get(data, EFL_UI_TAGS_CLASS); r = efl_gfx_entity_geometry_get(sd->box); if ((r.w <= elm_config_finger_size_get()) || (r.h <= elm_config_finger_size_get())) return; - efl_gfx_arrangement_content_padding_get(obj, &hpad, NULL, NULL); + efl_gfx_arrangement_content_padding_get(obj, &hpad, NULL); if (sd->h_box < r.h) efl_event_callback_call @@ -511,9 +511,9 @@ _box_resize_cb(void *data, min = efl_gfx_hint_size_combined_min_get(layout); - if (min.w > r.w - hpad) + if (min.w > r.w - (int)hpad) { - min.w = r.w - hpad; + min.w = r.w - (int)hpad; efl_gfx_hint_size_min_set(layout, EINA_SIZE2D(min.w, min.h)); efl_gfx_entity_size_set(layout, EINA_SIZE2D(min.w, min.h)); } @@ -746,7 +746,7 @@ _view_init(Evas_Object *obj, Efl_Ui_Tags_Data *sd) if (str) hpad = atoi(str); str = elm_layout_data_get(obj, "vertical_pad"); if (str) vpad = atoi(str); - efl_gfx_arrangement_content_padding_set(sd->box, hpad, vpad, EINA_TRUE); + efl_gfx_arrangement_content_padding_set(sd->box, hpad, vpad); efl_content_set(efl_part(obj, "efl.box"), sd->box); diff --git a/src/lib/elementary/efl_ui_video_legacy.h b/src/lib/elementary/efl_ui_video_legacy.h index 1d4d3c3621..d010d3a53e 100644 --- a/src/lib/elementary/efl_ui_video_legacy.h +++ b/src/lib/elementary/efl_ui_video_legacy.h @@ -1,5 +1,10 @@ typedef Eo Elm_Video; +/** + * @defgroup Elm_Video Video + * @ingroup Elementary + */ + /** * @brief Add a new Elm_Player object to the given parent Elementary (container) object. * diff --git a/src/lib/evas/Efl_Canvas.h b/src/lib/evas/Efl_Canvas.h index 66fe692a72..cd8bf52693 100644 --- a/src/lib/evas/Efl_Canvas.h +++ b/src/lib/evas/Efl_Canvas.h @@ -81,6 +81,7 @@ extern "C" { #include #include #include +#include #include #include diff --git a/src/lib/evas/Evas_Eo.h b/src/lib/evas/Evas_Eo.h index 593c4d9a69..5f46511e84 100644 --- a/src/lib/evas/Evas_Eo.h +++ b/src/lib/evas/Evas_Eo.h @@ -439,6 +439,7 @@ typedef void (Evas_Canvas3D_Surface_Func)(Evas_Real *out_x, #include "canvas/efl_canvas_proxy.eo.h" #include "canvas/efl_gfx_mapping.eo.h" +#include "canvas/efl_gfx_vg_value_provider.eo.h" /** * @ingroup Evas_Object_VG * diff --git a/src/lib/evas/canvas/efl_canvas_vg_object.c b/src/lib/evas/canvas/efl_canvas_vg_object.c index 0c8e50bed3..660d1ebe1a 100644 --- a/src/lib/evas/canvas/efl_canvas_vg_object.c +++ b/src/lib/evas/canvas/efl_canvas_vg_object.c @@ -616,6 +616,8 @@ _cache_vg_entry_render(Evas_Object_Protected_Data *obj, h = size.h; } + if (pd->vg_entry->vfd) + pd->vg_entry->vfd->vp_list = efl_key_data_get(obj->object, "_vg_value_providers"); root = evas_cache_vg_tree_get(vg_entry, pd->frame_idx); if (!root) return; diff --git a/src/lib/evas/canvas/efl_gfx_vg_value_provider.c b/src/lib/evas/canvas/efl_gfx_vg_value_provider.c new file mode 100644 index 0000000000..ccf334924f --- /dev/null +++ b/src/lib/evas/canvas/efl_gfx_vg_value_provider.c @@ -0,0 +1,129 @@ +#include "efl_gfx_vg_value_provider.h" + +#define MY_CLASS EFL_GFX_VG_VALUE_PROVIDER_CLASS + +EOLIAN static Eo * +_efl_gfx_vg_value_provider_efl_object_constructor(Eo *obj, + Efl_Gfx_Vg_Value_Provider_Data *pd EINA_UNUSED) +{ + obj = efl_constructor(efl_super(obj, MY_CLASS)); + + pd->flag = EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_NONE; + + return obj; +} + +EOLIAN static void +_efl_gfx_vg_value_provider_efl_object_destructor(Eo *obj, + Efl_Gfx_Vg_Value_Provider_Data *pd EINA_UNUSED) +{ + if (pd->keypath) eina_stringshare_del(pd->keypath); + efl_destructor(efl_super(obj, MY_CLASS)); +} + +EOLIAN void +_efl_gfx_vg_value_provider_keypath_set(Eo *obj EINA_UNUSED, Efl_Gfx_Vg_Value_Provider_Data *pd, Eina_Stringshare *keypath) +{ + if(!keypath) return; + eina_stringshare_replace(&pd->keypath, keypath); +} + +EOLIAN Eina_Stringshare* +_efl_gfx_vg_value_provider_keypath_get(const Eo *obj EINA_UNUSED, Efl_Gfx_Vg_Value_Provider_Data *pd) +{ + return pd->keypath; +} + +EOLIAN void +_efl_gfx_vg_value_provider_transform_set(Eo *obj EINA_UNUSED, Efl_Gfx_Vg_Value_Provider_Data *pd, Eina_Matrix3 *m) +{ + if (m) + { + if (!pd->m) + { + pd->m = malloc(sizeof (Eina_Matrix3)); + if (!pd->m) return; + } + pd->flag = pd->flag | EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_TRANSFORM_MATRIX; + memcpy(pd->m, m, sizeof (Eina_Matrix3)); + } + else + { + free(pd->m); + pd->m = NULL; + } +} + +EOLIAN Eina_Matrix3* +_efl_gfx_vg_value_provider_transform_get(const Eo *obj EINA_UNUSED, Efl_Gfx_Vg_Value_Provider_Data *pd) +{ + return pd->m; +} + +EOAPI void +_efl_gfx_vg_value_provider_fill_color_set(Eo *obj EINA_UNUSED, Efl_Gfx_Vg_Value_Provider_Data *pd, int r, int g, int b, int a) +{ + pd->flag = pd->flag | EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_FILL_COLOR; + + pd->fill.r = r; + pd->fill.g = g; + pd->fill.b = b; + pd->fill.a = a; +} + +EOAPI void +_efl_gfx_vg_value_provider_fill_color_get(const Eo *obj EINA_UNUSED, Efl_Gfx_Vg_Value_Provider_Data *pd, int *r, int *g, int *b, int *a) +{ + if (r) *r = pd->fill.r; + if (g) *g = pd->fill.g; + if (b) *b = pd->fill.b; + if (a) *a = pd->fill.a; +} + +EOAPI void +_efl_gfx_vg_value_provider_stroke_color_set(Eo *obj EINA_UNUSED, Efl_Gfx_Vg_Value_Provider_Data *pd, int r, int g, int b, int a) +{ + pd->flag = pd->flag | EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_STROKE_COLOR; + + pd->stroke.r = r; + pd->stroke.g = g; + pd->stroke.b = b; + pd->stroke.a = a; +} + +EOAPI void +_efl_gfx_vg_value_provider_stroke_color_get(const Eo *obj EINA_UNUSED, Efl_Gfx_Vg_Value_Provider_Data *pd, int *r, int *g, int *b, int *a) +{ + if (r) *r = pd->stroke.r; + if (g) *g = pd->stroke.g; + if (b) *b = pd->stroke.b; + if (a) *a = pd->stroke.a; +} + +EOAPI void +_efl_gfx_vg_value_provider_stroke_width_set(Eo *obj EINA_UNUSED, Efl_Gfx_Vg_Value_Provider_Data *pd, double w) +{ + if (w < 0) return ; + + pd->flag = pd->flag | EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_STROKE_WIDTH; + pd->stroke.width = w; +} + +EOAPI double +_efl_gfx_vg_value_provider_stroke_width_get(const Eo *obj EINA_UNUSED, Efl_Gfx_Vg_Value_Provider_Data *pd) +{ + return pd->stroke.width; +} + +/* This function only use in internal */ +Efl_Gfx_Vg_Value_Provider_Change_Flag +efl_gfx_vg_value_provider_changed_flag_get(Eo *obj) +{ + EINA_SAFETY_ON_FALSE_RETURN_VAL(efl_isa(obj, MY_CLASS), EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_NONE); + Efl_Gfx_Vg_Value_Provider_Data *pd = efl_data_scope_get(obj, MY_CLASS); + if (!pd) return EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_NONE; + return pd->flag; +} + + +#include "efl_gfx_vg_value_provider.eo.c" diff --git a/src/lib/evas/canvas/efl_gfx_vg_value_provider.eo b/src/lib/evas/canvas/efl_gfx_vg_value_provider.eo new file mode 100644 index 0000000000..2e21774a2f --- /dev/null +++ b/src/lib/evas/canvas/efl_gfx_vg_value_provider.eo @@ -0,0 +1,72 @@ +class @beta Efl.Gfx.Vg.Value_Provider extends Efl.Object +{ + [[Efl Vector Value Provider class. + + This class is a set of that contain the value of several properties provided by content. + User can use this class to change the properties for the specific content specified by the keypath. + ]] + methods { + @property keypath { + [[ Keypath is the target a specific content or a set of contents that will be updated. + It can include the specific name of the contents, wildcard(*) or Globstar(**). + ]] + get { + } + set { + } + values { + keypath: stringshare; [[ The keypath of contents ]] + } + } + @property transform { + [[ User can adjust transform value of the content specified by the keypath. ]] + set { + } + get { + } + values { + m: ptr(Eina.Matrix3); [[ Matrix Value. ]] + } + } + @property fill_color { + [[ User can adjust color value of the fill content specified by the keypath. ]] + set { + } + get { + } + values { + r: int; [[ Red color value of fill. ]] + g: int; [[ Green color value of fill. ]] + b: int; [[ Blue color value of fill. ]] + a: int; [[ Alpha value of fill. ]] + } + } + @property stroke_color { + [[ User can adjust color value of the stroke content specified by the keypath. ]] + set { + } + get { + } + values { + r: int; [[ Red color value of stroke. ]] + g: int; [[ Green color value of stroke. ]] + b: int; [[ Blue color value of stroke. ]] + a: int; [[ Alpha value of stroke. ]] + } + } + @property stroke_width { + [[ User can adjust width value of the stroke content specified by the keypath. ]] + set { + } + get { + } + values { + width: double; [[ Width value of stroke. ]] + } + } + } + implements { + Efl.Object.constructor; + Efl.Object.destructor; + } +} diff --git a/src/lib/evas/canvas/efl_gfx_vg_value_provider.h b/src/lib/evas/canvas/efl_gfx_vg_value_provider.h new file mode 100644 index 0000000000..5b4b806000 --- /dev/null +++ b/src/lib/evas/canvas/efl_gfx_vg_value_provider.h @@ -0,0 +1,33 @@ +#ifndef EFL_GFX_VG_VALUE_PROVIDER_H +#define EFL_GFX_VG_VALUE_PROVIDER_H + +#include "evas_common_private.h" +#include "evas_private.h" +#include "evas_vg_private.h" + +struct _Efl_Gfx_Vg_Value_Provider_Data +{ + Eo* obj; + Efl_Gfx_Vg_Value_Provider_Change_Flag flag; + + Eina_Stringshare *keypath; + + Eina_Matrix3 *m; + struct { + int r; + int g; + int b; + int a; + } fill; + struct { + int r; + int g; + int b; + int a; + double width; + } stroke; +}; + +typedef struct _Efl_Gfx_Vg_Value_Provider_Data Efl_Gfx_Vg_Value_Provider_Data; + +#endif diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 82c66e3c0d..1ec71f2f53 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -9737,7 +9737,7 @@ _evas_textblock_cursor_cluster_pos_get(Evas_Textblock_Cursor *cur, Eina_Bool inc Evas_Text_Props_Info *info = ti->text_props.info; int it_index = ((inc) ? cur->pos : ret) - last_it->text_pos; - Evas_Font_OT_Info ot; + Evas_Font_OT_Info ot = {0}; if (ti->text_props.len != ti->text_props.text_len)/*if code point count same as glyph count skip it*/ { Evas_BiDi_Direction itdir = ti->text_props.bidi_dir; diff --git a/src/lib/evas/canvas/evas_vg_private.h b/src/lib/evas/canvas/evas_vg_private.h index 6dcd7215dd..9ec89633c2 100644 --- a/src/lib/evas/canvas/evas_vg_private.h +++ b/src/lib/evas/canvas/evas_vg_private.h @@ -9,6 +9,8 @@ typedef struct _Efl_Canvas_Vg_Gradient_Data Efl_Canvas_Vg_Gradient_Data; typedef struct _Efl_Canvas_Vg_Interpolation Efl_Canvas_Vg_Interpolation; typedef struct _Efl_Canvas_Vg_Object_Data Efl_Canvas_Vg_Object_Data; +typedef enum _Efl_Gfx_Vg_Value_Provider_Change_Flag Efl_Gfx_Vg_Value_Provider_Change_Flag; + typedef struct _Vg_Cache { Eina_Hash *vfd_hash; @@ -128,6 +130,15 @@ struct _Efl_Canvas_Vg_Interpolation Eina_Point_3D skew; }; +enum _Efl_Gfx_Vg_Value_Provider_Change_Flag +{ + EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_NONE = 0, + EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_FILL_COLOR = 2, + EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_STROKE_COLOR = 4, + EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_STROKE_WIDTH = 8, + EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_TRANSFORM_MATRIX = 16 +}; +Efl_Gfx_Vg_Value_Provider_Change_Flag efl_gfx_vg_value_provider_changed_flag_get(Eo *obj); void evas_cache_vg_init(void); void evas_cache_vg_shutdown(void); diff --git a/src/lib/evas/canvas/meson.build b/src/lib/evas/canvas/meson.build index c306c900a3..758a8db064 100644 --- a/src/lib/evas/canvas/meson.build +++ b/src/lib/evas/canvas/meson.build @@ -40,6 +40,7 @@ pub_eo_files = [ 'efl_canvas_text_factory.eo', 'efl_canvas_rectangle.eo', 'efl_canvas_object.eo', + 'efl_gfx_vg_value_provider.eo', 'efl_canvas_vg_object.eo', 'efl_canvas_vg_node.eo', 'efl_canvas_vg_container.eo', @@ -179,6 +180,7 @@ evas_src += files([ 'efl_canvas_animation_group_parallel.c', 'efl_canvas_animation_group_sequential.c', 'efl_canvas_animation_player.c', + 'efl_gfx_vg_value_provider.c', 'efl_canvas_vg_object.c', 'efl_canvas_vg_node.c', 'efl_canvas_vg_container.c', diff --git a/src/lib/evas/file/evas_module.c b/src/lib/evas/file/evas_module.c index a1e8b623af..b651ad544a 100644 --- a/src/lib/evas/file/evas_module.c +++ b/src/lib/evas/file/evas_module.c @@ -599,12 +599,27 @@ evas_module_find_type(Evas_Module_Type type, const char *name) { if (run_in_tree == 1) { - char subsystem[PATH_MAX]; + // special cases due to compleixty of meson build and + // putting these in odd places in the tree - do special + // name lookups for build in tree module lookups + if (type == EVAS_MODULE_TYPE_IMAGE_LOADER) + { + snprintf(buffer, sizeof(buffer), + PACKAGE_BUILD_DIR"/src/lib/evas_goal/libshared_loader_%s"MOD_SUFFIX, name); + } + else if (type == EVAS_MODULE_TYPE_IMAGE_SAVER) + { + snprintf(buffer, sizeof(buffer), + PACKAGE_BUILD_DIR"/src/lib/evas_goal/libshared_saver_%s"MOD_SUFFIX, name); + } + else + { + char subsystem[PATH_MAX]; - snprintf(subsystem, sizeof(subsystem), "evas/%s", type_str); - bs_mod_get(buffer, sizeof(buffer), subsystem, name); - if (!evas_file_path_exists(buffer)) - buffer[0] = '\0'; + snprintf(subsystem, sizeof(subsystem), "evas/%s", type_str); + bs_mod_get(buffer, sizeof(buffer), subsystem, name); + } + if (!evas_file_path_exists(buffer)) buffer[0] = '\0'; } } #endif diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index c80053c7f9..86bb885ce3 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -1541,6 +1541,7 @@ struct _Vg_File_Data Vg_File_Anim_Data *anim_data; //only when animation supported. int ref; int w, h; //default size + Eina_List *vp_list; //Value providers. void *loader_data; //loader specific local data diff --git a/src/lib/evas_goal/meson.build b/src/lib/evas_goal/meson.build index 5746006908..59473fea93 100644 --- a/src/lib/evas_goal/meson.build +++ b/src/lib/evas_goal/meson.build @@ -1,3 +1,98 @@ +#fixed dependencies by efl +png = dependency('libpng') +tiff = dependency('libtiff-4', required: get_option('evas-loaders-disabler').contains('tiff') == false) +giflib = cc.find_library('gif') +webp = dependency('libwebp', required: get_option('evas-loaders-disabler').contains('webp') == false) + +evas_loader_saver_mod_bmp = ['bmp', 'shared', []] +evas_loader_saver_mod_eet = ['eet', 'static', [eet]] +evas_loader_saver_mod_generic = ['generic', 'shared', [rt]] +evas_loader_saver_mod_gif = ['gif', 'shared', [giflib]] +evas_loader_saver_mod_ico = ['ico', 'shared', []] +evas_loader_saver_mod_jpeg = ['jpeg', 'static', [jpeg]] +evas_loader_saver_mod_pmaps = ['pmaps', 'shared', []] +evas_loader_saver_mod_png = ['png', 'static', [png]] +evas_loader_saver_mod_psd = ['psd', 'shared', []] +evas_loader_saver_mod_tga = ['tga', 'shared', []] +evas_loader_saver_mod_tgv = ['tgv', 'shared', [rg_etc, lz4]] +evas_loader_saver_mod_tiff = ['tiff', 'shared', [tiff]] +evas_loader_saver_mod_wbmp = ['wbmp', 'shared', []] +evas_loader_saver_mod_webp = ['webp', 'shared', [webp]] +evas_loader_saver_mod_xpm = ['xpm', 'shared', []] + +evas_image_loaders_file = [ + evas_loader_saver_mod_bmp, + evas_loader_saver_mod_eet, + evas_loader_saver_mod_generic, + evas_loader_saver_mod_gif, + evas_loader_saver_mod_ico, + evas_loader_saver_mod_jpeg, + evas_loader_saver_mod_pmaps, + evas_loader_saver_mod_png, + evas_loader_saver_mod_psd, + evas_loader_saver_mod_tga, + evas_loader_saver_mod_tgv, + evas_loader_saver_mod_tiff, + evas_loader_saver_mod_wbmp, + evas_loader_saver_mod_webp, + evas_loader_saver_mod_xpm +] + +evas_image_savers_file = [ + evas_loader_saver_mod_eet, + evas_loader_saver_mod_jpeg, + evas_loader_saver_mod_png, + evas_loader_saver_mod_tgv, + evas_loader_saver_mod_tiff, + evas_loader_saver_mod_webp +] + +foreach loader_inst : evas_image_loaders_file + loader = loader_inst[0] + loader_type = loader_inst[1] + loader_deps = loader_inst[2] + if get_option('evas-loaders-disabler').contains(loader) == false + if loader_type == 'static' + config_h.set('BUILD_LOADER_'+loader.to_upper(), '1') + file = join_paths(meson.source_root(), 'src', 'modules', 'evas', 'image_loaders', loader, 'evas_image_load_'+loader+'.c') + config_h.set('EVAS_STATIC_BUILD_'+loader.to_upper(), '1') + tmp = static_library('image_loader_'+loader, file, + include_directories : config_dir, + dependencies : [evas_pre] + loader_deps + ) + evas_static_list += [declare_dependency( + sources: file, + dependencies: loader_deps, + )] + endif + else + message('Image loader '+loader+' disabled') + endif +endforeach + +foreach loader_inst : evas_image_savers_file + loader = loader_inst[0] + loader_type = loader_inst[1] + loader_deps = loader_inst[2] + if get_option('evas-loaders-disabler').contains(loader) == false + if loader_type == 'static' + config_h.set('BUILD_LOADER_'+loader.to_upper(), '1') + file = join_paths(meson.source_root(), 'src', 'modules', 'evas', 'image_savers', loader, 'evas_image_save_'+loader+'.c') + config_h.set('EVAS_STATIC_BUILD_'+loader.to_upper(), '1') + tmp = static_library('image_saver_'+loader, file, + include_directories : config_dir, + dependencies : [evas_pre] + loader_deps + ) + evas_static_list += [declare_dependency( + sources: file, + dependencies: loader_deps, + )] + endif + else + message('Image saver '+loader+' disabled') + endif +endforeach + evas_lib = library('evas', 'empty.c', #all the source code is coming from evas_pre_lib_dep @@ -34,3 +129,51 @@ pkgconfig.generate(evas_lib, version : version_major + '.' + version_minor + '.' + version_micro, libraries : [eina, ecore, ector, emile, lua], ) + +foreach loader_inst : evas_image_loaders_file + loader = loader_inst[0] + loader_type = loader_inst[1] + loader_deps = loader_inst[2] + if get_option('evas-loaders-disabler').contains(loader) == false + if loader_type == 'shared' + config_h.set('BUILD_LOADER_'+loader.to_upper(), '1') + file = join_paths(meson.source_root(), 'src', 'modules', 'evas', 'image_loaders', loader, 'evas_image_load_'+loader+'.c') + evas_package_modules = join_paths(dir_lib, 'evas', 'modules') + mod_install_dir = join_paths(evas_package_modules, 'image_loaders', loader, version_name) + shared_module('shared_loader_'+loader, file, + include_directories : config_dir, + dependencies : [eina, evas] + loader_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension + ) + module_files += join_paths(mod_install_dir, 'libshared_loader_'+loader + '.' + sys_mod_extension) + endif + else + message('Image loader '+loader+' disabled') + endif +endforeach + +foreach loader_inst : evas_image_savers_file + loader = loader_inst[0] + loader_type = loader_inst[1] + loader_deps = loader_inst[2] + if get_option('evas-loaders-disabler').contains(loader) == false + if loader_type == 'shared' + config_h.set('BUILD_LOADER_'+loader.to_upper(), '1') + file = join_paths(meson.source_root(), 'src', 'modules', 'evas', 'image_savers', loader, 'evas_image_save_'+loader+'.c') + evas_package_modules = join_paths(dir_lib, 'evas', 'modules') + mod_install_dir = join_paths(evas_package_modules, 'image_savers', loader, version_name) + shared_module('shared_saver_'+loader, file, + include_directories : config_dir, + dependencies : [eina, evas] + loader_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension + ) + module_files += join_paths(mod_install_dir, 'libshared_saver_'+loader + '.' + sys_mod_extension) + endif + else + message('Image saver '+loader+' disabled') + endif +endforeach diff --git a/src/modules/evas/engines/buffer/meson.build b/src/modules/evas/engines/buffer/meson.build index ef42fd41bf..8c6a071e77 100644 --- a/src/modules/evas/engines/buffer/meson.build +++ b/src/modules/evas/engines/buffer/meson.build @@ -13,15 +13,11 @@ install_headers('Evas_Engine_Buffer.h', install_dir : join_paths(dir_include, 'evas-'+version_major), ) -if get_option('evas-modules') == 'shared' - evas_engine_buffer_mod = shared_module(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - dependencies : [eina, evas] + engine_deps, - install : true, - install_dir : mod_install_dir, - name_suffix : sys_mod_extension - ) - module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) -else - evas_engine_buffer_mod = [] -endif +evas_engine_buffer_mod = shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas] + engine_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension +) +module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) diff --git a/src/modules/evas/engines/drm/meson.build b/src/modules/evas/engines/drm/meson.build index 441a09a316..fb97b631de 100644 --- a/src/modules/evas/engines/drm/meson.build +++ b/src/modules/evas/engines/drm/meson.build @@ -7,13 +7,11 @@ engine_src = files([ engine_deps = [ecore_drm2, libdrm] -if get_option('evas-modules') == 'shared' - shared_module(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - dependencies : [eina, evas] + engine_deps, - install : true, - install_dir : mod_install_dir, - name_suffix : sys_mod_extension - ) - module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) -endif +shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas] + engine_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension +) +module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) diff --git a/src/modules/evas/engines/fb/meson.build b/src/modules/evas/engines/fb/meson.build index c857e83aec..625edd5d33 100644 --- a/src/modules/evas/engines/fb/meson.build +++ b/src/modules/evas/engines/fb/meson.build @@ -9,13 +9,11 @@ engine_src = files([ engine_deps = [ecore_fb] -if get_option('evas-modules') == 'shared' - shared_module(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - dependencies : [eina, evas] + engine_deps, - install : true, - install_dir : mod_install_dir, - name_suffix : sys_mod_extension - ) - module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) -endif +shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas] + engine_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension +) +module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) diff --git a/src/modules/evas/engines/gl_cocoa/meson.build b/src/modules/evas/engines/gl_cocoa/meson.build index a175c3c730..a0bd765c9b 100644 --- a/src/modules/evas/engines/gl_cocoa/meson.build +++ b/src/modules/evas/engines/gl_cocoa/meson.build @@ -7,13 +7,11 @@ engine_src = files([ engine_deps = [ecore_cocoa, gl_deps] -if get_option('evas-modules') == 'shared' - shared_module(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - dependencies : [eina, evas] + engine_deps, - install : true, - install_dir : mod_install_dir, - name_suffix : sys_mod_extension - ) - module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) -endif +shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas] + engine_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension +) +module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) diff --git a/src/modules/evas/engines/gl_drm/meson.build b/src/modules/evas/engines/gl_drm/meson.build index 28988d5599..8acf82365d 100644 --- a/src/modules/evas/engines/gl_drm/meson.build +++ b/src/modules/evas/engines/gl_drm/meson.build @@ -7,13 +7,11 @@ engine_src = files([ engine_deps = [ecore_drm2, libdrm, gl_deps, dependency('gbm')] -if get_option('evas-modules') == 'shared' - shared_module(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - dependencies : [eina, evas] + engine_deps, - install : true, - install_dir : mod_install_dir, - name_suffix : sys_mod_extension - ) - module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) -endif +shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas] + engine_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension +) +module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) diff --git a/src/modules/evas/engines/gl_generic/meson.build b/src/modules/evas/engines/gl_generic/meson.build index 86e5c8fedd..d137eb26ef 100644 --- a/src/modules/evas/engines/gl_generic/meson.build +++ b/src/modules/evas/engines/gl_generic/meson.build @@ -70,13 +70,11 @@ engine_deps = [gl_deps] engine_include_dir = include_directories(join_paths('..','software_generic'), join_paths('..', 'gl_common')) -if get_option('evas-modules') == 'shared' - shared_module(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - dependencies : [eina, evas] + engine_deps, - install : true, - install_dir : mod_install_dir, - name_suffix : sys_mod_extension - ) - module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) -endif +shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas] + engine_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension +) +module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) diff --git a/src/modules/evas/engines/gl_x11/meson.build b/src/modules/evas/engines/gl_x11/meson.build index 7aec198e39..0bac84147e 100644 --- a/src/modules/evas/engines/gl_x11/meson.build +++ b/src/modules/evas/engines/gl_x11/meson.build @@ -7,13 +7,11 @@ engine_src = files([ engine_deps = [ecore_x_deps, gl_deps] -if get_option('evas-modules') == 'shared' - shared_module(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - dependencies : [eina, evas] + engine_deps, - install : true, - install_dir : mod_install_dir, - name_suffix : sys_mod_extension - ) - module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) -endif +shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas] + engine_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension +) +module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) diff --git a/src/modules/evas/engines/meson.build b/src/modules/evas/engines/meson.build index d0c1b8fe24..2504a761a9 100644 --- a/src/modules/evas/engines/meson.build +++ b/src/modules/evas/engines/meson.build @@ -62,28 +62,6 @@ foreach engine_conf : engines subdir(engine) - if get_option('evas-modules') == 'static' - tmp = static_library(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - dependencies : [eina, evas_pre] + engine_deps, - ) - evas_static_list += declare_dependency( - include_directories: [include_directories('.')] + config_dir + [engine_include_dir], - link_with: tmp, - dependencies : [eina, evas_pre] + engine_deps, - sources : engine_src - ) - if engine == 'gl_generic' - #special case, see evas_module.c - config_h.set('EVAS_STATIC_BUILD_GL_COMMON', '1') - else - config_h.set('EVAS_STATIC_BUILD_'+engine.to_upper(), '1') - endif - else - #nothing here shared building is handled directly on the engine configuration side - #reason for this is that the .so files have to be placed in the correct directory in order - # to make them discoverable by evas module code - endif config_h.set('BUILD_ENGINE_'+engine.to_upper(), '1') endif endforeach diff --git a/src/modules/evas/engines/software_ddraw/meson.build b/src/modules/evas/engines/software_ddraw/meson.build index 404fe7c894..9b742757fa 100644 --- a/src/modules/evas/engines/software_ddraw/meson.build +++ b/src/modules/evas/engines/software_ddraw/meson.build @@ -7,14 +7,12 @@ engine_src = files([ engine_deps = [cc.find_library('ddraw')] -if get_option('evas-modules') == 'shared' - shared_module(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - cpp_args: ['-fno-rtti', '-fno-exceptions'], - dependencies : [eina, evas] + engine_deps, - install : true, - install_dir : mod_install_dir, - name_suffix : sys_mod_extension - ) - module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) -endif +shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + cpp_args: ['-fno-rtti', '-fno-exceptions'], + dependencies : [eina, evas] + engine_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension +) +module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) diff --git a/src/modules/evas/engines/software_gdi/meson.build b/src/modules/evas/engines/software_gdi/meson.build index e492e001e6..ef7a0aa690 100644 --- a/src/modules/evas/engines/software_gdi/meson.build +++ b/src/modules/evas/engines/software_gdi/meson.build @@ -7,13 +7,11 @@ engine_src = files([ engine_deps = [cc.find_library('gdi32')] -if get_option('evas-modules') == 'shared' - shared_module(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - dependencies : [eina, evas] + engine_deps, - install : true, - install_dir : mod_install_dir, - name_suffix : sys_mod_extension - ) - module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) -endif +shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas] + engine_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension +) +module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) diff --git a/src/modules/evas/engines/software_x11/meson.build b/src/modules/evas/engines/software_x11/meson.build index b5409568c0..c2f8f544e8 100644 --- a/src/modules/evas/engines/software_x11/meson.build +++ b/src/modules/evas/engines/software_x11/meson.build @@ -28,13 +28,11 @@ config_h.set('BUILD_ENGINE_SOFTWARE_XLIB', '1') #it looks weird but is right, gl_deps is needed for evas_x_egl.c engine_deps = [x11, ecore_x, ecore_x_deps, gl_deps] -if get_option('evas-modules') == 'shared' - shared_module(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - dependencies : [eina, evas] + engine_deps, - install : true, - install_dir : mod_install_dir, - name_suffix : sys_mod_extension - ) - module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) -endif +shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas] + engine_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension +) +module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) diff --git a/src/modules/evas/engines/wayland_egl/meson.build b/src/modules/evas/engines/wayland_egl/meson.build index 818210fc62..af7314627b 100644 --- a/src/modules/evas/engines/wayland_egl/meson.build +++ b/src/modules/evas/engines/wayland_egl/meson.build @@ -8,14 +8,11 @@ engine_deps = [ecore_wl2, dependency('wayland-egl'), gl_deps] engine_include_dir = include_directories(join_paths('..','wayland_common')) - -if get_option('evas-modules') == 'shared' - shared_module(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - dependencies : [eina, evas] + engine_deps, - install : true, - install_dir : mod_install_dir, - name_suffix : sys_mod_extension - ) - module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) -endif +shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas] + engine_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension +) +module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) diff --git a/src/modules/evas/engines/wayland_shm/meson.build b/src/modules/evas/engines/wayland_shm/meson.build index 29453841cc..2a181cea48 100644 --- a/src/modules/evas/engines/wayland_shm/meson.build +++ b/src/modules/evas/engines/wayland_shm/meson.build @@ -8,13 +8,11 @@ engine_deps = [ecore_wl2] engine_include_dir = include_directories(join_paths('..','wayland_common')) -if get_option('evas-modules') == 'shared' - shared_module(mod_full_name, engine_src, - include_directories : config_dir + [engine_include_dir], - dependencies : [eina, evas] + engine_deps, - install : true, - install_dir : mod_install_dir, - name_suffix : sys_mod_extension - ) - module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) -endif +shared_module(mod_full_name, engine_src, + include_directories : config_dir + [engine_include_dir], + dependencies : [eina, evas] + engine_deps, + install : true, + install_dir : mod_install_dir, + name_suffix : sys_mod_extension +) +module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + '.' + sys_mod_extension) diff --git a/src/modules/evas/image_loaders/meson.build b/src/modules/evas/image_loaders/meson.build deleted file mode 100644 index df0d8968ac..0000000000 --- a/src/modules/evas/image_loaders/meson.build +++ /dev/null @@ -1,42 +0,0 @@ -evas_image_loaders_file = [ - ['bmp', []], - ['eet', [eet]], - ['generic', [rt]], - ['gif', [giflib]], - ['ico', []], - ['jpeg', [jpeg]], - ['pmaps', []], - ['png', [png]], - ['psd', []], - ['tga', []], - ['tgv', [rg_etc, lz4]], - ['tiff', [tiff]], - ['wbmp', []], - ['webp', [webp]], - ['xpm', []], -] - -foreach loader_inst : evas_image_loaders_file - loader = loader_inst[0] - loader_deps = loader_inst[1] - - - if get_option('evas-loaders-disabler').contains(loader) == false - file = join_paths(loader, 'evas_image_load_'+loader+'.c') - - tmp = static_library('image_loader_'+loader, file, - include_directories : config_dir, - dependencies : [evas_pre] + loader_deps - ) - - evas_static_list += [declare_dependency( - sources: file, - dependencies: loader_deps, - )] - - config_h.set('EVAS_STATIC_BUILD_'+loader.to_upper(), '1') - config_h.set('BUILD_LOADER_'+loader.to_upper(), '1') - else - message('Image loader '+loader+' disabled') - endif -endforeach \ No newline at end of file diff --git a/src/modules/evas/image_savers/meson.build b/src/modules/evas/image_savers/meson.build deleted file mode 100644 index 81bdbd9f55..0000000000 --- a/src/modules/evas/image_savers/meson.build +++ /dev/null @@ -1,32 +0,0 @@ - -evas_image_savers_file = [ -['eet', [eet]], -['jpeg', [jpeg]], -['png', [png]], -['tgv', [rg_etc, lz4]], -['tiff', [tiff]], -['webp', []] -] - -foreach loader_inst : evas_image_savers_file - loader = loader_inst[0] - loader_deps = loader_inst[1] - - if get_option('evas-loaders-disabler').contains(loader) == false - file = join_paths(loader, 'evas_image_save_'+loader+'.c') - - tmp = static_library('image_saver_'+loader, file, - include_directories : config_dir, - dependencies : [evas_pre] + loader_deps - ) - - evas_static_list += [declare_dependency( - sources: file, - dependencies: loader_deps, - )] - - config_h.set('EVAS_STATIC_BUILD_'+loader.to_upper(), '1') - else - message('Image saver '+loader+' disabled') - endif -endforeach diff --git a/src/modules/evas/meson.build b/src/modules/evas/meson.build index e5973dabad..e8f335d50e 100644 --- a/src/modules/evas/meson.build +++ b/src/modules/evas/meson.build @@ -1,15 +1,6 @@ #fixed dependencies by efl -png = dependency('libpng') -tiff = dependency('libtiff-4', required: get_option('evas-loaders-disabler').contains('tiff') == false) -giflib = cc.find_library('gif') json = dependency('rlottie', required: get_option('evas-loaders-disabler').contains('json') == false) -webp = dependency('libwebp', required: get_option('evas-loaders-disabler').contains('webp') == false) -#there are a few modules that should NEVER be build as a module but rather be build as static lib and linked in later -evas_static_list = [] - -subdir('image_loaders') -subdir('image_savers') subdir('model_savers') subdir('model_loaders') subdir('vg_savers') diff --git a/src/scripts/gendoc/doc_alias.template b/src/scripts/gendoc/doc_alias.template index 0f3382344b..4f426be88c 100644 --- a/src/scripts/gendoc/doc_alias.template +++ b/src/scripts/gendoc/doc_alias.template @@ -2,6 +2,10 @@ ~~Title: ${alias.name}$~~ ====== ${alias.name}$ (alias) ====== + +''beta'' This alias is still in beta, api will probably change + + ${BEST_SUMMARY(obj=alias)}$ ${BEST_DESCRIPTION(obj=alias)}$ diff --git a/src/scripts/gendoc/doc_class.template b/src/scripts/gendoc/doc_class.template index 92e7b5b04b..04910d619d 100644 --- a/src/scripts/gendoc/doc_class.template +++ b/src/scripts/gendoc/doc_class.template @@ -2,6 +2,10 @@ ~~Title: ${cls.name}$~~ ====== ${cls.name}$ (${CLS_TYPE}$) ====== + +''beta'' This class is still in beta, api will probably change + + ${BEST_SUMMARY(obj=cls)}$ ${BEST_DESCRIPTION(obj=cls)}$ @@ -57,8 +61,8 @@ ${OBJECT_STATIC_CONTENT(obj=cls, section='description')}$ +{{anchor:${impl.short_name}$}} ${IMPLEMENT_FULL(impl=impl, cls=cls)}$ -\\ No properties defined in this class. @@ -68,8 +72,8 @@ No properties defined in this class. +{{anchor:${impl.short_name}$}} ${IMPLEMENT_FULL(impl=impl, cls=cls)}$ -\\ No methods defined in this class. @@ -103,4 +107,6 @@ No extensions defined in this class. | ''${ev.name}$'' | ${BEST_SUMMARY(obj=ev)}$ ${OBJECT_SCOPE(obj=ev)}$ ${EVENT_TAGS}$ | ${TYPE_LINK(type=ev.type) if ev.type else 'None'}$ | + +No events defined in this class. diff --git a/src/scripts/gendoc/doc_enum.template b/src/scripts/gendoc/doc_enum.template index bdbb37a527..c097134239 100644 --- a/src/scripts/gendoc/doc_enum.template +++ b/src/scripts/gendoc/doc_enum.template @@ -2,6 +2,10 @@ ~~Title: ${enum.name}$~~ ====== ${enum.name}$ (enum) ====== + +''beta'' This enumeration is still in beta, api will probably change + + ${BEST_SUMMARY(obj=enum)}$ ${BEST_DESCRIPTION(obj=enum)}$ @@ -33,7 +37,7 @@ enum { typedef enum { - ${field.c_name}$ = ${field.value.serialize}$, + ${field.c_constant}$ = ${field.value.serialize}$, } ${enum.name.replace('.', '_')}$; diff --git a/src/scripts/gendoc/doc_macros.include b/src/scripts/gendoc/doc_macros.include index 64b5311e5a..877b7c67bf 100644 --- a/src/scripts/gendoc/doc_macros.include +++ b/src/scripts/gendoc/doc_macros.include @@ -78,7 +78,15 @@ ${'\n\n' if i else ''}$#! %%${token.text}$%%#! -**REF ${token.text}$ ${token.ref}$ ??**#! + +${CLS_LINK(cls=token.ref_obj)}$.${FUNC_LINK(func=token.ref_attr)}$#! + +${TYPEDECL_LINK(typedecl=token.ref_obj)}$#! + +${CLS_LINK(cls=token.ref_obj)}$#! + +**TODO REF ${token.ref_type}$**$#! + ''${token.text}$''#! @@ -157,7 +165,7 @@ interface#! :${n.lower()}$#! -:${type.short_name.lower()}$|${type.name}$]] +:${type.short_name}$|${type.name}$]] #!############################################################################## #!#### FUNC_LINK(func) ####################################################### @@ -167,19 +175,16 @@ interface#! :${n.lower()}$#! - -:method#! - -:property#! - -:${func.short_name}$|${func.short_name}$]] +:${func.class_.short_name}$#! +#${func.short_name}$#! +|${func.short_name}$]] #!############################################################################## #!#### FUNC_SCOPE(func) ###################################################### #!############################################################################## - - ''class method'' #! + + ''static method'' #! @@ -219,6 +224,7 @@ interface#! ''restart'' #! +${OBJ_TAGS(obj=ev)}$ #!############################################################################## #!#### IMPLEMENT_TAGS(impl) ################################################## @@ -231,6 +237,15 @@ interface#! ''write only'' #! +${OBJ_TAGS(obj=impl)}$ + +#!############################################################################## +#!#### OBJ_TAGS(obj) ######################################################### +#!############################################################################## + + + ''beta'' #! + #!############################################################################## #!#### PARAM_DIRECTION_TAG(param) ############################################ @@ -253,7 +268,7 @@ interface#! ^ parameters ^ type ^ description ^ -|${PARAM_DIRECTION_TAG(param=par)}$ **${par.name}$**|${par.type.name}$ #! +|${PARAM_DIRECTION_TAG(param=par)}$ **${par.name}$**|${TYPE_LINK(type=par.type)}$ #! |${BEST_SUMMARY(obj=par)}$ ${BEST_DESCRIPTION(obj=par)}$| **This function does not accept any parameter.** @@ -262,7 +277,7 @@ interface#! ${setvar("obj", "func.return_documentation(Eolian_Function_Type.METHOD)")}$#! ^ return ^ description ^ -|**${func.method_return_type.name}$**|${BEST_SUMMARY(obj=obj)}$ ${BEST_DESCRIPTION(obj=obj)}$| +|**${TYPE_LINK(type=func.method_return_type)}$**|${BEST_SUMMARY(obj=obj)}$ ${BEST_DESCRIPTION(obj=obj)}$| **This function does not return anything.** @@ -277,14 +292,14 @@ ${setvar("obj", "func.return_documentation(Eolian_Function_Type.METHOD)")}$#! ^ values ^ type ^ description ^ -|**${val.name}$**|${val.type.name}$|${BEST_SUMMARY(obj=val)}$| +|**${val.name}$**|${TYPE_LINK(type=val.type)}$|${BEST_SUMMARY(obj=val)}$| ^ keys ^ type ^ description ^ -|**${key.name}$**|${key.type.name}$|${BEST_SUMMARY(obj=key)}$| +|**${key.name}$**|${TYPE_LINK(type=key.type)}$|${BEST_SUMMARY(obj=key)}$| @@ -305,7 +320,7 @@ ${', ' if i else ''}$#! ) #! -${IMPLEMENT_TAGS}$ #! +${IMPLEMENT_TAGS(impl=impl)}$ #! => //${impl.function.method_return_type.short_name}$// #! diff --git a/src/scripts/gendoc/doc_start.template b/src/scripts/gendoc/doc_start.template index 3a5ebfefbd..ad85ad7bdc 100644 --- a/src/scripts/gendoc/doc_start.template +++ b/src/scripts/gendoc/doc_start.template @@ -17,49 +17,49 @@ so it can be considered valid for all languages. ^ Regular Classes ^^ -| ${CLS_LINK}$ | ${BEST_SUMMARY(obj=cls)}$ | +| ${CLS_LINK}$ ${OBJ_TAGS(obj=cls)}$ | ${BEST_SUMMARY(obj=cls)}$ | #! ^ Abstract Classes ^^ -| ${CLS_LINK}$ | ${BEST_SUMMARY(obj=cls)}$ | +| ${CLS_LINK}$ ${OBJ_TAGS(obj=cls)}$ | ${BEST_SUMMARY(obj=cls)}$ | #! ^ Mixins ^^ -| ${CLS_LINK}$ | ${BEST_SUMMARY(obj=cls)}$ | +| ${CLS_LINK}$ ${OBJ_TAGS(obj=cls)}$ | ${BEST_SUMMARY(obj=cls)}$ | #! ^ Interfaces ^^ -| ${CLS_LINK}$ | ${BEST_SUMMARY(obj=cls)}$ | +| ${CLS_LINK}$ ${OBJ_TAGS(obj=cls)}$ | ${BEST_SUMMARY(obj=cls)}$ | #! ^ Aliases ^^ -| ${TYPEDECL_LINK}$ | ${BEST_SUMMARY(obj=typedecl)}$ | +| ${TYPEDECL_LINK}$ ${OBJ_TAGS(obj=typedecl)}$ | ${BEST_SUMMARY(obj=typedecl)}$ | #! ^ Structures ^^ -| ${TYPEDECL_LINK}$ | ${BEST_SUMMARY(obj=typedecl)}$ | +| ${TYPEDECL_LINK}$ ${OBJ_TAGS(obj=typedecl)}$ | ${BEST_SUMMARY(obj=typedecl)}$ | #! ^ Enumerations ^^ -| ${TYPEDECL_LINK}$ | ${BEST_SUMMARY(obj=typedecl)}$ | +| ${TYPEDECL_LINK}$ ${OBJ_TAGS(obj=typedecl)}$ | ${BEST_SUMMARY(obj=typedecl)}$ | diff --git a/src/scripts/gendoc/doc_struct.template b/src/scripts/gendoc/doc_struct.template index 306dcfd961..e354b6f6a1 100644 --- a/src/scripts/gendoc/doc_struct.template +++ b/src/scripts/gendoc/doc_struct.template @@ -2,6 +2,10 @@ ~~Title: ${struct.name}$~~ ====== ${struct.name}$ (struct) ====== + +''beta'' This struct is still in beta, api will probably change + + ${BEST_SUMMARY(obj=struct)}$ ${BEST_DESCRIPTION(obj=struct)}$ diff --git a/src/scripts/gendoc/gendoc.py b/src/scripts/gendoc/gendoc.py index 2ebaa605d4..bee5161f0b 100755 --- a/src/scripts/gendoc/gendoc.py +++ b/src/scripts/gendoc/gendoc.py @@ -41,7 +41,7 @@ _choices = ['start', 'classes', 'enums', 'structs', 'aliases'] parser.add_argument('--step', '-s', metavar='STEP', default=None, choices=_choices, help='A single step to run (default to all), ' - 'valid choices: '+ ', '.join(_choices)) + 'valid choices: ' + ', '.join(_choices)) args = parser.parse_args() @@ -64,6 +64,8 @@ if not eolian_db.all_eo_files_parse(): def cleanup_db(): global eolian_db del eolian_db + + atexit.register(cleanup_db) @@ -72,14 +74,14 @@ def page_path_for_object(obj): path = ['data', 'pages', 'develop', 'api'] for ns in obj.namespaces: path.append(ns.lower()) - output_file = obj.short_name.lower() + '.txt' - return os.path.join(args.root_path, *path, output_file) + output_filename = obj.short_name.lower() + '.txt' + return os.path.join(args.root_path, *path, output_filename) # render a (temporary) page for analizying the namespaces hierarchy t = Template('namespaces.template') -nspaces = [ ns for ns in eolian_db.all_namespaces - if ns.name.startswith(args.namespace) ] +nspaces = [ns for ns in eolian_db.all_namespaces + if ns.name.startswith(args.namespace)] tot_classes = tot_regulars = tot_abstracts = tot_mixins = tot_ifaces = 0 tot_enums = tot_structs = tot_aliases = 0 @@ -113,7 +115,7 @@ totals = [ root_ns = eolian_db.namespace_get_by_name(args.namespace) -output_file = os.path.join(args.root_path,'data','pages','develop','api','namespaces.txt') +output_file = os.path.join(args.root_path, 'data', 'pages', 'develop', 'api', 'namespaces.txt') t.render(output_file, args.verbose, root_ns=root_ns, totals=totals) @@ -121,10 +123,10 @@ t.render(output_file, args.verbose, root_ns=root_ns, totals=totals) if args.step in ('start', None): t = Template('doc_start.template') - nspaces = [ ns for ns in eolian_db.all_namespaces - if ns.name.startswith(args.namespace) ] + nspaces = [ns for ns in eolian_db.all_namespaces + if ns.name.startswith(args.namespace)] - output_file = os.path.join(args.root_path,'data','pages','develop','api','start.txt') + output_file = os.path.join(args.root_path, 'data', 'pages', 'develop', 'api', 'start.txt') t.render(output_file, args.verbose, nspaces=nspaces) diff --git a/src/scripts/pyolian/eolian.py b/src/scripts/pyolian/eolian.py index 2c23fa2c5b..50db1e6f3c 100644 --- a/src/scripts/pyolian/eolian.py +++ b/src/scripts/pyolian/eolian.py @@ -37,6 +37,25 @@ _already_halted = False # Eolian Enums ############################################################## +class Eolian_Object_Type(IntEnum): + UNKNOWN = 0 + CLASS = 1 + TYPEDECL = 2 + STRUCT_FIELD = 3 + ENUM_FIELD = 4 + TYPE = 5 + CONSTANT = 6 + EXPRESSION = 7 + FUNCTION = 8 + FUNCTION_PARAMETER = 9 + EVENT = 10 + PART = 11 + IMPLEMENT = 12 + CONSTRUCTOR = 13 + DOCUMENTATION = 14 + ERROR = 15 + + class Eolian_Function_Type(IntEnum): UNRESOLVED = 0 PROPERTY = 1 @@ -782,7 +801,7 @@ class Constructor(Object): class Event(Object): def __repr__(self): - return "".format(self) + return "".format(self) @cached_property def c_macro(self): @@ -1154,7 +1173,7 @@ class Typedecl(Object): class Enum_Type_Field(Object): def __repr__(self): - return "".format(self) + return "".format(self) @cached_property def c_constant(self): @@ -1262,7 +1281,7 @@ class _Eolian_Doc_Token_Struct(ctypes.Structure): ("text_end", c_char_p)] -class Documentation(Object): # OK (1 TODO Unit*) +class Documentation(Object): def __repr__(self): t = self.summary if len(self.summary) < 40 else self.summary[:40] + '...' return "".format(t) @@ -1293,8 +1312,7 @@ class Documentation(Object): # OK (1 TODO Unit*) """ return a list of paragraphs, each one is a list of tokens """ return self._tokenize(self.description) - @classmethod - def _tokenize(cls, full_text): + def _tokenize(self, full_text): paragraphs = [] if not full_text: return paragraphs @@ -1309,8 +1327,10 @@ class Documentation(Object): # OK (1 TODO Unit*) while next_chunk: typ = lib.eolian_doc_token_type_get(byref(tok)) txt = lib.eolian_doc_token_text_get(byref(tok)) - # ref = # TODO ... Stupido parametro '*unit' :( - tokens.append(Documentation_Token(typ, txt)) + ref_obj = c_void_p(0) + ref_attr = c_void_p(0) + ref_type = lib.eolian_doc_token_ref_resolve(byref(tok), self.unit.state, byref(ref_obj), byref(ref_attr)) + tokens.append(Documentation_Token(typ, txt, ref_type, ref_obj, ref_attr)) lib.free(c_void_p(txt)) next_chunk = lib.eolian_documentation_tokenize(c_char_p(next_chunk), byref(tok)) paragraphs.append(tokens) @@ -1319,10 +1339,12 @@ class Documentation(Object): # OK (1 TODO Unit*) class Documentation_Token(object): - def __init__(self, c_token_type, c_text): + def __init__(self, c_token_type, c_text, c_ref_type, c_ref_obj, c_ref_attr): self._type = Eolian_Doc_Token_Type(c_token_type) self._text = _str_to_py(c_text) - self._ref = None # TODO + self._ref_type = Eolian_Object_Type(c_ref_type) + self._ref_obj = Object(c_ref_obj) if c_ref_obj else None + self._ref_attr = Object(c_ref_attr) if c_ref_attr else None def __repr__(self): t = self.text if len(self.text) < 40 else self.text[:40] + '...' @@ -1338,8 +1360,16 @@ class Documentation_Token(object): return self._text @property - def ref(self): - return self._ref + def ref_type(self): + return self._ref_type + + @property + def ref_obj(self): + return self._ref_obj + + @property + def ref_attr(self): + return self._ref_attr class Error(Object): @@ -1382,42 +1412,23 @@ def _str_to_py(s): # internal Object type -> Class mapping ##################################### -class _Eolian_Object_Type(IntEnum): - UNKNOWN = 0 - CLASS = 1 - TYPEDECL = 2 - STRUCT_FIELD = 3 - ENUM_FIELD = 4 - TYPE = 5 - CONSTANT = 6 - EXPRESSION = 7 - FUNCTION = 8 - FUNCTION_PARAMETER = 9 - EVENT = 10 - PART = 11 - IMPLEMENT = 12 - CONSTRUCTOR = 13 - DOCUMENTATION = 14 - ERROR = 15 - - _eolian_type_class_mapping = { - _Eolian_Object_Type.UNKNOWN: Object, - _Eolian_Object_Type.CLASS: Class, - _Eolian_Object_Type.TYPEDECL: Typedecl, - _Eolian_Object_Type.STRUCT_FIELD: Struct_Type_Field, - _Eolian_Object_Type.ENUM_FIELD: Enum_Type_Field, - _Eolian_Object_Type.TYPE: Type, - _Eolian_Object_Type.CONSTANT: Constant, - _Eolian_Object_Type.EXPRESSION: Expression, - _Eolian_Object_Type.FUNCTION: Function, - _Eolian_Object_Type.FUNCTION_PARAMETER: Function_Parameter, - _Eolian_Object_Type.EVENT: Event, - _Eolian_Object_Type.PART: Part, - _Eolian_Object_Type.IMPLEMENT: Implement, - _Eolian_Object_Type.CONSTRUCTOR: Constructor, - _Eolian_Object_Type.DOCUMENTATION: Documentation, - _Eolian_Object_Type.ERROR: Error, + Eolian_Object_Type.UNKNOWN: Object, + Eolian_Object_Type.CLASS: Class, + Eolian_Object_Type.TYPEDECL: Typedecl, + Eolian_Object_Type.STRUCT_FIELD: Struct_Type_Field, + Eolian_Object_Type.ENUM_FIELD: Enum_Type_Field, + Eolian_Object_Type.TYPE: Type, + Eolian_Object_Type.CONSTANT: Constant, + Eolian_Object_Type.EXPRESSION: Expression, + Eolian_Object_Type.FUNCTION: Function, + Eolian_Object_Type.FUNCTION_PARAMETER: Function_Parameter, + Eolian_Object_Type.EVENT: Event, + Eolian_Object_Type.PART: Part, + Eolian_Object_Type.IMPLEMENT: Implement, + Eolian_Object_Type.CONSTRUCTOR: Constructor, + Eolian_Object_Type.DOCUMENTATION: Documentation, + Eolian_Object_Type.ERROR: Error, } diff --git a/src/scripts/pyolian/eolian_lib.py b/src/scripts/pyolian/eolian_lib.py index a92d896972..e73c37e1db 100644 --- a/src/scripts/pyolian/eolian_lib.py +++ b/src/scripts/pyolian/eolian_lib.py @@ -690,8 +690,8 @@ lib.eolian_doc_token_text_get.argtypes = (c_void_p,) lib.eolian_doc_token_text_get.restype = c_void_p # char* TO BE FREED # EAPI Eolian_Object_Type eolian_doc_token_ref_resolve(const Eolian_Doc_Token *tok, const Eolian_State *state, const Eolian_Object **data, const Eolian_Object **data2); -# lib.eolian_doc_token_ref_resolve.argtypes = (c_void_p, c_void_p, ???, ???) -# lib.eolian_doc_token_ref_resolve.restype = c_int +lib.eolian_doc_token_ref_resolve.argtypes = (c_void_p, c_void_p, c_void_p, c_void_p) +lib.eolian_doc_token_ref_resolve.restype = c_int # Eolian_Error ############################################################## diff --git a/src/scripts/pyolian/generator.py b/src/scripts/pyolian/generator.py index 0b7e8024e3..67c636fc9c 100755 --- a/src/scripts/pyolian/generator.py +++ b/src/scripts/pyolian/generator.py @@ -134,6 +134,7 @@ class Template(pyratemp.Template): 'Documentation_Token': eolian.Documentation_Token, 'Error': eolian.Error, # Eolian Enums + 'Eolian_Object_Type': eolian.Eolian_Object_Type, 'Eolian_Function_Type': eolian.Eolian_Function_Type, 'Eolian_Parameter_Direction': eolian.Eolian_Parameter_Direction, 'Eolian_Class_Type': eolian.Eolian_Class_Type, @@ -141,7 +142,7 @@ class Template(pyratemp.Template): 'Eolian_Typedecl_Type': eolian.Eolian_Typedecl_Type, 'Eolian_Type_Type': eolian.Eolian_Type_Type, 'Eolian_Type_Builtin_Type': eolian.Eolian_Type_Builtin_Type, - 'Eolian_C_Type_Type': eolian.Eolian_C_Type_Type, + # 'Eolian_C_Type_Type': eolian.Eolian_C_Type_Type, 'Eolian_Expression_Type': eolian.Eolian_Expression_Type, 'Eolian_Expression_Mask': eolian.Eolian_Expression_Mask, 'Eolian_Binary_Operator': eolian.Eolian_Binary_Operator, diff --git a/src/scripts/pyolian/test_gen_class.template b/src/scripts/pyolian/test_gen_class.template index cc0e845ab5..d53ae823e5 100644 --- a/src/scripts/pyolian/test_gen_class.template +++ b/src/scripts/pyolian/test_gen_class.template @@ -3,8 +3,7 @@ Class: ${cls.name}$ (${cls.short_name}$) ================================================================================ Class type: ${cls.type}$ -Base Class: ${cls.base_class.name if cls.base_class else None}$ -Inherits: ${', '.join([i.name for i in cls.inherits])}$ +Parent: ${cls.parent.name if cls.parent else None}$ Hierarchy: ${' => '.join([i.name for i in cls.hierarchy])}$ InheritsFull: ${', '.join([i.name for i in cls.inherits_full])}$ Namespace: ${cls.namespace}$ diff --git a/src/scripts/pyolian/test_gen_namespace.template b/src/scripts/pyolian/test_gen_namespace.template index 8cdb4f7ca7..27e6dcb533 100644 --- a/src/scripts/pyolian/test_gen_namespace.template +++ b/src/scripts/pyolian/test_gen_namespace.template @@ -59,7 +59,7 @@ Enums: * ${typedecl.name}$ - ${field.c_name}$ = ${field.value.serialize}$ + ${field.c_constant}$ = ${field.value.serialize}$ no enums available diff --git a/src/static_libs/vg_common/vg_common.h b/src/static_libs/vg_common/vg_common.h index 520fcdbfd6..83f9224e45 100644 --- a/src/static_libs/vg_common/vg_common.h +++ b/src/static_libs/vg_common/vg_common.h @@ -7,6 +7,7 @@ #include "evas_common_private.h" #include "evas_private.h" +#include "evas_vg_private.h" /****************************************************************************************** * SVG Compatible feature implementation diff --git a/src/static_libs/vg_common/vg_common_json.c b/src/static_libs/vg_common/vg_common_json.c index 3b3d114503..5ad4150506 100644 --- a/src/static_libs/vg_common/vg_common_json.c +++ b/src/static_libs/vg_common/vg_common_json.c @@ -443,6 +443,59 @@ _update_vg_tree(Efl_Canvas_Vg_Container *root, const LOTLayerNode *layer, int de } #endif +#ifdef BUILD_VG_LOADER_JSON +void +_value_provider_override(Vg_File_Data *vfd) +{ + Lottie_Animation *lot_anim = (Lottie_Animation *) vfd->loader_data; + + Eina_List *l; + Efl_Gfx_Vg_Value_Provider *vp; + EINA_LIST_FOREACH(vfd->vp_list, l, vp) + { + const char *keypath; + Efl_Gfx_Vg_Value_Provider_Change_Flag flag; + flag = efl_gfx_vg_value_provider_changed_flag_get(vp); + + if (flag & EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_FILL_COLOR) + { + int r, g, b, a; + r = g = b = a = 0; + efl_gfx_vg_value_provider_fill_color_get(vp, &r, &g, &b, &a); + keypath = efl_gfx_vg_value_provider_keypath_get(vp); + + lottie_animation_property_override(lot_anim, LOTTIE_ANIMATION_PROPERTY_FILLCOLOR, (char*)keypath, r / 255.0, g / 255.0, b / 255.0); + lottie_animation_property_override(lot_anim, LOTTIE_ANIMATION_PROPERTY_FILLOPACITY, (char*)keypath, (a / 255.0) * 100.0); + } + if (flag & EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_STROKE_COLOR) + { + int r, g, b, a; + r = g = b = a = 0; + efl_gfx_vg_value_provider_stroke_color_get(vp, &r, &g, &b, &a); + keypath = efl_gfx_vg_value_provider_keypath_get(vp); + + lottie_animation_property_override(lot_anim, LOTTIE_ANIMATION_PROPERTY_STROKECOLOR, (char*)keypath, r / 255.0, g / 255.0, b / 255.0); + lottie_animation_property_override(lot_anim, LOTTIE_ANIMATION_PROPERTY_STROKEOPACITY, (char*)keypath, (a / 255.0) * 100.0); + } + if (flag & EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_STROKE_WIDTH) + { + double w; + w = efl_gfx_vg_value_provider_stroke_width_get(vp); + keypath = efl_gfx_vg_value_provider_keypath_get(vp); + + lottie_animation_property_override(lot_anim, LOTTIE_ANIMATION_PROPERTY_STROKEWIDTH, (char*)keypath, w); + } + if (flag & EFL_GFX_VG_VALUE_PROVIDER_CHANGE_FLAG_TRANSFORM_MATRIX) + { + //TODO: When the lottie animation's transform property is implemented, + // the transform property override function have to added. + } + } +} + +#endif + + Eina_Bool vg_common_json_create_vg_node(Vg_File_Data *vfd) { @@ -450,6 +503,8 @@ vg_common_json_create_vg_node(Vg_File_Data *vfd) Lottie_Animation *lot_anim = (Lottie_Animation *) vfd->loader_data; if (!lot_anim) return EINA_FALSE; + if (vfd->vp_list) _value_provider_override(vfd); + unsigned int frame_num = (vfd->anim_data) ? vfd->anim_data->frame_num : 0; const LOTLayerNode *tree = lottie_animation_render_tree(lot_anim, frame_num, diff --git a/src/tests/elementary/efl_ui_test_box.c b/src/tests/elementary/efl_ui_test_box.c index 63760b6081..64133cdb8d 100644 --- a/src/tests/elementary/efl_ui_test_box.c +++ b/src/tests/elementary/efl_ui_test_box.c @@ -504,7 +504,7 @@ EFL_END_TEST EFL_START_TEST (efl_ui_box_properties) { double h, v; - Eina_Bool b; + unsigned int ph, pv; //align test efl_gfx_arrangement_content_align_get(layout, &h, &v); @@ -522,22 +522,14 @@ EFL_START_TEST (efl_ui_box_properties) ck_assert(EINA_DBL_EQ(v, 1)); //padding test - efl_gfx_arrangement_content_padding_get(layout, &h, &v, &b); - ck_assert(EINA_DBL_EQ(h, 0.0)); - ck_assert(EINA_DBL_EQ(v, 0.0)); - ck_assert_int_eq(b, 0); + efl_gfx_arrangement_content_padding_get(layout, &ph, &pv); + ck_assert_int_eq(ph, 0.0); + ck_assert_int_eq(pv, 0.0); - efl_gfx_arrangement_content_padding_set(layout, 0.3, 0.8234, 1); - efl_gfx_arrangement_content_padding_get(layout, &h, &v, &b); - ck_assert(EINA_DBL_EQ(h, 0.3)); - ck_assert(EINA_DBL_EQ(v, 0.8234)); - ck_assert_int_eq(b, 1); - - efl_gfx_arrangement_content_padding_set(layout, -1.23, 123, 45); - efl_gfx_arrangement_content_padding_get(layout, &h, &v, &b); - ck_assert(EINA_DBL_EQ(h, 0)); - ck_assert(EINA_DBL_EQ(v, 123)); - ck_assert_int_eq(b, 1); + efl_gfx_arrangement_content_padding_set(layout, 3, 8234); + efl_gfx_arrangement_content_padding_get(layout, &ph, &pv); + ck_assert_int_eq(ph, 3); + ck_assert_int_eq(pv, 8234); //direction test ck_assert_int_eq(efl_ui_layout_orientation_get(layout), EFL_UI_LAYOUT_ORIENTATION_VERTICAL); diff --git a/src/tests/elementary/efl_ui_test_table.c b/src/tests/elementary/efl_ui_test_table.c index bafe072118..0f7c2365c0 100644 --- a/src/tests/elementary/efl_ui_test_table.c +++ b/src/tests/elementary/efl_ui_test_table.c @@ -332,7 +332,7 @@ EFL_START_TEST (efl_ui_table_layout_update_matrix) efl_gfx_hint_margin_set(layout, 10, 10, 20, 20); efl_ui_table_homogeneous_set(layout, 0, 1); - efl_gfx_arrangement_content_padding_set(layout, 10, 5, 0); + efl_gfx_arrangement_content_padding_set(layout, 10, 5); for (i = 0; i < 3; i++) { @@ -477,7 +477,7 @@ EFL_END_TEST EFL_START_TEST (efl_ui_table_properties) { double h, v; - Eina_Bool b; + unsigned int ph, pv; Eina_Bool homogeneoush, homogeneousv; //align test @@ -496,22 +496,14 @@ EFL_START_TEST (efl_ui_table_properties) ck_assert(EINA_DBL_EQ(v, 1)); //padding test - efl_gfx_arrangement_content_padding_get(layout, &h, &v, &b); - ck_assert(EINA_DBL_EQ(h, 0.0)); - ck_assert(EINA_DBL_EQ(v, 0.0)); - ck_assert_int_eq(b, 0); + efl_gfx_arrangement_content_padding_get(layout, &ph, &pv); + ck_assert_int_eq(ph, 0); + ck_assert_int_eq(pv, 0); - efl_gfx_arrangement_content_padding_set(layout, 0.3, 0.8234, 1); - efl_gfx_arrangement_content_padding_get(layout, &h, &v, &b); - ck_assert(EINA_DBL_EQ(h, 0.3)); - ck_assert(EINA_DBL_EQ(v, 0.8234)); - ck_assert_int_eq(b, 1); - - efl_gfx_arrangement_content_padding_set(layout, -1.23, 123, 45); - efl_gfx_arrangement_content_padding_get(layout, &h, &v, &b); - ck_assert(EINA_DBL_EQ(h, 0)); - ck_assert(EINA_DBL_EQ(v, 123)); - ck_assert_int_eq(b, 1); + efl_gfx_arrangement_content_padding_set(layout, 3, 8234); + efl_gfx_arrangement_content_padding_get(layout, &ph, &pv); + ck_assert_int_eq(ph, 3); + ck_assert_int_eq(pv, 8234); //direction test ck_assert_int_eq(efl_ui_layout_orientation_get(layout), EFL_UI_LAYOUT_ORIENTATION_HORIZONTAL); diff --git a/src/tests/elementary/elm_suite.c b/src/tests/elementary/elm_suite.c index 87fac6e4e1..d6aa4636e8 100644 --- a/src/tests/elementary/elm_suite.c +++ b/src/tests/elementary/elm_suite.c @@ -86,6 +86,7 @@ static const Efl_Test_Case etc[] = { { "elm_code_widget_selection", elm_code_test_widget_selection }, { "elm_code_widget_undo", elm_code_test_widget_undo }, { "elm_widget_focus", elm_test_widget_focus}, + { "elm_widget_basics", elm_test_widget_basics}, { NULL, NULL } }; diff --git a/src/tests/elementary/elm_suite.h b/src/tests/elementary/elm_suite.h index ba76b29615..67f5d0d5c4 100644 --- a/src/tests/elementary/elm_suite.h +++ b/src/tests/elementary/elm_suite.h @@ -84,6 +84,7 @@ void elm_test_slideshow(TCase *tc); void elm_test_spinner(TCase *tc); void elm_test_plug(TCase *tc); void elm_test_widget_focus(TCase *tc); +void elm_test_widget_basics(TCase *tc); void elm_code_file_test_load(TCase *tc); void elm_code_file_test_memory(TCase *tc); diff --git a/src/tests/elementary/elm_test_widget_basics.c b/src/tests/elementary/elm_test_widget_basics.c new file mode 100644 index 0000000000..12f439d0b3 --- /dev/null +++ b/src/tests/elementary/elm_test_widget_basics.c @@ -0,0 +1,137 @@ +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#endif + +#include +#include "elm_suite.h" + +typedef struct _Simple_Test_Widget +{ + Evas_Object* (*constructor)(Evas_Object *win); + const char *name; +} Simple_Test_Widget; + + +static const Simple_Test_Widget simple_widgets[] = { + {elm_flip_add, "flip"}, + {elm_frame_add, "frame"}, + {elm_player_add, "player"}, + {elm_video_add, "video"}, + {elm_ctxpopup_add, "ctxpopup"}, + {elm_fileselector_add, "fileselector"}, + {elm_hoversel_add, "hoversel"}, + {elm_multibuttonentry_add, "multibuttonentry"}, + {elm_naviframe_add, "naviframe"}, + {elm_popup_add, "popup"}, + {elm_actionslider_add, "actionslider"}, + {elm_bg_add, "bg"}, + {elm_box_add, "box"}, + {elm_bubble_add, "bubble"}, + {elm_calendar_add, "calendar"}, + {elm_button_add, "button"}, + {elm_check_add, "check"}, + {elm_clock_add, "clock"}, + {elm_colorselector_add, "colorselector"}, + {elm_conformant_add, "conformant"}, + {elm_dayselector_add, "dayselector"}, + {elm_entry_add, "entry"}, + {elm_flipselector_add, "flipselector"}, + {elm_gengrid_add, "gengrid"}, + {elm_genlist_add, "genlist"}, + {elm_grid_add, "grid"}, + {elm_hover_add, "hover"}, + {elm_icon_add, "icon"}, + {elm_image_add, "image"}, + {elm_index_add, "index"}, + {elm_label_add, "label"}, + {elm_layout_add, "layout"}, + {elm_list_add, "list"}, + {elm_map_add, "map"}, + {elm_mapbuf_add, "mapbuf"}, + {elm_menu_add, "menu"}, + {elm_notify_add, "notify"}, + {elm_panel_add, "panel"}, + {elm_panes_add, "panes"}, + {elm_photo_add, "photo"}, + {elm_photocam_add, "photocam"}, + {elm_plug_add, "plug"}, + {elm_prefs_add, "prefs"}, + {elm_progressbar_add, "progressbar"}, + {elm_radio_add, "radio"}, + {elm_route_add, "route"}, + {elm_separator_add, "seperator"}, + {elm_slider_add, "slider"}, + {elm_slideshow_add, "slideshow"}, + {elm_spinner_add, "spinner"}, + {elm_table_add, "table"}, + {elm_textpath_add, "textpath"}, + {elm_toolbar_add, "toolbar"}, + {elm_web_add, "web"}, + {elm_diskselector_add, "diskselector"}, + {elm_datetime_add, "datetime"}, + //{elm_glview_add, "glview"}, This is causing issues on platforms that do not have gl, like CI, or minimal VMs + //{elm_combobox_add, "button"}, This is a beta widget which was never public and is written in a few ways that break basic assertions of widgets base class + //{elm_thumb_add, "button"}, This dies because of a ethumb bug, where the log domain is not correctly inited + //{elm_systray_add, "button"}, This is not a elm widget, but matches the API regax + //{elm_factory_add, "button"}, This is a beta widget which was never public but matches the API regax + {NULL, NULL}, +}; + +EFL_START_TEST(elm_test_widget_creation_easy) +{ + Evas_Object *win, *o; + win = win_add(); + + evas_object_resize(win, 200, 200); + evas_object_show(win); + for (int i = 0; simple_widgets[i].name; ++i) + { + o = simple_widgets[i].constructor(win); + ck_assert_ptr_ne(o, NULL); + evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_win_resize_object_add(win, o); + evas_object_show(o); + evas_object_del(o); + } +} +EFL_END_TEST + +EFL_START_TEST(elm_test_widget_creation_error_parent) +{ + Evas_Object *win, *o, *parent; + Evas *evas; + + win = win_add(); + evas = evas_object_evas_get(win); + evas_object_resize(win, 200, 200); + evas_object_show(win); + + parent = evas_object_rectangle_add(evas); + + for (int i = 0; simple_widgets[i].name; ++i) + { + if (eina_streq(simple_widgets[i].name, "gengrid") || + eina_streq(simple_widgets[i].name, "genlist")) + continue; + if (eina_streq(simple_widgets[i].name, "datetime")) //this crashes in textblock + continue; + + EXPECT_ERROR_START; + o = simple_widgets[i].constructor(parent); + EXPECT_ERROR_END; + ck_assert_ptr_ne(o, NULL); + evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_win_resize_object_add(win, o); + evas_object_show(o); + evas_object_del(o); + } +} +EFL_END_TEST + +void elm_test_widget_basics(TCase *tc) +{ + tcase_add_test(tc, elm_test_widget_creation_easy); + tcase_add_test(tc, elm_test_widget_creation_error_parent); +} diff --git a/src/tests/elementary/fonts/Vera.ttf b/src/tests/elementary/fonts/Vera.ttf new file mode 100644 index 0000000000..58cd6b5e61 Binary files /dev/null and b/src/tests/elementary/fonts/Vera.ttf differ diff --git a/src/tests/elementary/fonts/VeraBI.ttf b/src/tests/elementary/fonts/VeraBI.ttf new file mode 100644 index 0000000000..b55eee397e Binary files /dev/null and b/src/tests/elementary/fonts/VeraBI.ttf differ diff --git a/src/tests/elementary/fonts/VeraBd.ttf b/src/tests/elementary/fonts/VeraBd.ttf new file mode 100644 index 0000000000..51d6111d72 Binary files /dev/null and b/src/tests/elementary/fonts/VeraBd.ttf differ diff --git a/src/tests/elementary/fonts/VeraIt.ttf b/src/tests/elementary/fonts/VeraIt.ttf new file mode 100644 index 0000000000..cc23c9efd2 Binary files /dev/null and b/src/tests/elementary/fonts/VeraIt.ttf differ diff --git a/src/tests/elementary/fonts/VeraSe.ttf b/src/tests/elementary/fonts/VeraSe.ttf new file mode 100644 index 0000000000..4b4ecc6667 Binary files /dev/null and b/src/tests/elementary/fonts/VeraSe.ttf differ diff --git a/src/tests/elementary/fonts/VeraSeBd.ttf b/src/tests/elementary/fonts/VeraSeBd.ttf new file mode 100644 index 0000000000..672bf761fe Binary files /dev/null and b/src/tests/elementary/fonts/VeraSeBd.ttf differ diff --git a/src/tests/elementary/fonts/fonts.alias b/src/tests/elementary/fonts/fonts.alias new file mode 100644 index 0000000000..c5a31c8fe5 --- /dev/null +++ b/src/tests/elementary/fonts/fonts.alias @@ -0,0 +1,7 @@ +Vera-Bold-Italic -Bitstream-Bitstream Vera Sans-bold-i-normal--0-0-0-0-p-0-ascii-0 +Vera-Normal -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-ascii-0 +Vera-Bold -Bitstream-Bitstream Vera Sans-bold-r-normal--0-0-0-0-p-0-ascii-0 +Vera-Italic -Bitstream-Bitstream Vera Sans-medium-i-normal--0-0-0-0-p-0-ascii-0 +Vera-Serif -Bitstream-Bitstream Vera Serif-medium-r-normal--0-0-0-0-p-0-ascii-0 +Vera-Serif-Bold -Bitstream-Bitstream Vera Serif-bold-r-normal--0-0-0-0-p-0-ascii-0 +Vera -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-ascii-0 diff --git a/src/tests/elementary/fonts/fonts.dir b/src/tests/elementary/fonts/fonts.dir new file mode 100644 index 0000000000..660691d350 --- /dev/null +++ b/src/tests/elementary/fonts/fonts.dir @@ -0,0 +1,31 @@ +30 +VeraBI.ttf -Bitstream-Bitstream Vera Sans-bold-i-normal--0-0-0-0-p-0-ascii-0 +VeraBI.ttf -Bitstream-Bitstream Vera Sans-bold-i-normal--0-0-0-0-p-0-fcd8859-15 +VeraBI.ttf -Bitstream-Bitstream Vera Sans-bold-i-normal--0-0-0-0-p-0-iso8859-1 +VeraBI.ttf -Bitstream-Bitstream Vera Sans-bold-i-normal--0-0-0-0-p-0-iso8859-15 +VeraBI.ttf -Bitstream-Bitstream Vera Sans-bold-i-normal--0-0-0-0-p-0-iso8859-9 +Vera.ttf -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-ascii-0 +Vera.ttf -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-fcd8859-15 +Vera.ttf -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-iso8859-1 +Vera.ttf -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-iso8859-15 +Vera.ttf -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-iso8859-9 +VeraBd.ttf -Bitstream-Bitstream Vera Sans-bold-r-normal--0-0-0-0-p-0-ascii-0 +VeraBd.ttf -Bitstream-Bitstream Vera Sans-bold-r-normal--0-0-0-0-p-0-fcd8859-15 +VeraBd.ttf -Bitstream-Bitstream Vera Sans-bold-r-normal--0-0-0-0-p-0-iso8859-1 +VeraBd.ttf -Bitstream-Bitstream Vera Sans-bold-r-normal--0-0-0-0-p-0-iso8859-15 +VeraBd.ttf -Bitstream-Bitstream Vera Sans-bold-r-normal--0-0-0-0-p-0-iso8859-9 +VeraIt.ttf -Bitstream-Bitstream Vera Sans-medium-i-normal--0-0-0-0-p-0-ascii-0 +VeraIt.ttf -Bitstream-Bitstream Vera Sans-medium-i-normal--0-0-0-0-p-0-fcd8859-15 +VeraIt.ttf -Bitstream-Bitstream Vera Sans-medium-i-normal--0-0-0-0-p-0-iso8859-1 +VeraIt.ttf -Bitstream-Bitstream Vera Sans-medium-i-normal--0-0-0-0-p-0-iso8859-15 +VeraIt.ttf -Bitstream-Bitstream Vera Sans-medium-i-normal--0-0-0-0-p-0-iso8859-9 +VeraSe.ttf -Bitstream-Bitstream Vera Serif-medium-r-normal--0-0-0-0-p-0-ascii-0 +VeraSe.ttf -Bitstream-Bitstream Vera Serif-medium-r-normal--0-0-0-0-p-0-fcd8859-15 +VeraSe.ttf -Bitstream-Bitstream Vera Serif-medium-r-normal--0-0-0-0-p-0-iso8859-1 +VeraSe.ttf -Bitstream-Bitstream Vera Serif-medium-r-normal--0-0-0-0-p-0-iso8859-15 +VeraSe.ttf -Bitstream-Bitstream Vera Serif-medium-r-normal--0-0-0-0-p-0-iso8859-9 +VeraSeBd.ttf -Bitstream-Bitstream Vera Serif-bold-r-normal--0-0-0-0-p-0-ascii-0 +VeraSeBd.ttf -Bitstream-Bitstream Vera Serif-bold-r-normal--0-0-0-0-p-0-fcd8859-15 +VeraSeBd.ttf -Bitstream-Bitstream Vera Serif-bold-r-normal--0-0-0-0-p-0-iso8859-1 +VeraSeBd.ttf -Bitstream-Bitstream Vera Serif-bold-r-normal--0-0-0-0-p-0-iso8859-15 +VeraSeBd.ttf -Bitstream-Bitstream Vera Serif-bold-r-normal--0-0-0-0-p-0-iso8859-9 diff --git a/src/tests/elementary/meson.build b/src/tests/elementary/meson.build index f7d56d742f..54953158e5 100644 --- a/src/tests/elementary/meson.build +++ b/src/tests/elementary/meson.build @@ -99,7 +99,8 @@ elementary_suite_src = [ 'elm_code_test_widget_text.c', 'elm_code_test_widget_selection.c', 'elm_code_test_widget_undo.c', - 'elm_test_widget_focus.c' + 'elm_test_widget_focus.c', + 'elm_test_widget_basics.c' ] elementary_suite = executable('elementary_suite', diff --git a/src/tests/elementary/spec/efl_test_gfx_arrangement.c b/src/tests/elementary/spec/efl_test_gfx_arrangement.c index ba213a51b7..7c0367b147 100644 --- a/src/tests/elementary/spec/efl_test_gfx_arrangement.c +++ b/src/tests/elementary/spec/efl_test_gfx_arrangement.c @@ -35,20 +35,17 @@ EFL_END_TEST EFL_START_TEST(pack_padding) { -#define TUPLE_CHECK(H, V, rh, rv, S, rs) \ +#define TUPLE_CHECK(H, V, rh, rv) \ do { \ - double v, h; \ - Eina_Bool r; \ - efl_gfx_arrangement_content_padding_set(widget, H, V, S); \ - efl_gfx_arrangement_content_padding_get(widget, &h, &v, &r); \ + unsigned int v, h; \ + efl_gfx_arrangement_content_padding_set(widget, H, V); \ + efl_gfx_arrangement_content_padding_get(widget, &h, &v); \ ck_assert(v == rv); \ ck_assert(h == rh); \ - ck_assert_int_eq(r, S); \ } while(0); - TUPLE_CHECK( 0.0, 0.0, 0.0, 0.0, EINA_TRUE, EINA_TRUE); - TUPLE_CHECK( -1.0, -123.0, 0.0, 0.0, EINA_FALSE, EINA_FALSE); - TUPLE_CHECK( -1.0, 123.0, 0.0, 123.0, EINA_FALSE, EINA_FALSE); + TUPLE_CHECK( 0, 0, 0, 0); + TUPLE_CHECK( 1, 123, 1, 123); #undef TUPLE_CHECK } EFL_END_TEST diff --git a/src/tests/elementary/suite_helpers.c b/src/tests/elementary/suite_helpers.c index d4204ef79e..a109f838db 100644 --- a/src/tests/elementary/suite_helpers.c +++ b/src/tests/elementary/suite_helpers.c @@ -193,7 +193,7 @@ _ui_win_visibility_change(void *data EINA_UNUSED, const Efl_Event *ev) EFL_CLASS_SIMPLE_CLASS(efl_loop, "Efl.Loop", EFL_LOOP_CLASS) static Evas_Object * -_elm_suite_win_create() +_elm_suite_win_create(void) { Evas_Object *win; Eo *loop, *timer; @@ -225,9 +225,18 @@ _elm_suite_win_create() return win; } +#define TEST_FONT_DIR TESTS_SRC_DIR "/fonts/" + Evas_Object * -win_add() +win_add(void) { + static Eina_Bool font_path = EINA_FALSE; + + if (!font_path) + { + evas_font_path_global_append(TEST_FONT_DIR); + font_path = EINA_TRUE; + } if (getpid() != main_pid) { if (global_win) return global_win;