jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=437ae4a3d3b0d00a279fb93f4341c9205d785c36

commit 437ae4a3d3b0d00a279fb93f4341c9205d785c36
Author: Jean-Philippe Andre <[email protected]>
Date:   Wed Mar 8 19:19:36 2017 +0900

    elm_test: Add a test case for Emojis
    
    Yay to full color characters. The list of selected emojis is
    quite random. Some more could be added.
    
    Just two remarks:
    - Aren't they supposed to scale down?
    - Why is my grinning face always ugly?
---
 src/bin/elementary/test.c       |   2 +
 src/bin/elementary/test_label.c | 123 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 125 insertions(+)

diff --git a/src/bin/elementary/test.c b/src/bin/elementary/test.c
index a850816..eaac07b 100644
--- a/src/bin/elementary/test.c
+++ b/src/bin/elementary/test.c
@@ -206,6 +206,7 @@ void test_label(void *data, Evas_Object *obj, void 
*event_info);
 void test_label_slide(void *data, Evas_Object *obj, void *event_info);
 void test_label_wrap(void *data, Evas_Object *obj, void *event_info);
 void test_label_ellipsis(void *data, Evas_Object *obj, void *event_info);
+void test_label_emoji(void *data, Evas_Object *obj, void *event_info);
 void test_conformant(void *data, Evas_Object *obj, void *event_info);
 void test_conformant2(void *data, Evas_Object *obj, void *event_info);
 void test_conformant_indicator(void *data, Evas_Object *obj, void *event_info);
@@ -954,6 +955,7 @@ add_tests:
    ADD_TEST(NULL, "Text", "Label Slide", test_label_slide);
    ADD_TEST(NULL, "Text", "Label Wrap", test_label_wrap);
    ADD_TEST(NULL, "Text", "Label Ellipsis", test_label_ellipsis);
+   ADD_TEST(NULL, "Text", "Label Emoji", test_label_emoji);
 
    //------------------------------//
    ADD_TEST(NULL, "Stored Surface Buffer", "Launcher", test_launcher);
diff --git a/src/bin/elementary/test_label.c b/src/bin/elementary/test_label.c
index 8aaf2ef..3de41f6 100644
--- a/src/bin/elementary/test_label.c
+++ b/src/bin/elementary/test_label.c
@@ -374,3 +374,126 @@ test_label_ellipsis(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED, void *
    evas_object_resize(win, 300, 100);
    evas_object_show(win);
 }
+
+
+/*** Label Emoji *************************************************************/
+static char *
+_fontlist_text_get(void *data, Evas_Object *obj EINA_UNUSED, const char *part 
EINA_UNUSED)
+{
+   return strdup(data);
+}
+
+static void
+_font_set(Evas_Object *label, const char *font)
+{
+   // Note: u1F420 doesn't work but U0001F420 does.
+   const char *emojis = u8""
+                        "<font='%s',Sans font_size=16 align=left>"
+                        "Grinning Face: \U0001f600<br/>"
+                        "Face with Tears of Joy: \xf0\x9f\x98\x82<br/>"
+                        "Panda Face: \xf0\x9f\x90\xbc<br/>"
+                        "Ghost: \xf0\x9f\x91\xbb<br/>"
+                        "Tropical Fish: \U0001F420<br/>"
+                        "Mosque: \U0001f54c<br/>"
+                        "Pencil: \u270f<br/>"
+                        "Person With Ball: \u26f9<br/>"
+                        "Birthday Cake: \U0001F382<br/>"
+                        "Dog Face: \U0001F436<br/>"
+                        "Music: \U0001F3B5 \U0001F3B6 \U0001F3BC<br/>"
+                        "Person Shrugging: \U0001F937<br/>"
+                        "</>";
+
+   elm_object_text_set(label, eina_slstr_printf(emojis, font));
+}
+
+static void
+_font_item_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+   Elm_Object_Item *item = event_info;
+   Evas_Object *lb = data;
+   const char *font;
+
+   font = elm_object_item_text_get(item);
+   elm_object_text_set(obj, font);
+   elm_combobox_hover_end(obj);
+   _font_set(lb, font);
+}
+
+static void
+_font_item_del_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
+{
+   free(data);
+}
+
+void
+test_label_emoji(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
+{
+   Evas_Object *win, *bx, *txt, *cmb;
+   Elm_Genlist_Item_Class *itc;
+   Eina_List *list, *l;
+   const char *font;
+   Evas *evas;
+
+   const char *font_patterns[] = { "emoji", "symbola" };
+
+   win = elm_win_util_standard_add("label-emoji", "Label Emoji");
+   elm_win_autodel_set(win, EINA_TRUE);
+
+   bx = elm_box_add(win);
+   elm_box_padding_set(bx, 0, ELM_SCALE_SIZE(10));
+   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_win_resize_object_add(win, bx);
+   evas_object_show(bx);
+
+   txt = elm_entry_add(win);
+   elm_entry_editable_set(txt, EINA_TRUE);
+   elm_entry_scrollable_set(txt, EINA_TRUE);
+   evas_object_size_hint_weight_set(txt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(txt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_box_pack_end(bx, txt);
+   evas_object_show(txt);
+
+   cmb = elm_combobox_add(win);
+   elm_entry_editable_set(cmb, EINA_FALSE);
+   evas_object_size_hint_weight_set(cmb, EVAS_HINT_EXPAND, 0.0);
+   evas_object_size_hint_align_set(cmb, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_box_pack_end(bx, cmb);
+
+   itc = elm_genlist_item_class_new();
+   itc->item_style = "default";
+   itc->func.text_get = _fontlist_text_get;
+
+   evas = evas_object_evas_get(win);
+   list = evas_font_available_list(evas);
+   EINA_LIST_FOREACH(list, l, font)
+     {
+        size_t k;
+
+        if (!font) continue;
+        for (k = 0; k < EINA_C_ARRAY_LENGTH(font_patterns); k++)
+          {
+             if (strcasestr(font, font_patterns[k]))
+               {
+                  Elm_Object_Item *it;
+
+                  it = elm_genlist_item_append(cmb, itc, strdup(font), NULL,
+                                               ELM_GENLIST_ITEM_NONE,
+                                               NULL, NULL);
+                  elm_object_item_del_cb_set(it, _font_item_del_cb);
+               }
+          }
+     }
+   evas_font_available_list_free(evas, list);
+
+   evas_object_smart_callback_add(cmb, "item,pressed", _font_item_sel_cb, txt);
+
+   elm_genlist_item_class_free(itc);
+
+   elm_object_text_set(cmb, "Sans");
+   _font_set(txt, "Sans");
+   evas_object_show(cmb);
+
+   evas_object_resize(win, 300, 400);
+   evas_object_show(win);
+}

-- 


Reply via email to