Merge branch 'master' into devs/hermet/lottie

This commit is contained in:
Hermet Park 2019-10-07 15:56:56 +09:00
commit 7b3036a992
133 changed files with 1925 additions and 617 deletions

View File

@ -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

View File

@ -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":[]}

View File

@ -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
)

View File

@ -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);

View File

@ -1,5 +1,5 @@
/**
* @page elementary_main
* @page elementary_main Elementary
* @image html elementary.png
* @version @VMAJ@.@VMIN@.@VMIC@
* @date 2008-2014

View File

@ -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

View File

@ -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',

View File

@ -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'
]

View File

@ -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

View File

@ -0,0 +1,605 @@
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#include <Elementary.h>
#include <Efl_Ui.h>
#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

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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));

View File

@ -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));

View File

@ -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 */

View File

@ -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));

View File

@ -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,

View File

@ -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);

View File

@ -560,7 +560,7 @@ struct documentation_generator
{
std::string str = doc.full_text;
if (!doc.since.empty())
str += "\\<br/\\>Since EFL " + doc.since;
str += "\\<br/\\>Since EFL " + doc.since + ".";
str += tail_text;
return generate_tag_summary(sink, str, context);
}

View File

@ -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);

View File

@ -13,7 +13,7 @@ namespace Efl {
///
/// <para>It is internally instantiated and returned by generated extension methods.</para>
///
/// (Since EFL 1.23)
/// Since EFL 1.23.
/// </summary>
public class BindableProperty<T>
{
@ -79,7 +79,7 @@ public class BindableProperty<T>
///
/// <para>It is internally instantiated and returned by generated extension methods.</para>
///
/// (Since EFL 1.23)
/// Since EFL 1.23.
/// </summary>
public class BindablePart<T>
{
@ -99,7 +99,7 @@ public class BindablePart<T>
/// <summary>Represents bindable factory parts as used by <see cref="Efl.Ui.ItemFactory&lt;T&gt;" /> instances.
///
/// (Since EFL 1.23)
/// Since EFL 1.23.
/// </summary>
public class BindableFactoryPart<T>
{

View File

@ -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.
/// </code>
///
/// (Since EFL 1.23)
/// Since EFL 1.23.
///
/// </summary>
public class ItemFactory<T> : Efl.Ui.LayoutFactory, IDisposable

View File

@ -11,7 +11,7 @@ namespace Efl {
/// <summary>Generic <see cref="Efl.IModel" /> implementation for MVVM models based on <see cref="Efl.UserModel&lt;T&gt;" />
///
/// (Since EFL 1.23)
/// Since EFL 1.23.
/// </summary>
public class GenericModel<T> : Efl.Object, Efl.IModel, IDisposable
{

View File

@ -65,7 +65,7 @@ internal class ModelHelper
/// PersonModel p = await model.GetAtAsync(0);
/// </code>
///
/// (Since EFL 1.23)
/// Since EFL 1.23.
/// </summary>
[Efl.Eo.BindingEntity]
public class UserModel<T> : Efl.MonoModelInternal, IDisposable

View File

@ -39,7 +39,10 @@ static class UnsafeNativeMethods
}
}
/// <summary>Wrapper around the initialization functions of all modules. (Since EFL 1.23)</summary>
/// <summary>Wrapper around the initialization functions of all modules.
///
/// Since EFL 1.23.
/// </summary>
public static class All
{
private static bool InitializedUi = false;
@ -109,7 +112,10 @@ public static class All
namespace Ui
{
/// <summary>Initialization and shutdown of the UI libraries. (Since EFL 1.23)</summary>
/// <summary>Initialization and shutdown of the UI libraries.
///
/// Since EFL 1.23.
/// </summary>
public static class Config
{
public static void Init()

View File

@ -9,7 +9,10 @@ namespace Efl
namespace Csharp
{
///<summary>The components to be initialized. (Since Efl 1.23)</summary>
/// <summary>The components to be initialized.
///
/// Since EFL 1.23.
/// </summary>
public enum Components
{
///<summary>Basic components: Eina, Eo, Ecore, Evas and DBus.</summary>
@ -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.
/// </summary>
/// <remarks>
/// Calls to efl outside those efl-callbacks or outside the mainloop are not allowed and will lead to issues
/// </remarks>
///
/// (Since EFL 1.23)
///
/// <example>
/// UserApp is the class that implements the Application abstract
/// <code>

View File

@ -19,7 +19,10 @@ internal class AccessorNativeFunctions
}
/// <summary>Accessors provide an uniform way of accessing Eina containers,
/// similar to C++ STL's and C# IEnumerable (SINCE EFL 1.23).</summary>
/// similar to C++ STL's and C# IEnumerable.
///
/// Since EFL 1.23.
/// </summary>
public class Accessor<T> : IEnumerable<T>, IDisposable
{
/// <summary>Pointer to the native accessor.</summary>
@ -133,7 +136,10 @@ public class Accessor<T> : IEnumerable<T>, IDisposable
}
}
///<summary>Accessor for Inlists (SINCE EFL 1.23).</summary>
/// <summary>Accessor for Inlists.
///
/// Since EFL 1.23.
/// </summary>
public class AccessorInList<T> : Accessor<T>
{
/// <summary>Create a new accessor wrapping the given pointer.</summary>
@ -153,7 +159,10 @@ public class AccessorInList<T> : Accessor<T>
}
}
///<summary>Accessor for Inarrays (SINCE EFL 1.23).</summary>
/// <summary>Accessor for Inarrays.
///
/// Since EFL 1.23.
/// </summary>
public class AccessorInArray<T> : Accessor<T>
{
/// <summary>Create a new accessor wrapping the given pointer.</summary>

View File

@ -45,7 +45,10 @@ public static class ArrayNativeFunctions
eina_array_foreach_custom_export_mono(IntPtr array, IntPtr cb, IntPtr fdata);
}
/// <summary>A container of contiguous allocated elements (SINCE EFL 1.23).</summary>
/// <summary>A container of contiguous allocated elements.
///
/// Since EFL 1.23.
/// </summary>
public class Array<T> : IEnumerable<T>, IDisposable
{
public static uint DefaultStep = 32;

View File

@ -7,7 +7,9 @@ namespace Eina
{
/// <summary>
/// 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.
/// </summary>
public class Binbuf : IDisposable
{

View File

@ -41,7 +41,10 @@ internal static class NativeCustomExportFunctions
efl_mono_native_efl_unref_addr_get();
}
/// <summary>Wrapper around native memory DllImport'd functions</summary>
/// <summary>Wrapper around native memory DllImport'd functions.
///
/// Since EFL 1.23.
/// </summary>
public static class MemoryNative
{
public static void Free(IntPtr ptr)
@ -126,6 +129,11 @@ public static class MemoryNative
}
}
/// <summary>
/// Conversor of raw pointer to a type and type to raw pointer
///
/// Since EFL 1.23.
/// </summary>
public static class PrimitiveConversion
{
public static T PointerToManaged<T>(IntPtr nat)
@ -148,6 +156,11 @@ public static class PrimitiveConversion
}
}
/// <summary>
/// Conversor of string to native string and native string to string.
///
/// Since EFL 1.23.
/// </summary>
public static class StringConversion
{
public static IntPtr ManagedStringToNativeUtf8Alloc(string managedString)

View File

@ -6,6 +6,11 @@ using System.Runtime.InteropServices;
namespace Eina
{
/// <summary>
/// Manage the initialization and cleanup for eina.
///
/// Since EFL 1.23.
/// </summary>
public class Config
{
[DllImport(efl.Libs.Eina)] private static extern int eina_init();
@ -27,8 +32,9 @@ public class Config
}
/// <summary>
/// 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.
/// </summary>
public class DisposableIntPtr : IDisposable
{

View File

@ -6,7 +6,10 @@ using System.Runtime.InteropServices;
namespace Eina
{
/// <summary>Error codes from native Eina methods. (Since EFL 1.23)</summary>
/// <summary>Error codes from native Eina methods.
///
/// Since EFL 1.23.
/// </summary>
public struct Error : IComparable<Error>
{
int code;

View File

@ -130,7 +130,10 @@ public static class HashNativeFunctions
eina_hash_iterator_ptr_key_wrapper_new_custom_export_mono(IntPtr hash);
}
/// <summary>Wrapper around native dictionary mapping keys to values. (Since EFL 1.23)</summary>
/// <summary>Wrapper around native dictionary mapping keys to values.
///
/// Since EFL 1.23.
/// </summary>
public class Hash<TKey, TValue> : IEnumerable<KeyValuePair<TKey,TValue>>, IDisposable
{
public IntPtr Handle {get; set;} = IntPtr.Zero;

View File

@ -67,7 +67,10 @@ public static class InarrayNativeFunctions
eina_inarray_accessor_new(IntPtr array);
}
/// <summary>Wrapper around an inplace array. (Since EFL 1.23)</summary>
/// <summary>Wrapper around an inplace array.
///
/// Since EFL 1.23.
/// </summary>
public class Inarray<T> : IEnumerable<T>, IDisposable
{
public static uint DefaultStep = 0;

View File

@ -80,7 +80,10 @@ public static class InlistNativeFunctions
eina_inlist_iterator_wrapper_new_custom_export_mono(IntPtr in_list);
}
/// <summary>Wrapper around an inplace list. (Since EFL 1.23)</summary>
/// <summary>Wrapper around an inplace list.
///
/// Since EFL 1.23.
/// </summary>
public class Inlist<T> : IEnumerable<T>, IDisposable
{
public IntPtr Handle {get;set;} = IntPtr.Zero;

View File

@ -29,7 +29,10 @@ public static class IteratorNativeFunctions
eina_carray_iterator_new(IntPtr array);
}
/// <summary>Wrapper around a native Eina iterator. (Since EFL 1.23)</summary>
/// <summary>Wrapper around a native Eina iterator.
///
/// Since EFL 1.23.
/// </summary>
public class Iterator<T> : IEnumerable<T>, IDisposable
{
public IntPtr Handle {get;set;} = IntPtr.Zero;

View File

@ -106,7 +106,10 @@ public static class ListNativeFunctions
eina_list_last_data_get_custom_export_mono(IntPtr list);
}
/// <summary>Native wrapper around a linked list of items. (Since EFL 1.23)</summary>
/// <summary>Native wrapper around a linked list of items.
///
/// Since EFL 1.23.
/// </summary>
public class List<T> : IEnumerable<T>, IDisposable
{

View File

@ -9,7 +9,10 @@ namespace Eina
{
// Manual wrappers around eina functions
/// <summary>EFL Logging facilities. (Since EFL 1.23)</summary>
/// <summary>EFL Logging facilities.
///
/// Since EFL 1.23.
/// </summary>
public class Log
{
[DllImport(efl.Libs.Eina)] private static extern void eina_log_print(

View File

@ -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.
/// </summary>
public class Promise : IDisposable
{

View File

@ -14,7 +14,10 @@ public interface ISliceBase
int Length {get;set;}
};
/// <summary>Pointer to a slice of native memory. (Since EFL 1.23)</summary>
/// <summary>Pointer to a slice of native memory.
///
/// Since EFL 1.23.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct Slice : ISliceBase
{
@ -41,7 +44,10 @@ public struct Slice : ISliceBase
}
}
/// <summary>Pointer to a slice of native memory. (Since EFL 1.23)</summary>
/// <summary>Pointer to a slice of native memory.
///
/// Since EFL 1.23.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct RwSlice : ISliceBase
{

View File

@ -50,7 +50,10 @@ static internal class StrbufNativeMethods
} // namespace EinaNative
///<summary>Native string buffer, similar to the C# StringBuilder class. (Since EFL 1.23)</summary>
/// <summary>Native string buffer, similar to the C# StringBuilder class.
///
/// Since EFL 1.23.
/// </summary>
public class Strbuf : IDisposable
{
///<summary>Pointer to the underlying native handle.</summary>

View File

@ -536,7 +536,10 @@ static internal class UnsafeNativeMethods
}
}
/// <summary>Struct for passing Values by value to Unmanaged functions. (Since EFL 1.23)</summary>
/// <summary>Struct for passing Values by value to Unmanaged functions.
///
/// Since EFL 1.23.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct ValueNative
{
@ -549,7 +552,10 @@ public struct ValueNative
}
}
/// <summary>Exception for failures when setting an container item. (Since EFL 1.23)</summary>
/// <summary>Exception for failures when setting an container item.
///
/// Since EFL 1.23.
/// </summary>
[Serializable]
public class SetItemFailedException : Exception
{
@ -574,7 +580,10 @@ public class SetItemFailedException : Exception
}
}
/// <summary>Exception for methods that must have been called on a container. (Since EFL 1.23)</summary>
/// <summary>Exception for methods that must have been called on a container.
///
/// Since EFL 1.23.
/// </summary>
[Serializable]
public class InvalidValueTypeException: Exception
{
@ -600,7 +609,10 @@ public class InvalidValueTypeException: Exception
}
/// <summary>Managed-side Enum to represent Eina_Value_Type constants. (Since EFL 1.23)</summary>
/// <summary>Managed-side Enum to represent Eina_Value_Type constants.
///
/// Since EFL 1.23.
/// </summary>
public enum ValueType
{
/// <summary>Signed 8 bit integer. Same as 'sbyte'</summary>
@ -729,7 +741,7 @@ static class ValueTypeMethods
/// marshall_type_impl.hh in the generator). User-facing API still uses Eina.ValueType
/// normally.</para>
///
/// (Since EFL 1.23)
/// Since EFL 1.23.
/// </summary>
[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.</para>
///
/// (Since EFL 1.23)
/// Since EFL 1.23.
/// </summary>
public class Value : IDisposable, IComparable<Value>, IEquatable<Value>
{

View File

@ -6,7 +6,10 @@ using System.Runtime.InteropServices;
namespace eldbus
{
/// <summary>Initializes Eldbus. (Since EFL 1.23)</summary>
/// <summary>Initializes Eldbus.
///
/// Since EFL 1.23.
/// </summary>
public static class Config
{
[DllImport(efl.Libs.Eldbus)] private static extern int eldbus_init();

View File

@ -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);
}
/// <summary>Represents a DBus connection. (Since EFL 1.23)</summary>
/// <summary>Represents a DBus connection.
///
/// Since EFL 1.23.
/// </summary>
public class Connection : IDisposable
{
public enum Type

View File

@ -189,7 +189,10 @@ public static class EldbusMessageNativeFunctions
}
/// <summary>Represents a DBus message. (Since EFL 1.23)</summary>
/// <summary>Represents a DBus message.
///
/// Since EFL 1.23.
/// </summary>
public class Message : IDisposable
{
public IntPtr Handle {get;set;} = IntPtr.Zero;

View File

@ -82,7 +82,10 @@ public static class EldbusObjectNativeFunctions
// eldbus_object_manager_interfaces_removed(IntPtr obj, Eldbus_Signal_Cb cb, IntPtr cb_data);
}
/// <summary>Represents a DBus object. (Since EFL 1.23)</summary>
/// <summary>Represents a DBus object.
///
/// Since EFL 1.23.
/// </summary>
public class Object : System.IDisposable
{

View File

@ -41,7 +41,10 @@ public static class EldbusPendingNativeFunctions
eldbus_pending_free_cb_del(IntPtr pending, IntPtr cb, IntPtr data);
}
/// <summary>Represents a DBus pending. (Since EFL 1.23)</summary>
/// <summary>Represents a DBus pending.
///
/// Since EFL 1.23.
/// </summary>
public class Pending
{
public IntPtr Handle {get;set;} = IntPtr.Zero;

View File

@ -65,7 +65,10 @@ public static class EldbusProxyNativeFunctions
eldbus_proxy_event_callback_del(IntPtr proxy, int type, IntPtr cb, IntPtr cb_data);
}
/// <summary>Represents a DBus proxy object. (Since EFL 1.23)</summary>
/// <summary>Represents a DBus proxy object.
///
/// Since EFL 1.23.
/// </summary>
public class Proxy : IDisposable
{
public IntPtr Handle {get;set;} = IntPtr.Zero;

View File

@ -20,7 +20,7 @@ namespace Eo
public abstract class EoWrapper : IWrapper, IDisposable
{
/// <summary>Object used to synchronize access to EFL events.</summary>
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
/// <param name="evtDelegate">Managed delegate that will be called by evtCaller on event raising.</param>
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();
}
}
/// <summary>Removes the given event handler for the given event. For internal use only.</summary>
@ -247,30 +250,33 @@ public abstract class EoWrapper : IWrapper, IDisposable
/// <param name="evtDelegate">The delegate to be removed.</param>
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.");
}
}
}

View File

@ -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);

View File

@ -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);

View File

@ -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.
*

View File

@ -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)
{

View File

@ -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.]]
}
}
}

View File

@ -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.]]
}
}
}

View File

@ -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);

View File

@ -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*

View File

@ -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;

View File

@ -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;

View File

@ -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.

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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 {

View File

@ -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);

View File

@ -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;
};

View File

@ -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;

View File

@ -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;

View File

@ -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.]]
}
}
}

View File

@ -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;

View File

@ -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)
{

View File

@ -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;
}

View File

@ -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;

View File

@ -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);

View File

@ -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.
*

View File

@ -81,6 +81,7 @@ extern "C" {
#include <canvas/efl_canvas_vg_image.eo.h>
#include <canvas/efl_canvas_vg_object.eo.h>
#include <canvas/efl_canvas_vg_shape.eo.h>
#include <canvas/efl_gfx_vg_value_provider.eo.h>
#include <canvas/efl_gfx_mapping.eo.h>
#include <canvas/efl_input_clickable.eo.h>

View File

@ -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
*

View File

@ -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;

View File

@ -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"

View File

@ -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;
}
}

View File

@ -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

View File

@ -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;

View File

@ -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);

View File

@ -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',

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

Some files were not shown because too many files have changed in this diff Show More