summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Hacohen <tom@stosb.com>2016-06-13 14:59:26 +0100
committerTom Hacohen <tom@stosb.com>2016-06-13 15:07:29 +0100
commit87b958daf326f7cf0612eaf94d1b380c89b43f35 (patch)
tree25266c315c72daa6639a1806f1a5ec90fc425572
parent0821b1d71633faabd60de51df8f2350a971a4948 (diff)
downloadefl-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.eo23
-rw-r--r--src/lib/evas/canvas/evas_object_textblock.c41
-rw-r--r--src/lib/evas/canvas/evas_textblock_legacy.h48
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);