Edje text: Added support for auto-alignment. Text alignment with x=-1.0 means auto.
authortasn <tasn>
Sun, 30 Jan 2011 10:46:39 +0000 (10:46 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 30 Jan 2011 10:46:39 +0000 (10:46 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/edje@56548 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/bin/edje_cc_handlers.c
src/lib/edje_text.c

index ec2ab2e..45a22f6 100644 (file)
@@ -5467,7 +5467,7 @@ st_collections_group_parts_part_description_text_align(void)
    ed = (Edje_Part_Description_Text*) ep->default_desc;
    if (ep->other.desc_count) ed = (Edje_Part_Description_Text*)  ep->other.desc[ep->other.desc_count - 1];
 
-   ed->text.align.x = FROM_DOUBLE(parse_float_range(0, 0.0, 1.0));
+   ed->text.align.x = FROM_DOUBLE(parse_float_range(0, -1.0, 1.0));
    ed->text.align.y = FROM_DOUBLE(parse_float_range(1, 0.0, 1.0));
 }
 
index 25882e5..fe58927 100644 (file)
@@ -573,8 +573,28 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
    evas_object_text_font_set(ep->object, font, size);
    evas_object_text_text_set(ep->object, text);
    part_get_geometry(ep, &tw, &th);
-   ep->text.offset.x = TO_INT(SCALE(params->type.text.align.x, (sw - tw)));
-   ep->text.offset.y = TO_INT(SCALE(params->type.text.align.y, (sh - th)));
+   /* Handle alignment */
+     {
+        double align_x;
+        if (params->type.text.align.x < 0.0)
+          {
+             if (evas_object_text_direction_get(ep->object) ==
+                   EVAS_BIDI_DIRECTION_RTL)
+               {
+                  align_x = 1.0;
+               }
+             else
+               {
+                  align_x = 0.0;
+               }
+          }
+        else
+          {
+             align_x = params->type.text.align.x;
+          }
+        ep->text.offset.x = TO_INT(SCALE(align_x, (sw - tw)));
+        ep->text.offset.y = TO_INT(SCALE(params->type.text.align.y, (sh - th)));
+     }
 
    evas_object_move(ep->object,
                    ed->x + params->x + ep->text.offset.x,