Include the freetype error code in the error message when truetype font/glyph loading fails

This commit is contained in:
Alex Szpakowski
2014-03-18 19:46:14 -03:00
parent 50916825d0
commit b95a02772a
@@ -33,12 +33,15 @@ namespace freetype
TrueTypeRasterizer::TrueTypeRasterizer(FT_Library library, Data *data, int size) TrueTypeRasterizer::TrueTypeRasterizer(FT_Library library, Data *data, int size)
: data(data) : data(data)
{ {
if (FT_New_Memory_Face(library, FT_Error err = FT_Err_Ok;
(const FT_Byte *)data->getData(), /* first byte in memory */ err = FT_New_Memory_Face(library,
data->getSize(), /* size in bytes */ (const FT_Byte *)data->getData(), /* first byte in memory */
0, /* face_index */ data->getSize(), /* size in bytes */
&face)) 0, /* face_index */
throw love::Exception("TrueTypeFont Loading error: FT_New_Face failed (there is probably a problem with your font file)"); &face);
if (err != FT_Err_Ok)
throw love::Exception("TrueType Font Loading error: FT_New_Face failed: 0x%x (problem with font file?)", err);
FT_Set_Pixel_Sizes(face, size, size); FT_Set_Pixel_Sizes(face, size, size);
@@ -68,12 +71,18 @@ GlyphData *TrueTypeRasterizer::getGlyphData(uint32 glyph) const
love::font::GlyphMetrics glyphMetrics = {}; love::font::GlyphMetrics glyphMetrics = {};
FT_Glyph ftglyph; FT_Glyph ftglyph;
// Initialize FT_Error err = FT_Err_Ok;
if (FT_Load_Glyph(face, FT_Get_Char_Index(face, glyph), FT_LOAD_DEFAULT))
throw love::Exception("TrueTypeFont Loading error: FT_Load_Glyph failed");
if (FT_Get_Glyph(face->glyph, &ftglyph)) // Initialize
throw love::Exception("TrueTypeFont Loading error: FT_Get_Glyph failed"); err = FT_Load_Glyph(face, FT_Get_Char_Index(face, glyph), FT_LOAD_DEFAULT);
if (err != FT_Err_Ok)
throw love::Exception("TrueType Font Loading error: FT_Load_Glyph failed (0x%x)", err);
err = FT_Get_Glyph(face->glyph, &ftglyph);
if (err != FT_Err_Ok)
throw love::Exception("TrueType Font Loading error: FT_Get_Glyph failed (0x%x)", err);
FT_Glyph_To_Bitmap(&ftglyph, FT_RENDER_MODE_NORMAL, 0, 1); FT_Glyph_To_Bitmap(&ftglyph, FT_RENDER_MODE_NORMAL, 0, 1);