summaryrefslogtreecommitdiff
path: root/Build/source/libs/graphite-engine/src/segment/FontFace.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/graphite-engine/src/segment/FontFace.h')
-rw-r--r--Build/source/libs/graphite-engine/src/segment/FontFace.h26
1 files changed, 22 insertions, 4 deletions
diff --git a/Build/source/libs/graphite-engine/src/segment/FontFace.h b/Build/source/libs/graphite-engine/src/segment/FontFace.h
index 70be57d5cd2..7f2684a5908 100644
--- a/Build/source/libs/graphite-engine/src/segment/FontFace.h
+++ b/Build/source/libs/graphite-engine/src/segment/FontFace.h
@@ -44,6 +44,8 @@ class Segment;
----------------------------------------------------------------------------------------------*/
class FontFace
{
+ friend class gr::FontMemoryUsage;
+
public:
FontFace()
{
@@ -52,7 +54,8 @@ public:
~FontFace()
{
- s_pFontCache->RemoveFontFace(m_pgreng->FaceName(), m_pgreng->Bold(), m_pgreng->Italic());
+ if (s_pFontCache)
+ s_pFontCache->RemoveFontFace(m_pgreng->FaceName(), m_pgreng->Bold(), m_pgreng->Italic());
delete m_pgreng;
}
@@ -63,7 +66,7 @@ public:
void DecFontCount()
{
m_cfonts--;
- if (m_cfonts <= 0 && s_pFontCache->GetFlushMode() == kflushAuto)
+ if (m_cfonts <= 0 && (s_pFontCache == NULL || s_pFontCache->GetFlushMode() == kflushAuto))
delete this;
}
@@ -73,10 +76,12 @@ public:
}
static FontFace * GetFontFace(Font * pfont,
- std::wstring strFaceName, bool fBold, bool fItalic);
+ std::wstring strFaceName, bool fBold, bool fItalic,
+ bool fDumbFallback = false);
GrResult InitFontFace(Font * pfont,
- std::wstring stuFaceName, bool fBold, bool fItalic);
+ std::wstring stuFaceName, bool fBold, bool fItalic,
+ bool fDumbLayout);
FontErrorCode IsValidForGraphite(int * pnVersion, int * pnSubVersion)
{
@@ -172,6 +177,16 @@ public:
m_pgreng->get_ScriptDirection(&script_dirs, &err_dummy, 1);
return ScriptDirCode(script_dirs);
}
+
+ bool BadFont(FontErrorCode * pferr = NULL)
+ {
+ return m_pgreng->BadFont(pferr);
+ }
+ bool DumbFallback(FontErrorCode * pferr = NULL)
+ {
+ return m_pgreng->DumbFallback(pferr);
+ }
+
public:
// For use in segment creation:
void RenderLineFillSegment(Segment * pseg, Font * pfont, ITextSource * pts,
@@ -206,6 +221,9 @@ public:
//}
//void DbgCheckFontFace();
+ static void calculateAllMemoryUsage(FontMemoryUsage & fmu);
+ void calculateMemoryUsage(FontMemoryUsage & fmu);
+
protected:
// Number of fonts in existence that use this face; when it goes to zero, delete.
int m_cfonts;