|
|
|
@ -69,101 +69,4 @@ void evas_common_font_int_reload(RGBA_Font_Int *fi); |
|
|
|
|
(void) _len; /* We don't have to use it */ \
|
|
|
|
|
(void) pen_y; /* Sometimes it won't be used */ |
|
|
|
|
|
|
|
|
|
<<<<<<< HEAD |
|
|
|
|
/**
|
|
|
|
|
* @def EVAS_FONT_WALK_TEXT_START |
|
|
|
|
* @internal |
|
|
|
|
* This runs through the variable text while updating char_index, |
|
|
|
|
* which is the current index in the text. This macro exposes (inside |
|
|
|
|
* the loop) the following vars: |
|
|
|
|
* adv - advancement |
|
|
|
|
* gl - the current unicode code point |
|
|
|
|
* bear_x, bear_y, width - info about the bitmap |
|
|
|
|
* pen_x, pen_y - (also available outside of the loop, but updated here) |
|
|
|
|
* fg - the font glyph. |
|
|
|
|
* index, prev_index - font indexes. |
|
|
|
|
* Does not end with a ; |
|
|
|
|
* @see EVAS_FONT_WALK_TEXT_INIT |
|
|
|
|
* @see EVAS_FONT_WALK_TEXT_WORK |
|
|
|
|
* @see EVAS_FONT_WALK_TEXT_END |
|
|
|
|
*/ |
|
|
|
|
#define EVAS_FONT_WALK_TEXT_START() \ |
|
|
|
|
do \
|
|
|
|
|
{ \
|
|
|
|
|
int adv; \
|
|
|
|
|
int visible; \
|
|
|
|
|
prev_index = 0; \
|
|
|
|
|
for (char_index = 0 ; *text ; text++, char_index++) \
|
|
|
|
|
{ \
|
|
|
|
|
FT_UInt index; \
|
|
|
|
|
RGBA_Font_Glyph *fg; \
|
|
|
|
|
int gl, kern; \
|
|
|
|
|
int bear_x, bear_y, width; \
|
|
|
|
|
gl = *text; \
|
|
|
|
|
if (gl == 0) break; |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @def EVAS_FONT_WALK_TEXT_WORK |
|
|
|
|
* @internal |
|
|
|
|
* This macro actually updates the values mentioned in EVAS_FONT_WALK_TEXT_START |
|
|
|
|
* according to the current positing in the walk. |
|
|
|
|
* @see EVAS_FONT_WALK_TEXT_START |
|
|
|
|
* @see EVAS_FONT_WALK_TEXT_INIT |
|
|
|
|
* @see EVAS_FONT_WALK_TEXT_END |
|
|
|
|
*/ |
|
|
|
|
#define EVAS_FONT_WALK_TEXT_WORK(is_visual) \ |
|
|
|
|
index = evas_common_font_glyph_search(fn, &fi, gl); \
|
|
|
|
|
LKL(fi->ft_mutex); \
|
|
|
|
|
fg = evas_common_font_int_cache_glyph_get(fi, index); \
|
|
|
|
|
if (!fg) \
|
|
|
|
|
{ \
|
|
|
|
|
LKU(fi->ft_mutex); \
|
|
|
|
|
continue; \
|
|
|
|
|
} \
|
|
|
|
|
kern = 0; \
|
|
|
|
|
if (EVAS_FONT_CHARACTER_IS_INVISIBLE(gl)) \
|
|
|
|
|
{ \
|
|
|
|
|
adv = width = bear_x = bear_y = 0; \
|
|
|
|
|
visible = 0; \
|
|
|
|
|
} \
|
|
|
|
|
else \
|
|
|
|
|
{ \
|
|
|
|
|
bear_x = fg->glyph_out->left; \
|
|
|
|
|
bear_y = fg->glyph_out->top; \
|
|
|
|
|
adv = fg->glyph->advance.x >> 16; \
|
|
|
|
|
width = fg->glyph_out->bitmap.width; \
|
|
|
|
|
visible = 1; \
|
|
|
|
|
} \
|
|
|
|
|
/* hmmm kerning means i can't sanely do my own cached metric */ \
|
|
|
|
|
/* tables! grrr - this means font face sharing is kinda... not */ \
|
|
|
|
|
/* an option if you want performance */ \
|
|
|
|
|
if ((use_kerning) && (prev_index) && (index) && \
|
|
|
|
|
(pface == fi->src->ft.face)) \
|
|
|
|
|
{ \
|
|
|
|
|
EVAS_FONT_UPDATE_KERN(is_visual); \
|
|
|
|
|
} \
|
|
|
|
|
\
|
|
|
|
|
pface = fi->src->ft.face; \
|
|
|
|
|
LKU(fi->ft_mutex); \
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @def EVAS_FONT_WALK_TEXT_END |
|
|
|
|
* @internal |
|
|
|
|
* Closes EVAS_FONT_WALK_TEXT_START, needs to end with a ; |
|
|
|
|
* @see EVAS_FONT_WALK_TEXT_START |
|
|
|
|
* @see EVAS_FONT_WALK_TEXT_INIT |
|
|
|
|
* @see EVAS_FONT_WALK_TEXT_WORK |
|
|
|
|
*/ |
|
|
|
|
#define EVAS_FONT_WALK_TEXT_END() \ |
|
|
|
|
if (visible) \
|
|
|
|
|
{ \
|
|
|
|
|
pen_x += adv; \
|
|
|
|
|
} \
|
|
|
|
|
prev_index = index; \
|
|
|
|
|
} \
|
|
|
|
|
} \
|
|
|
|
|
while(0) |
|
|
|
|
|
|
|
|
|
======= |
|
|
|
|
>>>>>>> Evas: Multiple changes that all relate to the Harfbuzz integration: |
|
|
|
|
#endif /* !_EVAS_FONT_PRIVATE_H */ |
|
|
|
|