diff options
author | Tom Hacohen <tom@stosb.com> | 2016-06-13 14:59:26 +0100 |
---|---|---|
committer | Tom Hacohen <tom@stosb.com> | 2016-06-13 15:07:29 +0100 |
commit | 87b958daf326f7cf0612eaf94d1b380c89b43f35 (patch) | |
tree | 25266c315c72daa6639a1806f1a5ec90fc425572 | |
parent | 0821b1d71633faabd60de51df8f2350a971a4948 (diff) | |
download | efl-87b958daf326f7cf0612eaf94d1b380c89b43f35.tar.gz |
Canvas text: Make valign and replacement char legal formats.
They are only legal in the style, and not in annotations.
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_text.eo | 23 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_textblock.c | 41 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_textblock_legacy.h | 48 |
3 files changed, 81 insertions, 31 deletions
diff --git a/src/lib/evas/canvas/efl_canvas_text.eo b/src/lib/evas/canvas/efl_canvas_text.eo index 0e073bda56..42925e79c2 100644 --- a/src/lib/evas/canvas/efl_canvas_text.eo +++ b/src/lib/evas/canvas/efl_canvas_text.eo @@ -4,21 +4,6 @@ class Efl.Canvas.Text (Evas.Object, Efl.Text) { legacy_prefix: evas_object_textblock; methods { - @property valign { - [[The vertical alignment of text within the textblock object as a whole. - - Normally alignment is 0.0 (top of object). Values given should - be between 0.0 and 1.0 (1.0 bottom of object, 0.5 being - vertically centered etc.). - - @since 1.1 - ]] - set {} - get {} - values { - align: double; [[The alignment set for the object.]] - } - } @property bidi_delimiters { [[BiDi delimiters are used for in-paragraph separation of bidi segments. This is useful for example in recipients fields of @@ -33,14 +18,6 @@ class Efl.Canvas.Text (Evas.Object, Efl.Text) delim: string; [[A null terminated string of delimiters, e.g ",|" or $null if empty.]] } } - @property replace_char { - [[The "replacement character" to use for the given textblock object.]] - set {} - get {} - values { - ch: string; [[The charset name.]] - } - } @property legacy_newline { [[When true, newline character will behave as a paragraph separator. diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index a8d5ca1625..cabb67f42a 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -1177,6 +1177,7 @@ static const char *backing_colorstr = NULL; static const char *strikethrough_colorstr = NULL; static const char *alignstr = NULL; static const char *valignstr = NULL; +static const char *text_valignstr = NULL; static const char *wrapstr = NULL; static const char *left_marginstr = NULL; static const char *right_marginstr = NULL; @@ -1193,6 +1194,7 @@ static const char *itemstr = NULL; static const char *linefillstr = NULL; static const char *ellipsisstr = NULL; static const char *passwordstr = NULL; +static const char *replacement_charstr = NULL; static const char *underline_dash_widthstr = NULL; static const char *underline_dash_gapstr = NULL; static const char *underline_heightstr = NULL; @@ -1280,6 +1282,7 @@ _format_command_init(void) strikethrough_colorstr = eina_stringshare_add("strikethrough_color"); alignstr = eina_stringshare_add("align"); valignstr = eina_stringshare_add("valign"); + text_valignstr = eina_stringshare_add("text_valign"); wrapstr = eina_stringshare_add("wrap"); left_marginstr = eina_stringshare_add("left_margin"); right_marginstr = eina_stringshare_add("right_margin"); @@ -1296,6 +1299,7 @@ _format_command_init(void) linefillstr = eina_stringshare_add("linefill"); ellipsisstr = eina_stringshare_add("ellipsis"); passwordstr = eina_stringshare_add("password"); + replacement_charstr = eina_stringshare_add("replacement_char"); underline_dash_widthstr = eina_stringshare_add("underline_dash_width"); underline_dash_gapstr = eina_stringshare_add("underline_dash_gap"); underline_heightstr = eina_stringshare_add("underline_height"); @@ -1332,6 +1336,7 @@ _format_command_shutdown(void) eina_stringshare_del(strikethrough_colorstr); eina_stringshare_del(alignstr); eina_stringshare_del(valignstr); + eina_stringshare_del(text_valignstr); eina_stringshare_del(wrapstr); eina_stringshare_del(left_marginstr); eina_stringshare_del(right_marginstr); @@ -1348,6 +1353,7 @@ _format_command_shutdown(void) eina_stringshare_del(linefillstr); eina_stringshare_del(ellipsisstr); eina_stringshare_del(passwordstr); + eina_stringshare_del(replacement_charstr); eina_stringshare_del(underline_dash_widthstr); eina_stringshare_del(underline_dash_gapstr); eina_stringshare_del(underline_heightstr); @@ -1893,6 +1899,15 @@ _format_command(Evas_Object *eo_obj, Evas_Object_Textblock_Format *fmt, const ch else if (fmt->valign > 1.0) fmt->valign = 1.0; } } + else if (cmd == text_valignstr) + { + Efl_Canvas_Text_Data *o = eo_data_scope_get(eo_obj, MY_CLASS); + char *endptr = NULL; + double val = strtod(param, &endptr); + o->valign = val; + if (o->valign < 0.0) o->valign = 0.0; + else if (o->valign > 1.0) o->valign = 1.0; + } else if (cmd == wrapstr) { /** @@ -2381,6 +2396,11 @@ _format_command(Evas_Object *eo_obj, Evas_Object_Textblock_Format *fmt, const ch else if (len == 2 && !strcmp(param, "on")) fmt->password = 1; } + else if (cmd == replacement_charstr) + { + Efl_Canvas_Text_Data *o = eo_data_scope_get(eo_obj, MY_CLASS); + eina_stringshare_replace(&o->repch, param); + } else if (cmd == underline_dash_widthstr) { /** @@ -6736,9 +6756,10 @@ evas_object_textblock_style_user_pop(Eo *eo_obj) efl_canvas_text_style_set(eo_obj, _STYLE_USER, NULL); } -EOLIAN static void -_efl_canvas_text_replace_char_set(Eo *eo_obj, Efl_Canvas_Text_Data *o, const char *ch) +EAPI void +evas_object_textblock_replace_char_set(Efl_Canvas_Text *eo_obj, const char *ch) { + Efl_Canvas_Text_Data *o = eo_data_scope_get(eo_obj, MY_CLASS); Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); evas_object_async_block(obj); if (o->repch) eina_stringshare_del(o->repch); @@ -6748,6 +6769,7 @@ _efl_canvas_text_replace_char_set(Eo *eo_obj, Efl_Canvas_Text_Data *o, const cha _evas_textblock_changed(o, eo_obj); } + EOLIAN static void _efl_canvas_text_legacy_newline_set(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o, Eina_Bool mode) { @@ -6773,9 +6795,10 @@ _efl_canvas_text_is_empty_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o) return !o->text_nodes || (eina_ustrbuf_length_get(o->text_nodes->unicode) == 0); } -EOLIAN static void -_efl_canvas_text_valign_set(Eo *eo_obj, Efl_Canvas_Text_Data *o, double align) +EAPI void +evas_object_textblock_valign_set(Efl_Canvas_Text *eo_obj, double align) { + Efl_Canvas_Text_Data *o = eo_data_scope_get(eo_obj, MY_CLASS); Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); evas_object_async_block(obj); if (align < 0.0) align = 0.0; @@ -6785,9 +6808,10 @@ _efl_canvas_text_valign_set(Eo *eo_obj, Efl_Canvas_Text_Data *o, double align) _evas_textblock_changed(o, eo_obj); } -EOLIAN static double -_efl_canvas_text_valign_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o) +EAPI double +evas_object_textblock_valign_get(const Efl_Canvas_Text *obj) { + Efl_Canvas_Text_Data *o = eo_data_scope_get(obj, MY_CLASS); return o->valign; } @@ -6805,9 +6829,10 @@ _efl_canvas_text_bidi_delimiters_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Dat return o->bidi_delimiters; } -EOLIAN static const char* -_efl_canvas_text_replace_char_get(Eo *eo_obj EINA_UNUSED, Efl_Canvas_Text_Data *o) +EAPI const char * +evas_object_textblock_replace_char_get(const Efl_Canvas_Text *obj) { + Efl_Canvas_Text_Data *o = eo_data_scope_get(obj, MY_CLASS); return o->repch; } diff --git a/src/lib/evas/canvas/evas_textblock_legacy.h b/src/lib/evas/canvas/evas_textblock_legacy.h index da382a5649..b8e0cf81c2 100644 --- a/src/lib/evas/canvas/evas_textblock_legacy.h +++ b/src/lib/evas/canvas/evas_textblock_legacy.h @@ -843,6 +843,54 @@ EAPI void evas_textblock_cursor_copy(const E */ EAPI Evas_Textblock_Cursor *evas_object_textblock_cursor_new(const Evas_Object *obj); +/** + * @brief The "replacement character" to use for the given textblock object. + * + * @param[in] ch The charset name. + * + * @ingroup Efl_Canvas_Text + */ +EAPI void evas_object_textblock_replace_char_set(Evas_Object *obj, const char *ch); + +/** + * @brief The "replacement character" to use for the given textblock object. + * + * @return The charset name. + * + * @ingroup Efl_Canvas_Text + */ +EAPI const char *evas_object_textblock_replace_char_get(const Evas_Object *obj); + +/** + * @brief The vertical alignment of text within the textblock object as a + * whole. + * + * Normally alignment is 0.0 (top of object). Values given should be between + * 0.0 and 1.0 (1.0 bottom of object, 0.5 being vertically centered etc.). + * + * @param[in] align The alignment set for the object. + * + * @since 1.1 + * + * @ingroup Efl_Canvas_Text + */ +EAPI void evas_object_textblock_valign_set(Evas_Object *obj, double align); + +/** + * @brief The vertical alignment of text within the textblock object as a + * whole. + * + * Normally alignment is 0.0 (top of object). Values given should be between + * 0.0 and 1.0 (1.0 bottom of object, 0.5 being vertically centered etc.). + * + * @return The alignment set for the object. + * + * @since 1.1 + * + * @ingroup Efl_Canvas_Text + */ +EAPI double evas_object_textblock_valign_get(const Evas_Object *obj); + EAPI int evas_textblock_cursor_text_prepend(Evas_Textblock_Cursor *cur, const char *_text); |