Text: add markup_range_get

This allows to retrieve the markup representation of the current text.

@feature
This commit is contained in:
Daniel Hirt 2018-09-12 21:17:53 +03:00
parent 86a8f832ae
commit 9903e7d556
4 changed files with 53 additions and 0 deletions

View File

@ -10,6 +10,17 @@ interface Efl.Text_Markup(Efl.Text_Cursor) {
markup: string; [[The markup-text representation set to this text.]]
}
}
@property markup_range {
[[Markup of a given range in the text]]
values {
markup: mstring @owned; [[The markup-text representation set to
this text of a given range]]
}
keys {
start: ptr(Efl.Text_Cursor_Cursor);
end: ptr(Efl.Text_Cursor_Cursor);
}
}
cursor_markup_insert {
[[Inserts a markup text to the text object in a given cursor position]]
params {

View File

@ -355,6 +355,7 @@ class Efl.Canvas.Text (Efl.Canvas.Object, Efl.Text,
Efl.Text_Annotate.cursor_item_insert;
Efl.Text_Markup.markup { set; get; }
Efl.Text_Markup.cursor_markup_insert;
Efl.Text_Markup.markup_range { get;}
Efl.Gfx.Entity.scale { set; }
}
events {

View File

@ -11418,6 +11418,17 @@ _evas_textblock_cursor_range_text_markup_get(const Efl_Text_Cursor_Cursor *cur1,
}
}
EOLIAN char *
_efl_canvas_text_efl_text_markup_markup_range_get(const Eo *eo_obj,
Efl_Canvas_Text_Data *o EINA_UNUSED, Efl_Text_Cursor_Cursor *start,
Efl_Text_Cursor_Cursor *end)
{
if (!start || !start->node) return NULL;
if (!end || !end->node) return NULL;
if ((start->obj != eo_obj) || (start->obj != end->obj)) return NULL;
return _evas_textblock_cursor_range_text_markup_get(start, end);
}
static char *
_evas_textblock_cursor_range_text_plain_get(const Efl_Text_Cursor_Cursor *cur1, const Efl_Text_Cursor_Cursor *_cur2)
{

View File

@ -4612,6 +4612,35 @@ EFL_START_TEST(efl_canvas_text_cursor)
}
EFL_END_TEST
EFL_START_TEST(efl_canvas_text_markup)
{
START_EFL_CANVAS_TEXT_TEST();
Efl_Text_Cursor_Cursor *start, *end;
char *res;
start = efl_text_cursor_new(txt);
end = efl_text_cursor_new(txt);
efl_text_set(txt, "\n\n\n");
efl_text_cursor_position_set(txt, start, 1);
efl_text_cursor_position_set(txt, end, 2);
res = efl_text_markup_range_get(txt, start, end);
ck_assert_str_eq(res, "<br>");
free(res);
efl_text_set(txt, "a\u2029bc\ndef\n\u2029");
efl_text_cursor_position_set(txt, start, 2);
efl_text_cursor_position_set(txt, end, 5);
res = efl_text_markup_range_get(txt, start, end);
ck_assert_str_eq(res, "bc<br>");
free(res);
END_EFL_CANVAS_TEXT_TEST();
}
EFL_END_TEST
void evas_test_textblock(TCase *tc)
{
tcase_add_test(tc, evas_textblock_simple);
@ -4643,5 +4672,6 @@ void evas_test_textblock(TCase *tc)
tcase_add_test(tc, efl_canvas_text_simple);
tcase_add_test(tc, efl_text);
tcase_add_test(tc, efl_canvas_text_cursor);
tcase_add_test(tc, efl_canvas_text_markup);
}