summaryrefslogtreecommitdiff
path: root/src/lib/elementary/efl_ui_text_factory_fallback.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/elementary/efl_ui_text_factory_fallback.c')
-rw-r--r--src/lib/elementary/efl_ui_text_factory_fallback.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/lib/elementary/efl_ui_text_factory_fallback.c b/src/lib/elementary/efl_ui_text_factory_fallback.c
new file mode 100644
index 0000000000..4ee456e1e0
--- /dev/null
+++ b/src/lib/elementary/efl_ui_text_factory_fallback.c
@@ -0,0 +1,62 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#include <Elementary.h>
+#include <Elementary_Cursor.h>
+#include "elm_priv.h"
+
+#define MY_CLASS EFL_UI_TEXT_FACTORY_FALLBACK_CLASS
+
+typedef struct _Efl_Ui_Text_Factory_Fallback_Data Efl_Ui_Text_Factory_Fallback_Data;
+
+struct _Efl_Ui_Text_Factory_Fallback_Data
+{
+ Efl_Canvas_Text_Factory *emoticon_factory, *image_factory;
+};
+
+EOLIAN static Eo *
+_efl_ui_text_factory_fallback_efl_object_constructor(Eo *obj,
+ Efl_Ui_Text_Factory_Fallback_Data *pd EINA_UNUSED)
+{
+ obj = efl_constructor(efl_super(obj, MY_CLASS));
+ pd->image_factory = efl_add(EFL_UI_TEXT_FACTORY_IMAGES_CLASS, obj);
+ pd->emoticon_factory = efl_add(EFL_UI_TEXT_FACTORY_EMOTICONS_CLASS, obj);
+ return obj;
+}
+
+EOLIAN static void
+_efl_ui_text_factory_fallback_efl_object_destructor(Eo *obj,
+ Efl_Ui_Text_Factory_Fallback_Data *pd EINA_UNUSED)
+{
+ efl_del(pd->emoticon_factory);
+ efl_del(pd->image_factory);
+ efl_destructor(efl_super(obj, MY_CLASS));
+}
+
+
+EOLIAN static Efl_Canvas_Object
+*_efl_ui_text_factory_fallback_efl_canvas_text_factory_create(
+ Eo *obj EINA_UNUSED,
+ Efl_Ui_Text_Factory_Fallback_Data *pd EINA_UNUSED,
+ Efl_Canvas_Object *object,
+ const char *key)
+{
+ Efl_Canvas_Object *o = NULL;
+
+ // Parse the string. Can be either:
+ // 1. some/name - an emoticon (load from theme)
+ // 2. file:// - image file
+ if (key && !strncmp(key, "file://", 7))
+ {
+ const char *fname = key + 7;
+ o = efl_canvas_text_factory_create(pd->image_factory, object, fname);
+ }
+ else
+ {
+ o = efl_canvas_text_factory_create(pd->emoticon_factory, object, key);
+ }
+ return o;
+}
+
+#include "efl_ui_text_factory_fallback.eo.c"