diff options
Diffstat (limited to 'src/lib/elementary/efl_ui_text_factory_fallback.c')
-rw-r--r-- | src/lib/elementary/efl_ui_text_factory_fallback.c | 62 |
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" |