elm_test: add smart object mask test to existing masking test

Summary:
this adds another masking functionality using a layout object to the test
when the toggle mask button is clicked enough times
Depends on D8849

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8850
This commit is contained in:
Mike Blumenkrantz 2019-05-30 13:15:43 -04:00
parent 1b4ce987a7
commit 7387410019
2 changed files with 50 additions and 8 deletions

View File

@ -13,6 +13,18 @@ collections {
} }
} }
} }
group { "image";
parts {
image { "mask";
desc { "default";
image {
normal: "roundedrect.png";
border: 22 22 22 22;
}
}
}
}
}
group { "masking"; group { "masking";
parts { parts {
rect { "clip"; norender; } rect { "clip"; norender; }
@ -25,10 +37,16 @@ collections {
} }
} }
} }
swallow { "mask2";
norender;
}
swallow { "content"; swallow { "content";
desc { "default"; desc { "default";
clip_to: "mask"; clip_to: "mask";
} }
desc { "smartclip";
clip: "mask2";
}
desc { "unclipped"; desc { "unclipped";
clip_to: "clip"; clip_to: "clip";
} }
@ -47,6 +65,12 @@ collections {
action: STATE_SET "default"; action: STATE_SET "default";
target: "content"; target: "content";
} }
program {
signal: "smartclip";
source: "*";
action: STATE_SET "smartclip";
target: "content";
}
} }
} }
group { "text"; group { "text";

View File

@ -61,20 +61,31 @@ _gl_del(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED)
} }
static void static void
_toggle_mask(void *data, const Efl_Event *ev EINA_UNUSED) _toggle_mask(void *data, const Efl_Event *ev)
{ {
Eo *ly = data; Eo *ly = data;
const char *clip = efl_key_data_get(ly, "clip");
const char *text;
if (!efl_key_data_get(ly, "unclipped")) if (eina_streq(clip, "image"))
{ {
elm_layout_signal_emit(ly, "unclip", "elm_test"); elm_layout_signal_emit(ly, "unclip", "elm_test");
efl_key_data_set(ly, "unclipped", "yup"); efl_key_data_set(ly, "clip", NULL);
text = "Toggle mask (none)";
}
else if (eina_streq(clip, "smart"))
{
elm_layout_signal_emit(ly, "clip", "elm_test");
efl_key_data_set(ly, "clip", "image");
text = "Toggle mask (image)";
} }
else else
{ {
elm_layout_signal_emit(ly, "clip", "elm_test"); elm_layout_signal_emit(ly, "smartclip", "elm_test");
efl_key_data_set(ly, "unclipped", NULL); efl_key_data_set(ly, "clip", "smart");
text = "Toggle mask (smart)";
} }
efl_text_set(ev->object, text);
} }
static void static void
@ -101,7 +112,7 @@ _rotate_win(void *data, const Efl_Event *ev EINA_UNUSED)
void void
test_evas_mask(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) test_evas_mask(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{ {
Eo *win, *box, *o, *gl, *ly, *box2; Eo *win, *box, *o, *gl, *ly, *smart_mask, *box2;
Elm_Genlist_Item_Class *itc; Elm_Genlist_Item_Class *itc;
char buf[PATH_MAX]; char buf[PATH_MAX];
@ -121,9 +132,16 @@ test_evas_mask(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
snprintf(buf, sizeof(buf), "%s/objects/test_masking.edj", elm_app_data_dir_get()); snprintf(buf, sizeof(buf), "%s/objects/test_masking.edj", elm_app_data_dir_get());
ly = efl_add(EFL_UI_LAYOUT_CLASS, win, ly = efl_add(EFL_UI_LAYOUT_CLASS, win,
efl_file_set(efl_added, buf), efl_file_set(efl_added, buf),
efl_file_key_set(efl_added, "masking")); efl_file_key_set(efl_added, "masking"),
efl_key_data_set(efl_added, "clip", "image"));
efl_pack(box, ly); efl_pack(box, ly);
// FIXME: layout EO API
smart_mask = efl_add(EFL_UI_LAYOUT_CLASS, win,
efl_file_set(efl_added, buf),
efl_file_key_set(efl_added, "image"));
elm_object_part_content_set(ly, "mask2", smart_mask);
// FIXME: No genlist in EO API // FIXME: No genlist in EO API
o = gl = elm_genlist_add(win); o = gl = elm_genlist_add(win);
elm_genlist_homogeneous_set(gl, 1); elm_genlist_homogeneous_set(gl, 1);
@ -157,7 +175,7 @@ test_evas_mask(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
// FIXME: button EO API // FIXME: button EO API
efl_add(EFL_UI_BUTTON_CLASS, win, efl_add(EFL_UI_BUTTON_CLASS, win,
efl_text_set(efl_added, "Toggle mask"), efl_text_set(efl_added, "Toggle mask (image)"),
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _toggle_mask, ly), efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _toggle_mask, ly),
efl_gfx_hint_weight_set(efl_added, 0.0, 0.0), efl_gfx_hint_weight_set(efl_added, 0.0, 0.0),
efl_pack(box2, efl_added)); efl_pack(box2, efl_added));