summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHermet Park <hermetpark@gmail.com>2019-07-22 16:47:43 +0900
committerHermet Park <hermetpark@gmail.com>2019-07-22 16:47:43 +0900
commitbf7e05586f002aa66688c37eabcd3a44f847ee16 (patch)
tree730035aa8717b426d6245e5b45ddf371d4abb1de
parente97d3c08ea83b611c8b4fd06e1fe5fdd24a1dca9 (diff)
efl_ui_textpath: introduce efl_ui_textpath_circular_set() interface.
Summary: This patch revises efl_ui_textpath_circle_set() interface. Current circle_set() behavior is wrongly working, it makes object minimal size with (x * 2, y * 2). Insanely, how big size if the object is far from the screen origin. Secondly, current interface requires center position, How this center position could be guranteed if user wants to put it into a container? Third, actual textpath output could be out of the textpath boundary, since the textpath is originated to middle of text height. the display boundary can be outside of the textpath geometry by (half of text height). All in all, put altogether in fix, I confirmed there is no methods without any compatibility break. This brings elm_textpath_circular_set() api introduced. @feature Reviewers: #committers, kimcinoo, jsuya Subscribers: zmike, bu5hm4n, segfaultxavi, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D9260
-rw-r--r--src/bin/elementary/test_ui_textpath.c10
-rw-r--r--src/lib/elementary/efl_ui_textpath.c163
-rw-r--r--src/lib/elementary/efl_ui_textpath.eo7
-rw-r--r--src/lib/elementary/efl_ui_textpath_eo.legacy.c5
-rw-r--r--src/lib/elementary/efl_ui_textpath_eo.legacy.h16
5 files changed, 156 insertions, 45 deletions
diff --git a/src/bin/elementary/test_ui_textpath.c b/src/bin/elementary/test_ui_textpath.c
index e4756996f3..111ebe1af4 100644
--- a/src/bin/elementary/test_ui_textpath.c
+++ b/src/bin/elementary/test_ui_textpath.c
@@ -6,8 +6,6 @@
6#include <Efl_Ui.h> 6#include <Efl_Ui.h>
7#include <Elementary.h> 7#include <Elementary.h>
8 8
9#define CX 180
10#define CY 150
11#define CR 100 9#define CR 100
12 10
13#define TEST_UI_TEXTPATH_LONG_TEXT "This text follows the path which you defined. This is a &lt;long&gt; text designed to make it ellipsis." 11#define TEST_UI_TEXTPATH_LONG_TEXT "This text follows the path which you defined. This is a &lt;long&gt; text designed to make it ellipsis."
@@ -31,7 +29,7 @@ _direction_changed_cb(void *data, const Efl_Event *event)
31 Eina_Bool val = elm_check_selected_get(event->object); 29 Eina_Bool val = elm_check_selected_get(event->object);
32 Efl_Ui_Textpath_Direction dir = val ? EFL_UI_TEXTPATH_DIRECTION_CW : 30 Efl_Ui_Textpath_Direction dir = val ? EFL_UI_TEXTPATH_DIRECTION_CW :
33 EFL_UI_TEXTPATH_DIRECTION_CCW; 31 EFL_UI_TEXTPATH_DIRECTION_CCW;
34 efl_ui_textpath_circle_set(txtpath, CX, CY, CR, angle, dir); 32 efl_ui_textpath_circular_set(txtpath, CR, angle, dir);
35} 33}
36 34
37static void 35static void
@@ -43,7 +41,7 @@ _angle_changed_cb(void *data, const Efl_Event *event)
43 Eina_Bool val = elm_check_selected_get(dir_chk); 41 Eina_Bool val = elm_check_selected_get(dir_chk);
44 Efl_Ui_Textpath_Direction dir = val ? EFL_UI_TEXTPATH_DIRECTION_CW : 42 Efl_Ui_Textpath_Direction dir = val ? EFL_UI_TEXTPATH_DIRECTION_CW :
45 EFL_UI_TEXTPATH_DIRECTION_CCW; 43 EFL_UI_TEXTPATH_DIRECTION_CCW;
46 efl_ui_textpath_circle_set(txtpath, CX, CY, CR, angle, dir); 44 efl_ui_textpath_circular_set(txtpath, CR, angle, dir);
47} 45}
48 46
49static void 47static void
@@ -76,7 +74,7 @@ _change_shape_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA
76 Eina_Bool val = elm_check_selected_get(dir_chk); 74 Eina_Bool val = elm_check_selected_get(dir_chk);
77 Efl_Ui_Textpath_Direction dir = val ? EFL_UI_TEXTPATH_DIRECTION_CW : 75 Efl_Ui_Textpath_Direction dir = val ? EFL_UI_TEXTPATH_DIRECTION_CW :
78 EFL_UI_TEXTPATH_DIRECTION_CCW; 76 EFL_UI_TEXTPATH_DIRECTION_CCW;
79 efl_ui_textpath_circle_set(txtpath, CX, CY, CR, angle, dir); 77 efl_ui_textpath_circular_set(txtpath, CR, angle, dir);
80 } 78 }
81} 79}
82 80
@@ -109,7 +107,7 @@ test_ui_textpath(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
109 107
110 efl_text_set(txtpath, TEST_UI_TEXTPATH_LONG_TEXT); 108 efl_text_set(txtpath, TEST_UI_TEXTPATH_LONG_TEXT);
111 109
112 efl_ui_textpath_circle_set(txtpath, CX, CY, CR, 0, EFL_UI_TEXTPATH_DIRECTION_CCW); 110 efl_ui_textpath_circular_set(txtpath, CR, 0, EFL_UI_TEXTPATH_DIRECTION_CCW);
113 efl_gfx_entity_visible_set(txtpath, EINA_TRUE); 111 efl_gfx_entity_visible_set(txtpath, EINA_TRUE);
114 path_type = 0; 112 path_type = 0;
115 113
diff --git a/src/lib/elementary/efl_ui_textpath.c b/src/lib/elementary/efl_ui_textpath.c
index c25410e1fc..aa89865a42 100644
--- a/src/lib/elementary/efl_ui_textpath.c
+++ b/src/lib/elementary/efl_ui_textpath.c
@@ -70,6 +70,7 @@ struct _Efl_Ui_Textpath_Data
70#ifdef EFL_UI_TEXTPATH_LINE_DEBUG 70#ifdef EFL_UI_TEXTPATH_LINE_DEBUG
71 Eina_List *lines; 71 Eina_List *lines;
72#endif 72#endif
73 Eina_Bool circular : 1; //TODO: Remove this flag when elm_textpath_circle_set() is removed.
73}; 74};
74 75
75#define EFL_UI_TEXTPATH_DATA_GET(o, sd) \ 76#define EFL_UI_TEXTPATH_DATA_GET(o, sd) \
@@ -407,7 +408,7 @@ _path_data_get(Eo *obj, Efl_Ui_Textpath_Data *pd)
407 const Efl_Gfx_Path_Command_Type *cmd; 408 const Efl_Gfx_Path_Command_Type *cmd;
408 const double *points; 409 const double *points;
409 Efl_Ui_Textpath_Segment *seg; 410 Efl_Ui_Textpath_Segment *seg;
410 Eina_Position2D opos; 411 Eina_Position2D obj_pos;
411 412
412 EINA_INLIST_FREE(pd->segments, seg) 413 EINA_INLIST_FREE(pd->segments, seg)
413 { 414 {
@@ -415,7 +416,16 @@ _path_data_get(Eo *obj, Efl_Ui_Textpath_Data *pd)
415 free(seg); 416 free(seg);
416 } 417 }
417 418
418 opos = efl_gfx_entity_position_get(obj); 419 obj_pos = efl_gfx_entity_position_get(obj);
420
421 /* textpath calculates boundary with the middle of text height.
422 this has better precise boundary than circle_set() behavior. */
423 if (pd->circular)
424 {
425 Eina_Size2D text_size = efl_gfx_entity_size_get(pd->text_obj);
426 obj_pos.x += (text_size.h / 2);
427 obj_pos.y += (text_size.h / 2);
428 }
419 429
420 pd->total_length = 0; 430 pd->total_length = 0;
421 efl_gfx_path_get(obj, &cmd, &points); 431 efl_gfx_path_get(obj, &cmd, &points);
@@ -430,9 +440,9 @@ _path_data_get(Eo *obj, Efl_Ui_Textpath_Data *pd)
430 if (*cmd == EFL_GFX_PATH_COMMAND_TYPE_MOVE_TO) 440 if (*cmd == EFL_GFX_PATH_COMMAND_TYPE_MOVE_TO)
431 { 441 {
432 pos++; 442 pos++;
433 px0 = points[pos] + opos.x; 443 px0 = points[pos] + obj_pos.x;
434 pos++; 444 pos++;
435 py0 = points[pos] + opos.y; 445 py0 = points[pos] + obj_pos.y;
436 } 446 }
437 else if (*cmd == EFL_GFX_PATH_COMMAND_TYPE_CUBIC_TO) 447 else if (*cmd == EFL_GFX_PATH_COMMAND_TYPE_CUBIC_TO)
438 { 448 {
@@ -441,17 +451,17 @@ _path_data_get(Eo *obj, Efl_Ui_Textpath_Data *pd)
441 Eina_Rect brect; 451 Eina_Rect brect;
442 452
443 pos++; 453 pos++;
444 ctrl_x0 = points[pos] + opos.x; 454 ctrl_x0 = points[pos] + obj_pos.x;
445 pos++; 455 pos++;
446 ctrl_y0 = points[pos] + opos.y; 456 ctrl_y0 = points[pos] + obj_pos.y;
447 pos++; 457 pos++;
448 ctrl_x1 = points[pos] + opos.x; 458 ctrl_x1 = points[pos] + obj_pos.x;
449 pos++; 459 pos++;
450 ctrl_y1 = points[pos] + opos.y; 460 ctrl_y1 = points[pos] + obj_pos.y;
451 pos++; 461 pos++;
452 px1 = points[pos] + opos.x; 462 px1 = points[pos] + obj_pos.x;
453 pos++; 463 pos++;
454 py1 = points[pos] + opos.y; 464 py1 = points[pos] + obj_pos.y;
455 465
456 eina_bezier_values_set(&bz, px0, py0, ctrl_x0, ctrl_y0, ctrl_x1, ctrl_y1, px1, py1); 466 eina_bezier_values_set(&bz, px0, py0, ctrl_x0, ctrl_y0, ctrl_x1, ctrl_y1, px1, py1);
457 seg = malloc(sizeof(Efl_Ui_Textpath_Segment)); 467 seg = malloc(sizeof(Efl_Ui_Textpath_Segment));
@@ -481,9 +491,9 @@ _path_data_get(Eo *obj, Efl_Ui_Textpath_Data *pd)
481 Eina_Rect lrect; 491 Eina_Rect lrect;
482 492
483 pos++; 493 pos++;
484 px1 = points[pos] + opos.x; 494 px1 = points[pos] + obj_pos.x;
485 pos++; 495 pos++;
486 py1 = points[pos] + opos.y; 496 py1 = points[pos] + obj_pos.y;
487 497
488 seg = malloc(sizeof(Efl_Ui_Textpath_Segment)); 498 seg = malloc(sizeof(Efl_Ui_Textpath_Segment));
489 if (!seg) 499 if (!seg)
@@ -612,6 +622,7 @@ _path_start_angle_adjust(Eo *obj, Efl_Ui_Textpath_Data *pd)
612 offset_angle /= 2.0; 622 offset_angle /= 2.0;
613 623
614 efl_gfx_path_reset(obj); 624 efl_gfx_path_reset(obj);
625
615 if (pd->direction == EFL_UI_TEXTPATH_DIRECTION_CW_CENTER) 626 if (pd->direction == EFL_UI_TEXTPATH_DIRECTION_CW_CENTER)
616 { 627 {
617 efl_gfx_path_append_arc(obj, 628 efl_gfx_path_append_arc(obj,
@@ -753,21 +764,22 @@ _efl_ui_textpath_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Textpath_Data *pd)
753EOLIAN static void 764EOLIAN static void
754_efl_ui_textpath_efl_gfx_entity_position_set(Eo *obj, Efl_Ui_Textpath_Data *pd, Eina_Position2D pos) 765_efl_ui_textpath_efl_gfx_entity_position_set(Eo *obj, Efl_Ui_Textpath_Data *pd, Eina_Position2D pos)
755{ 766{
756 Eina_Position2D opos, diff; 767 Eina_Position2D ppos, diff;
757 Efl_Ui_Textpath_Segment *seg; 768 Efl_Ui_Textpath_Segment *seg;
758 double sx, sy, csx, csy, cex, cey, ex, ey; 769 double sx, sy, csx, csy, cex, cey, ex, ey;
759 770
760 opos = efl_gfx_entity_position_get(obj); 771 ppos = efl_gfx_entity_position_get(obj);
772 efl_gfx_entity_position_set(efl_super(obj, MY_CLASS), pos);
761 773
762 diff.x = pos.x - opos.x; 774 if (ppos.x == pos.x && ppos.y == pos.y) return;
763 diff.y = pos.y - opos.y;
764 775
765 efl_gfx_entity_position_set(efl_super(obj, MY_CLASS), pos); 776 diff.x = pos.x - ppos.x;
777 diff.y = pos.y - ppos.y;
766 778
767 EINA_INLIST_FOREACH(pd->segments, seg) 779 EINA_INLIST_FOREACH(pd->segments, seg)
768 { 780 {
769 eina_bezier_values_get(&seg->bezier, &sx, &sy, &csx, &csy, 781 eina_bezier_values_get(&seg->bezier, &sx, &sy, &csx, &csy,
770 &cex, &cey, &ex, &ey); 782 &cex, &cey, &ex, &ey);
771 sx += diff.x; 783 sx += diff.x;
772 sy += diff.y; 784 sy += diff.y;
773 csx += diff.x; 785 csx += diff.x;
@@ -778,53 +790,99 @@ _efl_ui_textpath_efl_gfx_entity_position_set(Eo *obj, Efl_Ui_Textpath_Data *pd,
778 ey += diff.y; 790 ey += diff.y;
779 791
780 eina_bezier_values_set(&seg->bezier, sx, sy, csx, csy, 792 eina_bezier_values_set(&seg->bezier, sx, sy, csx, csy,
781 cex, cey, ex, ey); 793 cex, cey, ex, ey);
782 } 794 }
783 795
784 _text_draw(pd); 796 _text_draw(pd);
785} 797}
786 798
787EOLIAN static void 799EOLIAN static void
788_efl_ui_textpath_efl_gfx_entity_size_set(Eo *obj, Efl_Ui_Textpath_Data *pd EINA_UNUSED, Eina_Size2D sz) 800_efl_ui_textpath_efl_gfx_entity_size_set(Eo *obj, Efl_Ui_Textpath_Data *pd EINA_UNUSED, Eina_Size2D size)
789{ 801{
790 Eina_Size2D psize = efl_gfx_entity_size_get(obj); 802 Eina_Size2D psize, diff;
791 efl_gfx_entity_size_set(efl_super(obj, MY_CLASS), sz); 803 Efl_Ui_Textpath_Segment *seg;
792 if (psize.w != sz.w || psize.h != sz.h) _text_draw(pd); 804 double sx, sy, csx, csy, cex, cey, ex, ey;
805
806 psize = efl_gfx_entity_size_get(obj);
807 efl_gfx_entity_size_set(efl_super(obj, MY_CLASS), size);
808
809 if (psize.w == size.w && psize.h == size.h) return;
810
811 //TODO: Remove this condition if circle_set() is removed
812 if (pd->circle.radius > 0 && !pd->circular) return;
813
814 diff.w = (size.w - psize.w) * 0.5;
815 diff.h = (size.h - psize.h) * 0.5;
816
817 EINA_INLIST_FOREACH(pd->segments, seg)
818 {
819 eina_bezier_values_get(&seg->bezier, &sx, &sy, &csx, &csy,
820 &cex, &cey, &ex, &ey);
821 sx += diff.w;
822 sy += diff.h;
823 csx += diff.w;
824 csy += diff.h;
825 cex += diff.w;
826 cey += diff.h;
827 ex += diff.w;
828 ey += diff.h;
829
830 eina_bezier_values_set(&seg->bezier, sx, sy, csx, csy,
831 cex, cey, ex, ey);
832 }
833
834 _text_draw(pd);
793} 835}
794 836
795EOLIAN static void 837EOLIAN static void
796_efl_ui_textpath_circle_set(Eo *obj, Efl_Ui_Textpath_Data *pd, double x, double y, double radius, double start_angle, Efl_Ui_Textpath_Direction direction) 838_efl_ui_textpath_circular_set(Eo *obj, Efl_Ui_Textpath_Data *pd, double radius, double start_angle, Efl_Ui_Textpath_Direction direction)
797{ 839{
798 double sweep_length; 840 Eina_Size2D text_size;
841 double sweep_length, x, y;
799 842
800 if (pd->circle.x == x && pd->circle.y == y && 843 if (pd->circle.radius == radius &&
801 pd->circle.radius == radius &&
802 pd->circle.start_angle == start_angle && 844 pd->circle.start_angle == start_angle &&
803 pd->direction == direction && 845 pd->direction == direction &&
804 _map_point_calc(pd) > 0) 846 _map_point_calc(pd) > 0)
805 return; 847 return;
806 pd->circle.x = x; 848
807 pd->circle.y = y; 849 Eina_Size2D obj_size = efl_gfx_entity_size_get(obj);
850
851 //textpath min size is same to circle bounadary */
852 text_size = efl_gfx_entity_size_get(pd->text_obj);
853
854 x = (obj_size.w - text_size.h - (2 * radius)) * 0.5;
855 y = (obj_size.h - text_size.h - (2 * radius)) * 0.5;
856
857 /* User leaves center position to textpath itself.
858 Now textpath automatically updates circle text according to
859 object position. */
860 pd->circle.x = radius + x;
861 pd->circle.y = radius + y;
808 pd->circle.radius = radius; 862 pd->circle.radius = radius;
809 pd->circle.start_angle = start_angle; 863 pd->circle.start_angle = start_angle;
810 pd->direction = direction; 864 pd->direction = direction;
865 pd->circular = EINA_TRUE;
811 866
812 efl_gfx_path_reset(obj); 867 efl_gfx_path_reset(obj);
813 868
814 if (direction == EFL_UI_TEXTPATH_DIRECTION_CW || 869 if (direction == EFL_UI_TEXTPATH_DIRECTION_CW ||
815 direction == EFL_UI_TEXTPATH_DIRECTION_CW_CENTER) 870 direction == EFL_UI_TEXTPATH_DIRECTION_CW_CENTER)
816 sweep_length = -360;
817 else
818 sweep_length = 360; 871 sweep_length = 360;
872 else
873 sweep_length = -360;
819 874
820 efl_gfx_path_append_arc(obj, x - radius, y - radius, radius * 2, 875 efl_gfx_path_append_arc(obj,
876 pd->circle.x - pd->circle.radius,
877 pd->circle.y - pd->circle.radius,
878 radius * 2,
821 radius * 2, start_angle, sweep_length); 879 radius * 2, start_angle, sweep_length);
822 880
823 _path_data_get(obj, pd); 881 _path_data_get(obj, pd);
824 _path_start_angle_adjust(obj, pd); 882 _path_start_angle_adjust(obj, pd);
825 _sizing_eval(pd); 883 _sizing_eval(pd);
826 884
827 efl_gfx_hint_size_min_set(obj, EINA_SIZE2D(x * 2, y * 2)); 885 efl_gfx_hint_size_min_set(obj, EINA_SIZE2D((radius * 2) + text_size.h, (radius * 2) + text_size.h));
828} 886}
829 887
830EOLIAN static int 888EOLIAN static int
@@ -907,5 +965,44 @@ elm_textpath_add(Evas_Object *parent)
907 return elm_legacy_add(EFL_UI_TEXTPATH_LEGACY_CLASS, parent); 965 return elm_legacy_add(EFL_UI_TEXTPATH_LEGACY_CLASS, parent);
908} 966}
909 967
968EAPI void
969elm_textpath_circle_set(Eo *obj, double x, double y, double radius, double start_angle, Efl_Ui_Textpath_Direction direction)
970{
971 double sweep_length;
972
973 EFL_UI_TEXTPATH_DATA_GET(obj, pd);
974
975 if (pd->circle.x == x && pd->circle.y == y &&
976 pd->circle.radius == radius &&
977 pd->circle.start_angle == start_angle &&
978 pd->direction == direction &&
979 _map_point_calc(pd) > 0)
980 return;
981
982 pd->circle.x = x;
983 pd->circle.y = y;
984 pd->circle.radius = radius;
985 pd->circle.start_angle = start_angle;
986 pd->direction = direction;
987 pd->circular = EINA_FALSE;
988
989 efl_gfx_path_reset(obj);
990
991 if (direction == EFL_UI_TEXTPATH_DIRECTION_CW ||
992 direction == EFL_UI_TEXTPATH_DIRECTION_CW_CENTER)
993 sweep_length = - 360;
994 else
995 sweep_length = 360;
996
997 efl_gfx_path_append_arc(obj, x - radius, y - radius, radius * 2,
998 radius * 2, start_angle, sweep_length);
999
1000 _path_data_get(obj, pd);
1001 _path_start_angle_adjust(obj, pd);
1002 _sizing_eval(pd);
1003
1004 efl_gfx_hint_size_min_set(obj, EINA_SIZE2D(x * 2, y * 2));
1005}
1006
910#include "efl_ui_textpath_legacy_eo.c" 1007#include "efl_ui_textpath_legacy_eo.c"
911 1008
diff --git a/src/lib/elementary/efl_ui_textpath.eo b/src/lib/elementary/efl_ui_textpath.eo
index 4a56b490a3..7d834a8d0a 100644
--- a/src/lib/elementary/efl_ui_textpath.eo
+++ b/src/lib/elementary/efl_ui_textpath.eo
@@ -10,11 +10,10 @@ class @beta Efl.Ui.Textpath extends Efl.Ui.Layout_Base implements Efl.Text, Efl.
10{ 10{
11 [[Efl Ui Textpath class]] 11 [[Efl Ui Textpath class]]
12 methods { 12 methods {
13 circle_set { 13 circular_set {
14 [[Set a circle with given center, radius, and start angle.]] 14 [[Set a circle with given radius and start angle.
15 The center of the circle will be decided by the object center position.]]
15 params { 16 params {
16 @in x: double; [[X coordinate of center]]
17 @in y: double; [[Y coordinate of center]]
18 @in radius: double; [[Radius of the circle]] 17 @in radius: double; [[Radius of the circle]]
19 @in start_angle: double; [[Start angle of the circle]] 18 @in start_angle: double; [[Start angle of the circle]]
20 @in direction: Efl.Ui.Textpath_Direction; [[Textpath direction]] 19 @in direction: Efl.Ui.Textpath_Direction; [[Textpath direction]]
diff --git a/src/lib/elementary/efl_ui_textpath_eo.legacy.c b/src/lib/elementary/efl_ui_textpath_eo.legacy.c
index e810a856dd..1af5fdb1f8 100644
--- a/src/lib/elementary/efl_ui_textpath_eo.legacy.c
+++ b/src/lib/elementary/efl_ui_textpath_eo.legacy.c
@@ -1,8 +1,8 @@
1 1
2EAPI void 2EAPI void
3elm_textpath_circle_set(Efl_Ui_Textpath *obj, double x, double y, double radius, double start_angle, Efl_Ui_Textpath_Direction direction) 3elm_textpath_circular_set(Efl_Ui_Textpath *obj, double radius, double start_angle, Efl_Ui_Textpath_Direction direction)
4{ 4{
5 efl_ui_textpath_circle_set(obj, x, y, radius, start_angle, direction); 5 efl_ui_textpath_circular_set(obj, radius, start_angle, direction);
6} 6}
7 7
8EAPI void 8EAPI void
@@ -23,6 +23,7 @@ elm_textpath_ellipsis_set(Efl_Ui_Textpath *obj, Eina_Bool ellipsis)
23 efl_ui_textpath_ellipsis_set(obj, ellipsis); 23 efl_ui_textpath_ellipsis_set(obj, ellipsis);
24} 24}
25 25
26
26EAPI Eina_Bool 27EAPI Eina_Bool
27elm_textpath_ellipsis_get(const Efl_Ui_Textpath *obj) 28elm_textpath_ellipsis_get(const Efl_Ui_Textpath *obj)
28{ 29{
diff --git a/src/lib/elementary/efl_ui_textpath_eo.legacy.h b/src/lib/elementary/efl_ui_textpath_eo.legacy.h
index 5fe981a2d8..65e8768c12 100644
--- a/src/lib/elementary/efl_ui_textpath_eo.legacy.h
+++ b/src/lib/elementary/efl_ui_textpath_eo.legacy.h
@@ -36,11 +36,27 @@ typedef enum
36 * @param[in] start_angle Start angle of the circle 36 * @param[in] start_angle Start angle of the circle
37 * @param[in] direction Textpath direction 37 * @param[in] direction Textpath direction
38 * 38 *
39 * @see elm_textpath_circluar_set()
40 *
39 * @ingroup Elm_Textpath_Group 41 * @ingroup Elm_Textpath_Group
40 */ 42 */
41EAPI void elm_textpath_circle_set(Efl_Ui_Textpath *obj, double x, double y, double radius, double start_angle, Efl_Ui_Textpath_Direction direction); 43EAPI void elm_textpath_circle_set(Efl_Ui_Textpath *obj, double x, double y, double radius, double start_angle, Efl_Ui_Textpath_Direction direction);
42 44
43/** 45/**
46 * @brief Set a circle with given radius, and start angle.
47 * The circle center will be decided by the object center position.
48 *
49 * @param[in] obj The object.
50 * @param[in] radius Radius of the circle
51 * @param[in] start_angle Start angle of the circle
52 * @param[in] direction Textpath direction
53 *
54 * @since 1.23
55 * @ingroup Elm_Textpath_Group
56 */
57EAPI void elm_textpath_circular_set(Efl_Ui_Textpath *obj, double radius, double start_angle, Efl_Ui_Textpath_Direction direction);
58
59/**
44 * @brief The number of slices. The larger the number of slice_num is, The 60 * @brief The number of slices. The larger the number of slice_num is, The
45 * better the text follows the path. 61 * better the text follows the path.
46 * 62 *