oh my wordy lordy me.. too accurate for its own good soi've had to fidge to
overlap parts as the positioning is done in 24.8 space not integer space SVN revision: 6553
This commit is contained in:
parent
6e8c67d976
commit
47280739ac
|
@ -678,7 +678,10 @@ evas_object_text_render(Evas_Object *obj, void *output, void *context, void *sur
|
|||
context,
|
||||
surface,
|
||||
o->engine_data,
|
||||
obj->cur.cache.geometry.x + x,
|
||||
obj->cur.cache.geometry.x + x -
|
||||
obj->layer->evas->engine.func->font_inset_get(obj->layer->evas->engine.data.output,
|
||||
o->engine_data,
|
||||
o->cur.text),
|
||||
obj->cur.cache.geometry.y + y +
|
||||
(int)
|
||||
((o->max_ascent * obj->cur.cache.geometry.h) / obj->cur.geometry.h),
|
||||
|
|
|
@ -139,6 +139,7 @@ evas_common_font_query_char_coords(RGBA_Font *fn, const char *text, int pos, int
|
|||
RGBA_Font_Glyph *fg;
|
||||
int chr_x, chr_y, chr_w;
|
||||
int gl;
|
||||
FT_Vector delta;
|
||||
|
||||
pchr = chr;
|
||||
gl = evas_common_font_utf8_get_next((unsigned char *)text, &chr);
|
||||
|
@ -146,8 +147,6 @@ evas_common_font_query_char_coords(RGBA_Font *fn, const char *text, int pos, int
|
|||
index = FT_Get_Char_Index(fn->ft.face, gl);
|
||||
if ((use_kerning) && (prev_index) && (index))
|
||||
{
|
||||
FT_Vector delta;
|
||||
|
||||
FT_Get_Kerning(fn->ft.face, prev_index, index,
|
||||
ft_kerning_default, &delta);
|
||||
pen_x += delta.x << 2;
|
||||
|
@ -158,7 +157,11 @@ evas_common_font_query_char_coords(RGBA_Font *fn, const char *text, int pos, int
|
|||
chr_x = (pen_x >> 8) + fg->glyph_out->left;
|
||||
chr_y = (pen_y >> 8) + fg->glyph_out->top;
|
||||
chr_w = fg->glyph_out->bitmap.width;
|
||||
|
||||
if (text[chr])
|
||||
{
|
||||
if (chr_w < (fg->glyph->advance.x >> 16))
|
||||
chr_w = fg->glyph->advance.x >> 16;
|
||||
}
|
||||
if (pchr == pos)
|
||||
{
|
||||
if (cx) *cx = chr_x;
|
||||
|
@ -193,6 +196,7 @@ evas_common_font_query_text_at_pos(RGBA_Font *fn, const char *text, int x, int y
|
|||
RGBA_Font_Glyph *fg;
|
||||
int chr_x, chr_y, chr_w;
|
||||
int gl;
|
||||
FT_Vector delta;
|
||||
|
||||
pchr = chr;
|
||||
gl = evas_common_font_utf8_get_next((unsigned char *)text, &chr);
|
||||
|
@ -200,8 +204,6 @@ evas_common_font_query_text_at_pos(RGBA_Font *fn, const char *text, int x, int y
|
|||
index = FT_Get_Char_Index(fn->ft.face, gl);
|
||||
if ((use_kerning) && (prev_index) && (index))
|
||||
{
|
||||
FT_Vector delta;
|
||||
|
||||
FT_Get_Kerning(fn->ft.face, prev_index, index,
|
||||
ft_kerning_default, &delta);
|
||||
pen_x += delta.x << 6;
|
||||
|
@ -212,8 +214,14 @@ evas_common_font_query_text_at_pos(RGBA_Font *fn, const char *text, int x, int y
|
|||
chr_x = (pen_x >> 8) + fg->glyph_out->left;
|
||||
chr_y = (pen_y >> 8) + fg->glyph_out->top;
|
||||
chr_w = fg->glyph_out->bitmap.width;
|
||||
|
||||
if ((x >= chr_x) && (x < (chr_x + chr_w)) &&
|
||||
if (text[chr])
|
||||
{
|
||||
if (chr_w < (((fg->glyph->advance.x + 0xffff) >> 16) +
|
||||
(((pen_x & 0xff) + 0xff) >> 8) + 1))
|
||||
chr_w = ((fg->glyph->advance.x + 0xffff) >> 16) +
|
||||
(((pen_x & 0xff) + 0xff) >> 8) + 1;
|
||||
}
|
||||
if ((x >= chr_x) && (x <= (chr_x + chr_w)) &&
|
||||
(y > - evas_common_font_max_ascent_get(fn)) &&
|
||||
(y < evas_common_font_max_descent_get(fn)))
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue