forked from enlightenment/efl
parent
12215d740c
commit
6d5551939d
|
@ -345,6 +345,7 @@ _edje_edd_setup(void)
|
|||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "mouse_events", mouse_events, EET_T_CHAR);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "repeat_events", repeat_events, EET_T_CHAR);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "clip_to_id", clip_to_id, EET_T_INT);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "use_alternate_font_metrics", use_alternate_font_metrics, EET_T_UCHAR);
|
||||
EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_part, Edje_Part, "default_desc", default_desc, _edje_edd_edje_part_description);
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part, Edje_Part, "other_desc", other_desc, _edje_edd_edje_part_description);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.x", dragable.x, EET_T_CHAR);
|
||||
|
|
|
@ -401,6 +401,7 @@ struct _Edje_Part
|
|||
unsigned char mouse_events; /* it will affect/respond to mouse events */
|
||||
unsigned char repeat_events; /* it will repeat events to objects below */
|
||||
int clip_to_id; /* the part id to clip this one to */
|
||||
unsigned char use_alternate_font_metrics;
|
||||
Edje_Part_Description *default_desc; /* the part descriptor for default */
|
||||
Evas_List *other_desc; /* other possible descriptors */
|
||||
struct {
|
||||
|
|
|
@ -10,6 +10,31 @@
|
|||
#endif
|
||||
#include <assert.h>
|
||||
|
||||
/* returns with and height for this part.
|
||||
*
|
||||
* depending on the value of the use_alternate_font_metrics flag, it will
|
||||
* either use evas_object_geometry_get() or the _advance_get() functions.
|
||||
*
|
||||
* The latter is useful if you want to make sure that width and height
|
||||
* are the same value for the same number of characters in the text.
|
||||
* This usually only makes sense for monospaced fonts.
|
||||
*
|
||||
* In future changes to this file, you probably should use this wrapper
|
||||
* function everywhere instead of calling evas_object_geometry_get()
|
||||
* directly.
|
||||
*/
|
||||
static inline void
|
||||
part_get_geometry(Edje_Real_Part *rp, Evas_Coord *w, Evas_Coord *h)
|
||||
{
|
||||
if (!rp->part->use_alternate_font_metrics)
|
||||
evas_object_geometry_get(rp->object, NULL, NULL, w, h);
|
||||
else
|
||||
{
|
||||
if (w) *w = evas_object_text_horiz_advance_get(rp->object);
|
||||
if (h) *h = evas_object_text_vert_advance_get(rp->object);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
_edje_text_init(void)
|
||||
{
|
||||
|
@ -140,7 +165,7 @@ _edje_text_fit_x(Edje *ed, Edje_Real_Part *ep,
|
|||
evas_object_text_font_set(ep->object, font, size);
|
||||
evas_object_text_text_set(ep->object, text);
|
||||
|
||||
evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th);
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
|
||||
p = ((sw - tw) * params->text.elipsis);
|
||||
|
||||
|
@ -237,7 +262,7 @@ _edje_text_fit_x(Edje *ed, Edje_Real_Part *ep,
|
|||
_edje_text_fit_set(buf, text, c1, c2);
|
||||
|
||||
evas_object_text_text_set(ep->object, buf);
|
||||
evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th);
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
}
|
||||
|
||||
*free_text = 1;
|
||||
|
@ -352,7 +377,7 @@ _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);
|
||||
evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th);
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
if (tw > sw)
|
||||
{
|
||||
int psize;
|
||||
|
@ -367,7 +392,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
else evas_object_text_font_source_set(ep->object, NULL);
|
||||
|
||||
evas_object_text_font_set(ep->object, font, size);
|
||||
evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th);
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
if ((size > 0) && (tw == 0)) break;
|
||||
}
|
||||
}
|
||||
|
@ -385,7 +410,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
else evas_object_text_font_source_set(ep->object, NULL);
|
||||
|
||||
evas_object_text_font_set(ep->object, font, size);
|
||||
evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th);
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
if ((size > 0) && (tw == 0)) break;
|
||||
}
|
||||
}
|
||||
|
@ -403,7 +428,7 @@ _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);
|
||||
evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th);
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
|
||||
/* only grow the font size if we didn't already reach the max size
|
||||
* for the x axis
|
||||
|
@ -422,7 +447,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
else evas_object_text_font_source_set(ep->object, NULL);
|
||||
|
||||
evas_object_text_font_set(ep->object, font, size);
|
||||
evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th);
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
if ((size > 0) && (th == 0)) break;
|
||||
}
|
||||
size -= dif;
|
||||
|
@ -441,7 +466,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
else evas_object_text_font_source_set(ep->object, NULL);
|
||||
|
||||
evas_object_text_font_set(ep->object, font, size);
|
||||
evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th);
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
if ((size > 0) && (th == 0)) break;
|
||||
}
|
||||
}
|
||||
|
@ -473,7 +498,7 @@ _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);
|
||||
evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th);
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
ep->offset.x = ((sw - tw) * params->text.align.x);
|
||||
ep->offset.y = ((sh - th) * params->text.align.y);
|
||||
|
||||
|
|
Loading…
Reference in New Issue