diff options
author | Daniel Hirt <hirt.danny@gmail.com> | 2017-09-25 20:09:37 +0300 |
---|---|---|
committer | Daniel Hirt <hirt.danny@gmail.com> | 2017-09-26 15:12:42 +0300 |
commit | 44dcd1927bccf7493b5c1e9f7687a46ddea75d29 (patch) | |
tree | 102d6b467df881cf27c99536fc91f10d7b0d781a | |
parent | 8087729a4b9404da0fec12b04db45e1dc81c38cc (diff) | |
download | efl-44dcd1927bccf7493b5c1e9f7687a46ddea75d29.tar.gz |
Canvas text: implement most markup functionality
-rw-r--r-- | src/lib/efl/interfaces/efl_text_markup.eo | 10 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_text.eo | 7 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_textblock.c | 72 |
3 files changed, 65 insertions, 24 deletions
diff --git a/src/lib/efl/interfaces/efl_text_markup.eo b/src/lib/efl/interfaces/efl_text_markup.eo index cb9f3c1ef9..99ea34b4ba 100644 --- a/src/lib/efl/interfaces/efl_text_markup.eo +++ b/src/lib/efl/interfaces/efl_text_markup.eo @@ -16,16 +16,6 @@ interface Efl.Text.Markup(Efl.Text.Cursor) { @in markup: string; [[The markup text to insert]] } } - text_to_markup @class { - [[Converts a given (UTF-8) text to a markup-compatible string. - This is used mainly to set a plain text with the $.markup_set - property. - ]] - params { - @in text: string; [[The text to convert to markup]] - } - return: mstring @owned; [[The markup representation of given text]] - } } } diff --git a/src/lib/evas/canvas/efl_canvas_text.eo b/src/lib/evas/canvas/efl_canvas_text.eo index 22b8e9dd0d..00a05653df 100644 --- a/src/lib/evas/canvas/efl_canvas_text.eo +++ b/src/lib/evas/canvas/efl_canvas_text.eo @@ -2,8 +2,9 @@ import efl_text_types; struct Efl.Canvas.Text.Style; [[EFL text style data structure]] -class Efl.Canvas.Text (Efl.Canvas.Object, Efl.Text, Efl.Text.Properties, Efl.Canvas.Filter.Internal, -Efl.Text.Font, Efl.Text.Style, Efl.Text.Format, Efl.Text.Cursor, Efl.Text.Annotate) +class Efl.Canvas.Text (Efl.Canvas.Object, Efl.Text, Efl.Text.Properties, +Efl.Canvas.Filter.Internal, Efl.Text.Font, Efl.Text.Style, Efl.Text.Format, +Efl.Text.Cursor, Efl.Text.Annotate, Efl.Text.Markup) { [[Efl canvas text class]] legacy_prefix: evas_object_textblock; @@ -346,6 +347,8 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format, Efl.Text.Cursor, Efl.Text.Annota Efl.Text.Annotate.annotation_positions_get; Efl.Text.Annotate.cursor_object_item_annotation { get; } Efl.Text.Annotate.cursor_object_item_insert; + Efl.Text.Markup.markup { set; get; } + Efl.Text.Markup.cursor_markup_insert; } events { cursor,changed; [[Called when cursor changed]] diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index eabc0b18bc..8a6fde779a 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -7454,12 +7454,12 @@ _prepend_escaped_char(Efl_Text_Cursor_Cursor *cur_obj, const char *s, } -EAPI void -evas_object_textblock_text_markup_set(Eo *eo_obj, const char *text) +static void +_evas_object_textblock_text_markup_set(Eo *eo_obj, Efl_Canvas_Text_Data *o, + const char *text) { Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); evas_object_async_block(obj); - Efl_Canvas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS); if (text == o->markup_text) { /* Text is the same and already stringshared, do nothing */ @@ -7507,10 +7507,26 @@ evas_object_textblock_text_markup_set(Eo *eo_obj, const char *text) } EAPI void -evas_object_textblock_text_markup_prepend(Efl_Text_Cursor_Cursor *cur, const char *text) +evas_object_textblock_text_markup_set(Eo *eo_obj, const char *text) +{ + Efl_Canvas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS); + _evas_object_textblock_text_markup_set(eo_obj, o, text); +} + +EOLIAN void +_efl_canvas_text_efl_text_markup_markup_set(Eo *eo_obj, Efl_Canvas_Text_Data *o, + const char *text) +{ + ASYNC_BLOCK; + _evas_object_textblock_text_markup_set(eo_obj, o, text); + //efl_event_callback_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CHANGED, NULL); +} + +static void +_evas_object_textblock_text_markup_prepend(Eo *eo_obj, + Efl_Text_Cursor_Cursor *cur, const char *text) { if (!cur) return; - Evas_Object *eo_obj = cur->obj; Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); evas_object_async_block(obj); TB_HEAD(); @@ -7631,6 +7647,21 @@ evas_object_textblock_text_markup_prepend(Efl_Text_Cursor_Cursor *cur, const cha _evas_textblock_changed(o, eo_obj); } +EAPI void +evas_object_textblock_text_markup_prepend(Efl_Text_Cursor_Cursor *cur, const char *text) +{ + _evas_object_textblock_text_markup_prepend(cur->obj, cur, text); +} + +EOLIAN static void +_efl_canvas_text_efl_text_markup_cursor_markup_insert(Eo *eo_obj, + Efl_Canvas_Text_Data *o EINA_UNUSED, + Efl_Text_Cursor_Cursor *cur, const char *markup) +{ + ASYNC_BLOCK; + _evas_object_textblock_text_markup_prepend(eo_obj, cur, markup); + //efl_event_callback_call(eo_obj, EFL_CANVAS_TEXT_EVENT_CHANGED, NULL); +} /** * @internal @@ -7711,15 +7742,14 @@ _markup_get_text_append(Eina_Strbuf *txt, const Eina_Unicode *text) free(base); } -EAPI const char* -evas_object_textblock_text_markup_get(Eo *eo_obj) +static const char* +_evas_object_textblock_text_markup_get(Eo *eo_obj, Efl_Canvas_Text_Data *o) { Evas_Object_Textblock_Node_Text *n; Eina_Strbuf *txt = NULL; Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); evas_object_async_block(obj); - Efl_Canvas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS); const char *markup; if (o->markup_text) { @@ -7781,6 +7811,19 @@ evas_object_textblock_text_markup_get(Eo *eo_obj) return markup; } +EAPI const char* +evas_object_textblock_text_markup_get(Eo *eo_obj) +{ + Efl_Canvas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS); + return _evas_object_textblock_text_markup_get(eo_obj, o); +} + +EOLIAN const char* +_efl_canvas_text_efl_text_markup_markup_get(Eo *eo_obj, Efl_Canvas_Text_Data *o) +{ + return _evas_object_textblock_text_markup_get(eo_obj, o); +} + EAPI char * evas_textblock_text_markup_to_utf8(const Evas_Object *eo_obj, const char *text) { @@ -7942,14 +7985,12 @@ evas_textblock_text_markup_to_utf8(const Evas_Object *eo_obj, const char *text) return ret; } -EAPI char * -evas_textblock_text_utf8_to_markup(const Evas_Object *eo_obj, const char *text) +static char * +_evas_textblock_text_utf8_to_markup(const char *text) { Eina_Strbuf *sbuf; char *str = NULL; - (void) eo_obj; - if (!text) return NULL; sbuf = eina_strbuf_new(); @@ -7962,6 +8003,13 @@ evas_textblock_text_utf8_to_markup(const Evas_Object *eo_obj, const char *text) } +EAPI char * +evas_textblock_text_utf8_to_markup(const Evas_Object *eo_obj EINA_UNUSED, + const char *text) +{ + return _evas_textblock_text_utf8_to_markup(text); +} + static void _obstacle_update(Evas_Textblock_Obstacle *obs, Eo *eo_obj) { |