summaryrefslogtreecommitdiff
path: root/vcl/unx/generic
diff options
context:
space:
mode:
authorJan-Marek Glogowski <glogow@fbihome.de>2018-10-05 08:25:40 +0000
committerJan-Marek Glogowski <glogow@fbihome.de>2018-10-06 12:04:40 +0200
commitede39d78282484650796456327a35a879a475cef (patch)
tree220e3bff19bea06baf6956507578d92eaa54a992 /vcl/unx/generic
parent2b3bd14c566e97044b50bb81d8d61bc6bb0fd37b (diff)
UNX merge FreetypeManager into GlyphCache
Change-Id: I736cc60af6d0c91623a25843bd9ff8fcdd9e8e90 Reviewed-on: https://gerrit.libreoffice.org/61453 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
Diffstat (limited to 'vcl/unx/generic')
-rw-r--r--vcl/unx/generic/glyphs/freetype_glyphcache.cxx35
-rw-r--r--vcl/unx/generic/glyphs/glyphcache.cxx33
2 files changed, 18 insertions, 50 deletions
diff --git a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
index 4a65c2b4b6b4..cfc91deb07e0 100644
--- a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
+++ b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
@@ -86,8 +86,6 @@ static int nDefaultPrioEmbedded = 2;
static int nDefaultPrioAutoHint = 1;
static int nDefaultPrioAntiAlias = 1;
-// FreetypeManager
-
FreetypeFontFile::FreetypeFontFile( const OString& rNativeFileName )
: maNativeFileName( rNativeFileName ),
mpFileMap( nullptr ),
@@ -260,8 +258,7 @@ void FreetypeFontInfo::AnnounceFont( PhysicalFontCollection* pFontCollection )
pFontCollection->Add( pFD );
}
-FreetypeManager::FreetypeManager()
-: mnMaxFontId( 0 )
+void GlyphCache::InitFreetype()
{
/*FT_Error rcFT =*/ FT_Init_FreeType( &aLibFT );
@@ -291,42 +288,32 @@ FT_Face FreetypeFont::GetFtFace() const
return maFaceFT;
}
-FreetypeManager::~FreetypeManager()
-{
- ClearFontList();
-}
-
-void FreetypeManager::AddFontFile( const OString& rNormalizedName,
+void GlyphCache::AddFontFile( const OString& rNormalizedName,
int nFaceNum, sal_IntPtr nFontId, const FontAttributes& rDevFontAttr)
{
if( rNormalizedName.isEmpty() )
return;
- if( maFontList.find( nFontId ) != maFontList.end() )
+ if( m_aFontInfoList.find( nFontId ) != m_aFontInfoList.end() )
return;
FreetypeFontInfo* pFontInfo = new FreetypeFontInfo( rDevFontAttr,
rNormalizedName, nFaceNum, nFontId);
- maFontList[ nFontId ].reset(pFontInfo);
- if( mnMaxFontId < nFontId )
- mnMaxFontId = nFontId;
+ m_aFontInfoList[ nFontId ].reset(pFontInfo);
+ if( m_nMaxFontId < nFontId )
+ m_nMaxFontId = nFontId;
}
-void FreetypeManager::AnnounceFonts( PhysicalFontCollection* pToAdd ) const
+void GlyphCache::AnnounceFonts( PhysicalFontCollection* pToAdd ) const
{
- for (auto const& font : maFontList)
+ for (auto const& font : m_aFontInfoList)
{
FreetypeFontInfo* pFreetypeFontInfo = font.second.get();
pFreetypeFontInfo->AnnounceFont( pToAdd );
}
}
-void FreetypeManager::ClearFontList( )
-{
- maFontList.clear();
-}
-
-FreetypeFont* FreetypeManager::CreateFont(LogicalFontInstance* pFontInstance)
+FreetypeFont* GlyphCache::CreateFont(LogicalFontInstance* pFontInstance)
{
// find a FontInfo matching to the font id
if (!pFontInstance)
@@ -337,8 +324,8 @@ FreetypeFont* FreetypeManager::CreateFont(LogicalFontInstance* pFontInstance)
return nullptr;
sal_IntPtr nFontId = pFontFace->GetFontId();
- FontList::iterator it = maFontList.find(nFontId);
- FreetypeFontInfo* pFontInfo = it != maFontList.end() ? it->second.get() : nullptr;
+ FontInfoList::iterator it = m_aFontInfoList.find(nFontId);
+ FreetypeFontInfo* pFontInfo = it != m_aFontInfoList.end() ? it->second.get() : nullptr;
if (!pFontInfo)
return nullptr;
diff --git a/vcl/unx/generic/glyphs/glyphcache.cxx b/vcl/unx/generic/glyphs/glyphcache.cxx
index 3ce24ece848c..e2a1358b3567 100644
--- a/vcl/unx/generic/glyphs/glyphcache.cxx
+++ b/vcl/unx/generic/glyphs/glyphcache.cxx
@@ -37,17 +37,19 @@ GlyphCache::GlyphCache()
mnLruIndex(0),
mnGlyphCount(0),
mpCurrentGCFont(nullptr)
+ , m_nMaxFontId(0)
{
pInstance = this;
- mpFtManager.reset( new FreetypeManager );
+
+ InitFreetype();
}
GlyphCache::~GlyphCache()
{
- InvalidateAllGlyphs();
+ ClearFontCache();
}
-void GlyphCache::InvalidateAllGlyphs()
+void GlyphCache::ClearFontCache()
{
for (auto& font : maFontList)
{
@@ -59,6 +61,7 @@ void GlyphCache::InvalidateAllGlyphs()
maFontList.clear();
mpCurrentGCFont = nullptr;
+ m_aFontInfoList.clear();
}
void GlyphCache::ClearFontOptions()
@@ -159,26 +162,6 @@ GlyphCache& GlyphCache::GetInstance()
return *pInstance;
}
-void GlyphCache::AddFontFile( const OString& rNormalizedName, int nFaceNum,
- sal_IntPtr nFontId, const FontAttributes& rDFA)
-{
- if( mpFtManager )
- mpFtManager->AddFontFile( rNormalizedName, nFaceNum, nFontId, rDFA);
-}
-
-void GlyphCache::AnnounceFonts( PhysicalFontCollection* pFontCollection ) const
-{
- if( mpFtManager )
- mpFtManager->AnnounceFonts( pFontCollection );
-}
-
-void GlyphCache::ClearFontCache()
-{
- InvalidateAllGlyphs();
- if (mpFtManager)
- mpFtManager->ClearFontList();
-}
-
FreetypeFont* GlyphCache::CacheFont(LogicalFontInstance* pFontInstance)
{
// a serverfont request has a fontid > 0
@@ -195,9 +178,7 @@ FreetypeFont* GlyphCache::CacheFont(LogicalFontInstance* pFontInstance)
}
// font not cached yet => create new font item
- FreetypeFont* pNew = nullptr;
- if (mpFtManager)
- pNew = mpFtManager->CreateFont(pFontInstance);
+ FreetypeFont* pNew = CreateFont(pFontInstance);
if( pNew )
{