diff options
Diffstat (limited to 'src/lib/evas/canvas/evas_object_textblock.c')
-rw-r--r-- | src/lib/evas/canvas/evas_object_textblock.c | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 4a8591ba03..86bc51acb7 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -618,6 +618,7 @@ struct _Evas_Object_Textblock unsigned int font_slant; unsigned int font_width; Efl_Text_Style_Shadow_Direction shadow_direction; + Efl_Text_Format_Wrap wrap; } info; } default_format; double valign; @@ -15191,6 +15192,7 @@ _efl_canvas_text_efl_text_font_font_width_get(Eo *obj EINA_UNUSED, Efl_Canvas_Te /* Efl.Text.Style interface implementation */ +/* Helper: sets color fields of style 'x' and informs if any are changed. */ #define _FMT_COLOR_SET(x) \ if ((_FMT(color.x).r == r) && (_FMT(color.x).g == g) \ && (_FMT(color.x).b == b) && (_FMT(color.x).a == a)) return; \ @@ -15200,17 +15202,20 @@ _efl_canvas_text_efl_text_font_font_width_get(Eo *obj EINA_UNUSED, Efl_Canvas_Te _FMT(color.x).a = a; \ _canvas_text_format_changed(obj, o); +/* Helper: returns color fields of style 'x'. */ #define _FMT_COLOR_RET(x) \ if (r) *r = _FMT(color.x).r; \ if (g) *g = _FMT(color.x).g; \ if (b) *b = _FMT(color.x).b; \ if (a) *a = _FMT(color.x).a; +/* Helper: updates format field, and informs if changed. */ #define _FMT_SET(x, v) \ if (_FMT(x) == v) return; \ _FMT(x) = v; \ _canvas_text_format_changed(obj, o); +/* Helper: updates format field of extended format information, and informs if changed. */ #define _FMT_INFO_SET(x, v) \ if (_FMT_INFO(x) == v) return; \ _FMT_INFO(x) = v; \ @@ -15468,6 +15473,197 @@ _efl_canvas_text_efl_text_style_strikethrough_color_get(Eo *obj EINA_UNUSED, Efl _FMT_COLOR_RET(strikethrough); } +static void +_efl_canvas_text_efl_text_format_format_ellipsis_set(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, double value EINA_UNUSED) +{ + _FMT_SET(ellipsis, value); +} + + +static double +_efl_canvas_text_efl_text_format_format_ellipsis_get(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED) +{ + return _FMT(ellipsis); +} + + +static void +_efl_canvas_text_efl_text_format_format_wrap_set(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Text_Format_Wrap wrap EINA_UNUSED) +{ + if (_FMT_INFO(wrap) == wrap) _FMT_INFO(wrap) = wrap; + + _FMT(wrap_word) = (wrap == EFL_TEXT_FORMAT_WRAP_WORD); + _FMT(wrap_char) = (wrap == EFL_TEXT_FORMAT_WRAP_CHAR); + _FMT(wrap_mixed) = (wrap == EFL_TEXT_FORMAT_WRAP_MIXED); + _FMT(wrap_hyphenation) = (wrap == EFL_TEXT_FORMAT_WRAP_HYPHENATION); + _canvas_text_format_changed(obj, o); +} + + +static Efl_Text_Format_Wrap +_efl_canvas_text_efl_text_format_format_wrap_get(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED) +{ + return _FMT_INFO(wrap); +} + + +static void +_efl_canvas_text_efl_text_format_format_multiline_set(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Eina_Bool enabled EINA_UNUSED) +{ + if (o->multiline == enabled) return; + o->multiline = enabled; + _canvas_text_format_changed(obj, o); +} + + +static Eina_Bool +_efl_canvas_text_efl_text_format_format_multiline_get(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED) +{ + return o->multiline; +} + + +static void +_efl_canvas_text_efl_text_format_format_halign_set(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, double value EINA_UNUSED) +{ + if (value < 0.0) + { + _FMT_SET(halign_auto, EINA_TRUE); + } + else + { + _FMT_SET(halign, value); + _FMT(halign_auto) = EINA_FALSE; + } +} + + +static double +_efl_canvas_text_efl_text_format_format_halign_get(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED) +{ + return (_FMT(halign_auto) ? -1.0 : _FMT(halign)); +} + + +static void +_efl_canvas_text_efl_text_format_format_valign_set(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, double value EINA_UNUSED) +{ + _FMT_SET(valign, value); +} + + +static double +_efl_canvas_text_efl_text_format_format_valign_get(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED) +{ + return _FMT(valign); +} + + +static void +_efl_canvas_text_efl_text_format_format_linegap_set(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, double value EINA_UNUSED) +{ + double linerelgap = _FMT(linerelgap); + _FMT(linerelgap) = 0.0; + + if (EINA_DBL_EQ(linerelgap, 0.0)) + { + _FMT_SET(linegap, value); + } + else + { + _FMT(linegap) = value; + _FMT(linerelgap) = 0.0; + _canvas_text_format_changed(obj, o); + } +} + + +static double +_efl_canvas_text_efl_text_format_format_linegap_get(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED) +{ + return _FMT(linegap); +} + + +static void +_efl_canvas_text_efl_text_format_format_linerelgap_set(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, double value EINA_UNUSED) +{ + double linegap = _FMT(linegap); + _FMT(linegap) = 0.0; + + if (EINA_DBL_EQ(linegap, 0.0)) + { + _FMT_SET(linerelgap, value); + } + else + { + _FMT(linerelgap) = value; + _canvas_text_format_changed(obj, o); + } +} + + +static double +_efl_canvas_text_efl_text_format_format_linerelgap_get(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED) +{ + return _FMT(linerelgap); +} + + +static void +_efl_canvas_text_efl_text_format_format_tabstops_set(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, int value EINA_UNUSED) +{ + _FMT_SET(tabstops, value); +} + + +static int +_efl_canvas_text_efl_text_format_format_tabstops_get(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED) +{ + return _FMT(tabstops); +} + + +static void +_efl_canvas_text_efl_text_format_format_password_set(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, Eina_Bool enabled EINA_UNUSED) +{ + _FMT_SET(password, enabled); +} + + +static Eina_Bool +_efl_canvas_text_efl_text_format_format_password_get(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED) +{ + return _FMT(password); +} + +static void +_efl_canvas_text_efl_text_format_format_replacement_char_set(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED, const char *repch EINA_UNUSED) +{ + Eina_Stringshare *nrepch; + if (o->repch != repch) + { + nrepch = eina_stringshare_add(repch); + if (nrepch == _FMT_INFO(font_fallbacks)) + { + /* Already stringshared here, unref */ + eina_stringshare_del(nrepch); + } + else + { + // Set immediately, load repch later + o->repch = nrepch; + _canvas_text_format_changed(obj, o); + } + } +} + +static const char * +_efl_canvas_text_efl_text_format_format_replacement_char_get(Eo *obj EINA_UNUSED, Efl_Canvas_Text_Data *o EINA_UNUSED) +{ + return o->repch; +} + /** * @} */ |