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, "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, "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, "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_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_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);
|
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 mouse_events; /* it will affect/respond to mouse events */
|
||||||
unsigned char repeat_events; /* it will repeat events to objects below */
|
unsigned char repeat_events; /* it will repeat events to objects below */
|
||||||
int clip_to_id; /* the part id to clip this one to */
|
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 */
|
Edje_Part_Description *default_desc; /* the part descriptor for default */
|
||||||
Evas_List *other_desc; /* other possible descriptors */
|
Evas_List *other_desc; /* other possible descriptors */
|
||||||
struct {
|
struct {
|
||||||
|
|
|
@ -10,6 +10,31 @@
|
||||||
#endif
|
#endif
|
||||||
#include <assert.h>
|
#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
|
void
|
||||||
_edje_text_init(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_font_set(ep->object, font, size);
|
||||||
evas_object_text_text_set(ep->object, text);
|
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);
|
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);
|
_edje_text_fit_set(buf, text, c1, c2);
|
||||||
|
|
||||||
evas_object_text_text_set(ep->object, buf);
|
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;
|
*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_font_set(ep->object, font, size);
|
||||||
evas_object_text_text_set(ep->object, text);
|
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)
|
if (tw > sw)
|
||||||
{
|
{
|
||||||
int psize;
|
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);
|
else evas_object_text_font_source_set(ep->object, NULL);
|
||||||
|
|
||||||
evas_object_text_font_set(ep->object, font, size);
|
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;
|
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);
|
else evas_object_text_font_source_set(ep->object, NULL);
|
||||||
|
|
||||||
evas_object_text_font_set(ep->object, font, size);
|
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;
|
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_font_set(ep->object, font, size);
|
||||||
evas_object_text_text_set(ep->object, text);
|
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
|
/* only grow the font size if we didn't already reach the max size
|
||||||
* for the x axis
|
* 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);
|
else evas_object_text_font_source_set(ep->object, NULL);
|
||||||
|
|
||||||
evas_object_text_font_set(ep->object, font, size);
|
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;
|
if ((size > 0) && (th == 0)) break;
|
||||||
}
|
}
|
||||||
size -= dif;
|
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);
|
else evas_object_text_font_source_set(ep->object, NULL);
|
||||||
|
|
||||||
evas_object_text_font_set(ep->object, font, size);
|
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;
|
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_font_set(ep->object, font, size);
|
||||||
evas_object_text_text_set(ep->object, text);
|
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.x = ((sw - tw) * params->text.align.x);
|
||||||
ep->offset.y = ((sh - th) * params->text.align.y);
|
ep->offset.y = ((sh - th) * params->text.align.y);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue