Index: core/src/fxge/ge/fx_ge_font.cpp |
diff --git a/core/src/fxge/ge/fx_ge_font.cpp b/core/src/fxge/ge/fx_ge_font.cpp |
index d72adc36bf13d4e93c81175f50dfd328d7cf2051..d729d2ac1dcd3486187db84e0e25649952c44d41 100644 |
--- a/core/src/fxge/ge/fx_ge_font.cpp |
+++ b/core/src/fxge/ge/fx_ge_font.cpp |
@@ -19,7 +19,6 @@ CFX_Font::CFX_Font() { |
m_pFontData = NULL; |
m_pFontDataAllocation = NULL; |
m_dwSize = 0; |
- m_pOwnedStream = NULL; |
m_pGsubData = NULL; |
m_pPlatformFont = NULL; |
m_pPlatformFontCollection = NULL; |
@@ -42,8 +41,6 @@ CFX_Font::~CFX_Font() { |
CFX_GEModule::Get()->GetFontMgr()->ReleaseFace(m_Face); |
} |
} |
- FX_Free(m_pOwnedStream); |
- m_pOwnedStream = NULL; |
FX_Free(m_pGsubData); |
m_pGsubData = NULL; |
#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ |
@@ -79,61 +76,7 @@ FX_BOOL CFX_Font::LoadSubst(const CFX_ByteString& face_name, |
} |
return TRUE; |
} |
-extern "C" { |
-unsigned long _FTStreamRead(FXFT_Stream stream, |
- unsigned long offset, |
- unsigned char* buffer, |
- unsigned long count) { |
- if (count == 0) { |
- return 0; |
- } |
- IFX_FileRead* pFile = (IFX_FileRead*)stream->descriptor.pointer; |
- int res = pFile->ReadBlock(buffer, offset, count); |
- if (res) { |
- return count; |
- } |
- return 0; |
-} |
-void _FTStreamClose(FXFT_Stream stream) {} |
-}; |
-FX_BOOL _LoadFile(FXFT_Library library, |
- FXFT_Face* Face, |
- IFX_FileRead* pFile, |
- FXFT_Stream* stream) { |
- FXFT_Stream stream1 = (FXFT_Stream)FX_Alloc(uint8_t, sizeof(FXFT_StreamRec)); |
- stream1->base = NULL; |
- stream1->size = (unsigned long)pFile->GetSize(); |
- stream1->pos = 0; |
- stream1->descriptor.pointer = pFile; |
- stream1->close = _FTStreamClose; |
- stream1->read = _FTStreamRead; |
- FXFT_Open_Args args; |
- args.flags = FT_OPEN_STREAM; |
- args.stream = stream1; |
- if (FXFT_Open_Face(library, &args, 0, Face)) { |
- FX_Free(stream1); |
- return FALSE; |
- } |
- if (stream) { |
- *stream = stream1; |
- } |
- return TRUE; |
-} |
-FX_BOOL CFX_Font::LoadFile(IFX_FileRead* pFile) { |
- m_bEmbedded = FALSE; |
- FXFT_Library library; |
- if (CFX_GEModule::Get()->GetFontMgr()->m_FTLibrary == NULL) { |
- FXFT_Init_FreeType(&CFX_GEModule::Get()->GetFontMgr()->m_FTLibrary); |
- } |
- library = CFX_GEModule::Get()->GetFontMgr()->m_FTLibrary; |
- FXFT_Stream stream = NULL; |
- if (!_LoadFile(library, &m_Face, pFile, &stream)) { |
- return FALSE; |
- } |
- m_pOwnedStream = stream; |
- FXFT_Set_Pixel_Sizes(m_Face, 0, 64); |
- return TRUE; |
-} |
+ |
int CFX_Font::GetGlyphWidth(FX_DWORD glyph_index) { |
if (!m_Face) { |
return 0; |
@@ -177,32 +120,31 @@ FX_BOOL CFX_Font::LoadEmbedded(const uint8_t* data, FX_DWORD size) { |
m_dwSize = size; |
return m_Face != NULL; |
} |
-FX_BOOL CFX_Font::IsTTFont() { |
- if (m_Face == NULL) { |
+ |
+FX_BOOL CFX_Font::IsTTFont() const { |
+ if (!m_Face) |
return FALSE; |
- } |
return FXFT_Is_Face_TT_OT(m_Face) == FXFT_FACE_FLAG_SFNT; |
} |
+ |
int CFX_Font::GetAscent() const { |
- if (m_Face == NULL) { |
+ if (!m_Face) |
return 0; |
- } |
- int ascent = EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), |
- FXFT_Get_Face_Ascender(m_Face)); |
- return ascent; |
+ return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), |
+ FXFT_Get_Face_Ascender(m_Face)); |
} |
+ |
int CFX_Font::GetDescent() const { |
- if (m_Face == NULL) { |
+ if (!m_Face) |
return 0; |
- } |
- int descent = EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), |
- FXFT_Get_Face_Descender(m_Face)); |
- return descent; |
+ return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), |
+ FXFT_Get_Face_Descender(m_Face)); |
} |
+ |
FX_BOOL CFX_Font::GetGlyphBBox(FX_DWORD glyph_index, FX_RECT& bbox) { |
- if (m_Face == NULL) { |
+ if (!m_Face) |
return FALSE; |
- } |
+ |
if (FXFT_Is_Face_Tricky(m_Face)) { |
int error = FXFT_Set_Char_Size(m_Face, 0, 1000 * 64, 72, 72); |
if (error) { |
@@ -265,10 +207,11 @@ FX_BOOL CFX_Font::GetGlyphBBox(FX_DWORD glyph_index, FX_RECT& bbox) { |
} |
return TRUE; |
} |
-FX_BOOL CFX_Font::IsItalic() { |
- if (m_Face == NULL) { |
+ |
+FX_BOOL CFX_Font::IsItalic() const { |
+ if (!m_Face) |
return FALSE; |
- } |
+ |
FX_BOOL ret = FXFT_Is_Face_Italic(m_Face) == FXFT_STYLE_FLAG_ITALIC; |
if (!ret) { |
CFX_ByteString str(FXFT_Get_Face_Style_Name(m_Face)); |
@@ -279,18 +222,19 @@ FX_BOOL CFX_Font::IsItalic() { |
} |
return ret; |
} |
-FX_BOOL CFX_Font::IsBold() { |
- if (m_Face == NULL) { |
+ |
+FX_BOOL CFX_Font::IsBold() const { |
+ if (!m_Face) |
return FALSE; |
- } |
return FXFT_Is_Face_Bold(m_Face) == FXFT_STYLE_FLAG_BOLD; |
} |
-FX_BOOL CFX_Font::IsFixedWidth() { |
- if (m_Face == NULL) { |
+ |
+FX_BOOL CFX_Font::IsFixedWidth() const { |
+ if (!m_Face) |
return FALSE; |
- } |
return FXFT_Is_Face_fixedwidth(m_Face); |
} |
+ |
CFX_WideString CFX_Font::GetPsName() const { |
if (m_Face == NULL) { |
return CFX_WideString(); |
@@ -347,37 +291,37 @@ FX_BOOL CFX_Font::GetBBox(FX_RECT& bbox) { |
} |
return TRUE; |
} |
-int CFX_Font::GetHeight() { |
- if (m_Face == NULL) { |
+ |
+int CFX_Font::GetHeight() const { |
+ if (!m_Face) |
return 0; |
- } |
- int height = |
- EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), FXFT_Get_Face_Height(m_Face)); |
- return height; |
+ |
+ return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), |
+ FXFT_Get_Face_Height(m_Face)); |
} |
-int CFX_Font::GetMaxAdvanceWidth() { |
- if (m_Face == NULL) { |
+ |
+int CFX_Font::GetMaxAdvanceWidth() const { |
+ if (!m_Face) |
return 0; |
- } |
- int width = EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), |
- FXFT_Get_Face_MaxAdvanceWidth(m_Face)); |
- return width; |
+ |
+ return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), |
+ FXFT_Get_Face_MaxAdvanceWidth(m_Face)); |
} |
-int CFX_Font::GetULPos() { |
- if (m_Face == NULL) { |
+ |
+int CFX_Font::GetULPos() const { |
+ if (!m_Face) |
return 0; |
- } |
- int pos = EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), |
- FXFT_Get_Face_UnderLinePosition(m_Face)); |
- return pos; |
+ |
+ return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), |
+ FXFT_Get_Face_UnderLinePosition(m_Face)); |
} |
-int CFX_Font::GetULthickness() { |
- if (m_Face == NULL) { |
+ |
+int CFX_Font::GetULthickness() const { |
+ if (!m_Face) |
return 0; |
- } |
- int thickness = EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), |
- FXFT_Get_Face_UnderLineThickness(m_Face)); |
- return thickness; |
+ |
+ return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), |
+ FXFT_Get_Face_UnderLineThickness(m_Face)); |
} |
CFX_UnicodeEncoding::CFX_UnicodeEncoding(CFX_Font* pFont) : m_pFont(pFont) { |
@@ -394,7 +338,7 @@ FX_DWORD CFX_UnicodeEncoding::GlyphFromCharCode(FX_DWORD charcode) { |
if (FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE) == 0) |
return FXFT_Get_Char_Index(face, charcode); |
- if (m_pFont->m_pSubstFont && m_pFont->m_pSubstFont->m_Charset == 2) { |
+ if (m_pFont->GetSubstFont() && m_pFont->GetSubstFont()->m_Charset == 2) { |
FX_DWORD index = 0; |
if (FXFT_Select_Charmap(face, FXFT_ENCODING_MS_SYMBOL) == 0) |
index = FXFT_Get_Char_Index(face, charcode); |