elm_test: Add slider to control blur radius

This commit is contained in:
Jean-Philippe Andre 2017-03-20 19:57:56 +09:00
parent 3f6f51560a
commit 513d686628
1 changed files with 27 additions and 3 deletions

View File

@ -21,7 +21,7 @@ static const int rnd[] = {
static const char *filter =
"padding_set {0}"
"fill { color = 'red' }"
"blur { 5 }"
"blur { radius }"
"print ('Evaluating filter: ' .. input.width .. 'x' .. input.height)"
;
@ -53,6 +53,18 @@ _anim_toggle(void *data, const Efl_Event *ev EINA_UNUSED)
eina_iterator_free(it);
}
static void
_radius_set(void *data, const Efl_Event *ev)
{
char buf[128];
Eo *win = data;
Eo *snap;
snap = efl_key_wref_get(win, "snap");
sprintf(buf, "tonumber(%d)", (int) elm_slider_value_get(ev->object));
efl_gfx_filter_data_set(snap, "radius", buf, EINA_TRUE);
}
static void
_close(void *data, const Efl_Event *ev EINA_UNUSED)
{
@ -93,6 +105,7 @@ test_evas_snapshot(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e
// Snapshot
snap = efl_add(EFL_CANVAS_SNAPSHOT_CLASS, win,
efl_gfx_filter_program_set(efl_added, filter, "filter"),
efl_gfx_filter_data_set(efl_added, "radius", "tonumber(5)", EINA_TRUE),
efl_gfx_size_hint_align_set(efl_added, -1.0, -1.0),
efl_gfx_size_hint_weight_set(efl_added, 1.0, 1.0),
efl_pack_grid(grid, efl_added, 1, 1, GRID_SIZE - 2, GRID_SIZE - 2),
@ -118,11 +131,22 @@ test_evas_snapshot(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e
efl_pack_grid(grid, o, 0, 0, GRID_SIZE, GRID_SIZE);
// Controls
efl_add(ELM_SLIDER_CLASS, win,
elm_object_text_set(efl_added, "Blur radius: "),
elm_slider_min_max_set(efl_added, 0, 64),
elm_slider_value_set(efl_added, 5),
elm_slider_unit_format_set(efl_added, "%.0f px"),
efl_gfx_size_hint_align_set(efl_added, -1.0, -1.0),
efl_gfx_size_hint_weight_set(efl_added, 1.0, 0.0),
efl_pack_grid(grid, efl_added, 0, GRID_SIZE, GRID_SIZE, 1),
efl_event_callback_add(efl_added, ELM_SLIDER_EVENT_CHANGED, _radius_set, win),
efl_gfx_visible_set(efl_added, 1));
efl_add(ELM_BUTTON_CLASS, win,
efl_text_set(efl_added, "Toggle animation"),
efl_gfx_size_hint_align_set(efl_added, -1.0, -1.0),
efl_gfx_size_hint_weight_set(efl_added, 1.0, 0.0),
efl_pack_grid(grid, efl_added, 0, GRID_SIZE, (GRID_SIZE + 1) / 2, 1),
efl_pack_grid(grid, efl_added, 0, GRID_SIZE + 1, (GRID_SIZE + 1) / 2, 1),
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _anim_toggle, win),
efl_gfx_visible_set(efl_added, 1));
@ -130,7 +154,7 @@ test_evas_snapshot(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e
efl_text_set(efl_added, "Close"),
efl_gfx_size_hint_align_set(efl_added, -1.0, -1.0),
efl_gfx_size_hint_weight_set(efl_added, 1.0, 0.0),
efl_pack_grid(grid, efl_added, (GRID_SIZE + 1) / 2, GRID_SIZE, (GRID_SIZE + 1) / 2, 1),
efl_pack_grid(grid, efl_added, (GRID_SIZE + 1) / 2, GRID_SIZE + 1, (GRID_SIZE + 1) / 2, 1),
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _close, win),
efl_gfx_visible_set(efl_added, 1));