[vlc-devel] [PATCH 2/7] freetype: fix FixGlyph()
Salah-Eddin Shaban
salshaaban at gmail.com
Tue May 12 08:15:59 CEST 2015
FixGlyph() expects to be called immediately after FT_Load_Glyph(), which is no longer the case.
---
modules/text_renderer/text_layout.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/modules/text_renderer/text_layout.c b/modules/text_renderer/text_layout.c
index c87a5cd..c55ae80 100644
--- a/modules/text_renderer/text_layout.c
+++ b/modules/text_renderer/text_layout.c
@@ -179,19 +179,20 @@ line_desc_t *NewLine( int i_count )
}
static void FixGlyph( FT_Glyph glyph, FT_BBox *p_bbox,
- FT_Face face, const FT_Vector *p_pen )
+ FT_Pos i_x_advance, FT_Pos i_y_advance,
+ const FT_Vector *p_pen )
{
FT_BitmapGlyph glyph_bmp = (FT_BitmapGlyph)glyph;
if( p_bbox->xMin >= p_bbox->xMax )
{
p_bbox->xMin = FT_CEIL(p_pen->x);
- p_bbox->xMax = FT_CEIL(p_pen->x + face->glyph->advance.x);
+ p_bbox->xMax = FT_CEIL(p_pen->x + i_x_advance);
glyph_bmp->left = p_bbox->xMin;
}
if( p_bbox->yMin >= p_bbox->yMax )
{
p_bbox->yMax = FT_CEIL(p_pen->y);
- p_bbox->yMin = FT_CEIL(p_pen->y + face->glyph->advance.y);
+ p_bbox->yMin = FT_CEIL(p_pen->y + i_y_advance);
glyph_bmp->top = p_bbox->yMax;
}
}
@@ -983,13 +984,16 @@ static int NewLayoutLine( filter_t *p_filter,
}
FixGlyph( p_bitmaps->p_glyph, &p_bitmaps->glyph_bbox,
- p_face, &pen_new );
+ p_bitmaps->i_x_advance, p_bitmaps->i_y_advance,
+ &pen_new );
if( p_bitmaps->p_outline )
FixGlyph( p_bitmaps->p_outline, &p_bitmaps->outline_bbox,
- p_face, &pen_new );
+ p_bitmaps->i_x_advance, p_bitmaps->i_y_advance,
+ &pen_new );
if( p_bitmaps->p_shadow )
FixGlyph( p_bitmaps->p_shadow, &p_bitmaps->shadow_bbox,
- p_face, &pen_shadow );
+ p_bitmaps->i_x_advance, p_bitmaps->i_y_advance,
+ &pen_shadow );
int i_line_offset = 0;
int i_line_thickness = 0;
--
1.9.1
More information about the vlc-devel
mailing list