Revert "Make CFX_FontMgr member variables private."
[pdfium.git] / core / src / fxge / ge / fx_ge_font.cpp
index d72adc3..a6ababf 100644 (file)
@@ -8,9 +8,6 @@
 #include "../../../include/fxge/fx_freetype.h"
 #include "text_int.h"
 #define EM_ADJUST(em, a) (em == 0 ? (a) : (a)*1000 / em)
-extern void _FPDFAPI_GetInternalFontData(int id1,
-                                         const uint8_t*& data,
-                                         FX_DWORD& size);
 CFX_Font::CFX_Font() {
   m_pSubstFont = NULL;
   m_Face = NULL;
@@ -19,7 +16,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 +38,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_
@@ -54,13 +48,13 @@ void CFX_Font::DeleteFace() {
   FXFT_Done_Face(m_Face);
   m_Face = NULL;
 }
-FX_BOOL CFX_Font::LoadSubst(const CFX_ByteString& face_name,
-                            FX_BOOL bTrueType,
-                            FX_DWORD flags,
-                            int weight,
-                            int italic_angle,
-                            int CharsetCP,
-                            FX_BOOL bVertical) {
+void CFX_Font::LoadSubst(const CFX_ByteString& face_name,
+                         FX_BOOL bTrueType,
+                         FX_DWORD flags,
+                         int weight,
+                         int italic_angle,
+                         int CharsetCP,
+                         FX_BOOL bVertical) {
   m_bEmbedded = FALSE;
   m_bVertical = bVertical;
   m_pSubstFont = new CFX_SubstFont;
@@ -77,63 +71,8 @@ FX_BOOL CFX_Font::LoadSubst(const CFX_ByteString& face_name,
     m_pFontData = FXFT_Get_Face_Stream_Base(m_Face);
     m_dwSize = FXFT_Get_Face_Stream_Size(m_Face);
   }
-  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 +116,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 +203,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 +218,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 +287,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 +334,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);