[Libreoffice-commits] core.git: 3 commits - vcl/generic vcl/inc vcl/source

Chris Sherlock chris.sherlock79 at gmail.com
Wed Jan 6 20:27:56 PST 2016


 vcl/generic/glyphs/gcach_ftyp.cxx |   56 +++++++++----------
 vcl/generic/glyphs/gcach_ftyp.hxx |   30 +++++-----
 vcl/inc/PhysicalFontFace.hxx      |    1 
 vcl/inc/fontattributes.hxx        |   19 ++----
 vcl/inc/fontselect.hxx            |   88 ++++++++++++++++++++++++++++++
 vcl/inc/generic/glyphcache.hxx    |    6 +-
 vcl/inc/outfont.hxx               |  110 +-------------------------------------
 vcl/inc/textlineinfo.hxx          |   78 ++++++++++++++++++++++++++
 vcl/source/gdi/pdfwriter_impl.cxx |    1 
 vcl/source/outdev/text.cxx        |    2 
 10 files changed, 225 insertions(+), 166 deletions(-)

New commits:
commit f5151af414f0ac0590d87040929cabe7f8db3106
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date:   Thu Jan 7 15:25:31 2016 +1100

    vcl: FtFont{Info|File} renamed to FreetypeFont{Info|Type}
    
    Change-Id: I91621a177f27200c9d3413dd4953d5292a2ac15b

diff --git a/vcl/generic/glyphs/gcach_ftyp.cxx b/vcl/generic/glyphs/gcach_ftyp.cxx
index 686be00..f293998 100644
--- a/vcl/generic/glyphs/gcach_ftyp.cxx
+++ b/vcl/generic/glyphs/gcach_ftyp.cxx
@@ -74,7 +74,7 @@ static FT_Library aLibFT = nullptr;
 // enable linking with old FT versions
 static int nFTVERSION = 0;
 
-typedef std::unordered_map<const char*, std::shared_ptr<FtFontFile>, rtl::CStringHash, rtl::CStringEqual> FontFileList;
+typedef std::unordered_map<const char*, std::shared_ptr<FreetypeFontFile>, rtl::CStringHash, rtl::CStringEqual> FontFileList;
 
 namespace { struct vclFontFileList : public rtl::Static< FontFileList, vclFontFileList > {}; }
 
@@ -91,7 +91,7 @@ static int nDefaultPrioAntiAlias   = 1;
 
 // FreetypeManager
 
-FtFontFile::FtFontFile( const OString& rNativeFileName )
+FreetypeFontFile::FreetypeFontFile( const OString& rNativeFileName )
 :   maNativeFileName( rNativeFileName ),
     mpFileMap( nullptr ),
     mnFileSize( 0 ),
@@ -117,7 +117,7 @@ FtFontFile::FtFontFile( const OString& rNativeFileName )
     }
 }
 
-FtFontFile* FtFontFile::FindFontFile( const OString& rNativeFileName )
+FreetypeFontFile* FreetypeFontFile::FindFontFile( const OString& rNativeFileName )
 {
     // font file already known? (e.g. for ttc, synthetic, aliased fonts)
     const char* pFileName = rNativeFileName.getStr();
@@ -127,13 +127,13 @@ FtFontFile* FtFontFile::FindFontFile( const OString& rNativeFileName )
         return it->second.get();
 
     // no => create new one
-    FtFontFile* pFontFile = new FtFontFile( rNativeFileName );
+    FreetypeFontFile* pFontFile = new FreetypeFontFile( rNativeFileName );
     pFileName = pFontFile->maNativeFileName.getStr();
     rFontFileList[pFileName].reset(pFontFile);
     return pFontFile;
 }
 
-bool FtFontFile::Map()
+bool FreetypeFontFile::Map()
 {
     if( mnRefCount++ <= 0 )
     {
@@ -160,7 +160,7 @@ bool FtFontFile::Map()
     return (mpFileMap != nullptr);
 }
 
-void FtFontFile::Unmap()
+void FreetypeFontFile::Unmap()
 {
     if( (--mnRefCount > 0) || (mpFileMap == nullptr) )
         return;
@@ -170,10 +170,10 @@ void FtFontFile::Unmap()
 }
 
 #if ENABLE_GRAPHITE
-// wrap FtFontInfo's table function
+// wrap FreetypeFontInfo's table function
 const void * graphiteFontTable(const void* appFaceHandle, unsigned int name, size_t *len)
 {
-    const FtFontInfo * pFontInfo = static_cast<const FtFontInfo*>(appFaceHandle);
+    const FreetypeFontInfo * pFontInfo = static_cast<const FreetypeFontInfo*>(appFaceHandle);
     typedef union {
         char m_c[5];
         unsigned int m_id;
@@ -196,11 +196,11 @@ const void * graphiteFontTable(const void* appFaceHandle, unsigned int name, siz
 }
 #endif
 
-FtFontInfo::FtFontInfo( const ImplFontAttributes& rDevFontAttributes,
+FreetypeFontInfo::FreetypeFontInfo( const ImplFontAttributes& rDevFontAttributes,
     const OString& rNativeFileName, int nFaceNum, sal_IntPtr nFontId)
 :
     maFaceFT( nullptr ),
-    mpFontFile( FtFontFile::FindFontFile( rNativeFileName ) ),
+    mpFontFile( FreetypeFontFile::FindFontFile( rNativeFileName ) ),
     mnFaceNum( nFaceNum ),
     mnRefCount( 0 ),
 #if ENABLE_GRAPHITE
@@ -219,7 +219,7 @@ FtFontInfo::FtFontInfo( const ImplFontAttributes& rDevFontAttributes,
     maDevFontAttributes.IncreaseQualityBy( mpFontFile->GetLangBoost() );
 }
 
-FtFontInfo::~FtFontInfo()
+FreetypeFontInfo::~FreetypeFontInfo()
 {
     if( mpFontCharMap )
         mpFontCharMap = nullptr;
@@ -230,14 +230,14 @@ FtFontInfo::~FtFontInfo()
 #endif
 }
 
-void FtFontInfo::InitHashes() const
+void FreetypeFontInfo::InitHashes() const
 {
     // TODO: avoid pointers when empty stl::hash_* objects become cheap
     mpChar2Glyph = new Int2IntMap();
     mpGlyph2Char = new Int2IntMap();
 }
 
-FT_FaceRec_* FtFontInfo::GetFaceFT()
+FT_FaceRec_* FreetypeFontInfo::GetFaceFT()
 {
     if (!maFaceFT && mpFontFile->Map())
     {
@@ -253,7 +253,7 @@ FT_FaceRec_* FtFontInfo::GetFaceFT()
 }
 
 #if ENABLE_GRAPHITE
-GraphiteFaceWrapper * FtFontInfo::GetGraphiteFace()
+GraphiteFaceWrapper * FreetypeFontInfo::GetGraphiteFace()
 {
     if (mbCheckedGraphite)
         return mpGraphiteFace;
@@ -275,7 +275,7 @@ GraphiteFaceWrapper * FtFontInfo::GetGraphiteFace()
 }
 #endif
 
-void FtFontInfo::ReleaseFaceFT()
+void FreetypeFontInfo::ReleaseFaceFT()
 {
     if (--mnRefCount <= 0)
     {
@@ -293,7 +293,7 @@ static const sal_uInt32 T_true = 0x74727565;        /* 'true' */
 static const sal_uInt32 T_ttcf = 0x74746366;        /* 'ttcf' */
 static const sal_uInt32 T_otto = 0x4f54544f;        /* 'OTTO' */
 
-const unsigned char* FtFontInfo::GetTable( const char* pTag, sal_uLong* pLength ) const
+const unsigned char* FreetypeFontInfo::GetTable( const char* pTag, sal_uLong* pLength ) const
 {
     const unsigned char* pBuffer = mpFontFile->GetBuffer();
     int nFileSize = mpFontFile->GetFileSize();
@@ -329,7 +329,7 @@ const unsigned char* FtFontInfo::GetTable( const char* pTag, sal_uLong* pLength
     return nullptr;
 }
 
-void FtFontInfo::AnnounceFont( PhysicalFontCollection* pFontCollection )
+void FreetypeFontInfo::AnnounceFont( PhysicalFontCollection* pFontCollection )
 {
     ImplFTSFontData* pFD = new ImplFTSFontData( this, maDevFontAttributes );
     pFontCollection->Add( pFD );
@@ -380,7 +380,7 @@ void FreetypeManager::AddFontFile( const OString& rNormalizedName,
     if( maFontList.find( nFontId ) != maFontList.end() )
         return;
 
-    FtFontInfo* pFontInfo = new FtFontInfo( rDevFontAttr,
+    FreetypeFontInfo* pFontInfo = new FreetypeFontInfo( rDevFontAttr,
         rNormalizedName, nFaceNum, nFontId);
     maFontList[ nFontId ] = pFontInfo;
     if( mnMaxFontId < nFontId )
@@ -391,8 +391,8 @@ void FreetypeManager::AnnounceFonts( PhysicalFontCollection* pToAdd ) const
 {
     for( FontList::const_iterator it = maFontList.begin(); it != maFontList.end(); ++it )
     {
-        FtFontInfo* pFtFontInfo = it->second;
-        pFtFontInfo->AnnounceFont( pToAdd );
+        FreetypeFontInfo* pFreetypeFontInfo = it->second;
+        pFreetypeFontInfo->AnnounceFont( pToAdd );
     }
 }
 
@@ -400,15 +400,15 @@ void FreetypeManager::ClearFontList( )
 {
     for( FontList::iterator it = maFontList.begin(); it != maFontList.end(); ++it )
     {
-        FtFontInfo* pFtFontInfo = it->second;
-        delete pFtFontInfo;
+        FreetypeFontInfo* pFreetypeFontInfo = it->second;
+        delete pFreetypeFontInfo;
     }
     maFontList.clear();
 }
 
 ServerFont* FreetypeManager::CreateFont( const FontSelectPattern& rFSD )
 {
-    FtFontInfo* pFontInfo = nullptr;
+    FreetypeFontInfo* pFontInfo = nullptr;
 
     // find a FontInfo matching to the font id
     sal_IntPtr nFontId = reinterpret_cast<sal_IntPtr>( rFSD.mpFontData );
@@ -424,9 +424,9 @@ ServerFont* FreetypeManager::CreateFont( const FontSelectPattern& rFSD )
     return pNew;
 }
 
-ImplFTSFontData::ImplFTSFontData( FtFontInfo* pFI, const ImplFontAttributes& rDFA )
+ImplFTSFontData::ImplFTSFontData( FreetypeFontInfo* pFI, const ImplFontAttributes& rDFA )
 :   PhysicalFontFace( rDFA ),
-    mpFtFontInfo( pFI )
+    mpFreetypeFontInfo( pFI )
 {
     SetBuiltInFontFlag( false );
     SetOrientationFlag( true );
@@ -440,7 +440,7 @@ ImplFontEntry* ImplFTSFontData::CreateFontInstance( FontSelectPattern& rFSD ) co
 
 // ServerFont
 
-ServerFont::ServerFont( const FontSelectPattern& rFSD, FtFontInfo* pFI )
+ServerFont::ServerFont( const FontSelectPattern& rFSD, FreetypeFontInfo* pFI )
 :   maGlyphList( 0),
     maFontSelData(rFSD),
     mnRefCount(1),
@@ -976,7 +976,7 @@ const FontCharMapPtr ServerFont::GetFontCharMap() const
     return pFCMap;
 }
 
-const FontCharMapPtr FtFontInfo::GetFontCharMap()
+const FontCharMapPtr FreetypeFontInfo::GetFontCharMap()
 {
     // check if the charmap is already cached
     if( mpFontCharMap )
@@ -1000,7 +1000,7 @@ const FontCharMapPtr FtFontInfo::GetFontCharMap()
 }
 
 // TODO: merge into method GetFontCharMap()
-bool FtFontInfo::GetFontCodeRanges( CmapResult& rResult ) const
+bool FreetypeFontInfo::GetFontCodeRanges( CmapResult& rResult ) const
 {
     rResult.mbSymbolic = IsSymbolFont();
 
diff --git a/vcl/generic/glyphs/gcach_ftyp.hxx b/vcl/generic/glyphs/gcach_ftyp.hxx
index 3277777..acd74ec 100644
--- a/vcl/generic/glyphs/gcach_ftyp.hxx
+++ b/vcl/generic/glyphs/gcach_ftyp.hxx
@@ -28,13 +28,13 @@
 class GraphiteFaceWrapper;
 #endif
 
-// FtFontFile has the responsibility that a font file is only mapped once.
+// FreetypeFontFile has the responsibility that a font file is only mapped once.
 // (#86621#) the old directly ft-managed solution caused it to be mapped
 // in up to nTTC*nSizes*nOrientation*nSynthetic times
-class FtFontFile
+class FreetypeFontFile
 {
 public:
-    static FtFontFile*      FindFontFile( const OString& rNativeFileName );
+    static FreetypeFontFile*      FindFontFile( const OString& rNativeFileName );
 
     bool                    Map();
     void                    Unmap();
@@ -45,7 +45,7 @@ public:
     int                     GetLangBoost() const { return mnLangBoost; }
 
 private:
-    explicit                FtFontFile( const OString& rNativeFileName );
+    explicit                FreetypeFontFile( const OString& rNativeFileName );
 
     const OString    maNativeFileName;
     unsigned char*   mpFileMap;
@@ -54,14 +54,14 @@ private:
     int                     mnLangBoost;
 };
 
-// FtFontInfo corresponds to an unscaled font face
-class FtFontInfo
+// FreetypeFontInfo corresponds to an unscaled font face
+class FreetypeFontInfo
 {
 public:
-                           FtFontInfo( const ImplFontAttributes&,
+                           FreetypeFontInfo( const ImplFontAttributes&,
                                const OString& rNativeFileName,
                                int nFaceNum, sal_IntPtr nFontId);
-                          ~FtFontInfo();
+                          ~FreetypeFontInfo();
 
     const unsigned char*  GetTable( const char*, sal_uLong* pLength=nullptr ) const;
 
@@ -86,7 +86,7 @@ public:
 
 private:
     FT_FaceRec_*    maFaceFT;
-    FtFontFile*     mpFontFile;
+    FreetypeFontFile*     mpFontFile;
     const int       mnFaceNum;
     int             mnRefCount;
 #if ENABLE_GRAPHITE
@@ -108,7 +108,7 @@ private:
 
 // these two inlines are very important for performance
 
-inline int FtFontInfo::GetGlyphIndex( sal_UCS4 cChar ) const
+inline int FreetypeFontInfo::GetGlyphIndex( sal_UCS4 cChar ) const
 {
     if( !mpChar2Glyph )
         return -1;
@@ -118,7 +118,7 @@ inline int FtFontInfo::GetGlyphIndex( sal_UCS4 cChar ) const
     return it->second;
 }
 
-inline void FtFontInfo::CacheGlyphIndex( sal_UCS4 cChar, int nIndex ) const
+inline void FreetypeFontInfo::CacheGlyphIndex( sal_UCS4 cChar, int nIndex ) const
 {
     if( !mpChar2Glyph )
         InitHashes();
@@ -140,7 +140,7 @@ public:
     ServerFont* CreateFont( const FontSelectPattern& );
 
 private:
-    typedef std::unordered_map<sal_IntPtr,FtFontInfo*> FontList;
+    typedef std::unordered_map<sal_IntPtr,FreetypeFontInfo*> FontList;
     FontList            maFontList;
 
     sal_IntPtr          mnMaxFontId;
@@ -149,14 +149,14 @@ private:
 class ImplFTSFontData : public PhysicalFontFace
 {
 private:
-    FtFontInfo*             mpFtFontInfo;
+    FreetypeFontInfo*             mpFreetypeFontInfo;
 
 public:
-                            ImplFTSFontData( FtFontInfo*, const ImplFontAttributes& );
+                            ImplFTSFontData( FreetypeFontInfo*, const ImplFontAttributes& );
 
     virtual ImplFontEntry*  CreateFontInstance( FontSelectPattern& ) const override;
     virtual PhysicalFontFace* Clone() const override   { return new ImplFTSFontData( *this ); }
-    virtual sal_IntPtr      GetFontId() const override { return mpFtFontInfo->GetFontId(); }
+    virtual sal_IntPtr      GetFontId() const override { return mpFreetypeFontInfo->GetFontId(); }
 };
 
 #endif // INCLUDED_VCL_GENERIC_GLYPHS_GCACH_FTYP_HXX
diff --git a/vcl/inc/generic/glyphcache.hxx b/vcl/inc/generic/glyphcache.hxx
index bad1721..a14d8f0 100644
--- a/vcl/inc/generic/glyphcache.hxx
+++ b/vcl/inc/generic/glyphcache.hxx
@@ -39,7 +39,7 @@
 #include <unordered_map>
 
 class FreetypeManager;
-class FtFontInfo;
+class FreetypeFontInfo;
 class GlyphData;
 class GraphiteFaceWrapper;
 class FontConfigFontOptions;
@@ -147,7 +147,7 @@ private:
 class VCL_DLLPUBLIC ServerFont
 {
 public:
-                            ServerFont( const FontSelectPattern&, FtFontInfo* );
+                            ServerFont( const FontSelectPattern&, FreetypeFontInfo* );
     virtual                 ~ServerFont();
 
     const OString&          GetFontFileName() const;
@@ -223,7 +223,7 @@ private:
     int                     mnPrioEmbedded;
     int                     mnPrioAntiAlias;
     int                     mnPrioAutoHint;
-    FtFontInfo*             mpFontInfo;
+    FreetypeFontInfo*             mpFontInfo;
     FT_Int                  mnLoadFlags;
     double                  mfStretch;
     FT_FaceRec_*            maFaceFT;
commit 575d39c56feb2102ad3c68da960f6630c12baefa
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date:   Thu Jan 7 14:54:58 2016 +1100

    vcl: cleanup headers - remove unnecessary includes and fwd decls
    
    Change-Id: Ib3cb2d905242d2a15935c074cb6d0634102de4e5

diff --git a/vcl/inc/fontattributes.hxx b/vcl/inc/fontattributes.hxx
index e8467f8..a0a9e6d 100644
--- a/vcl/inc/fontattributes.hxx
+++ b/vcl/inc/fontattributes.hxx
@@ -20,22 +20,15 @@
 #ifndef INCLUDED_VCL_INC_FONTATTRIBUTES_HXX
 #define INCLUDED_VCL_INC_FONTATTRIBUTES_HXX
 
+#include <sal/types.h>
 #include <i18nlangtag/lang.h>
-#include <vcl/dllapi.h>
 #include <unotools/fontdefs.hxx>
+#include <vcl/dllapi.h>
 #include <vcl/vclenum.hxx>
 
 #include "fontselect.hxx"
 
-#include <unordered_map>
-
-class PhysicalFontFace;
-class ImplFontEntry;
-class ImplFontCache;
-namespace vcl { class Font; }
-class ConvertChar;
 class OutputDevice;
-class Size;
 class FontSelectPattern;
 
 class ImplFontAttributes
diff --git a/vcl/inc/outfont.hxx b/vcl/inc/outfont.hxx
index 80ed409..5049cad 100644
--- a/vcl/inc/outfont.hxx
+++ b/vcl/inc/outfont.hxx
@@ -28,7 +28,6 @@
 
 #include <unordered_map>
 
-namespace vcl { class Font; }
 class ImplFontCache;
 class ConvertChar;
 
diff --git a/vcl/inc/textlineinfo.hxx b/vcl/inc/textlineinfo.hxx
index 9686deb..807cdd6 100644
--- a/vcl/inc/textlineinfo.hxx
+++ b/vcl/inc/textlineinfo.hxx
@@ -23,16 +23,6 @@
 #include <vcl/dllapi.h>
 #include <sal/types.h>
 
-#include <unordered_map>
-
-class PhysicalFontFace;
-class ImplFontEntry;
-class ImplFontCache;
-namespace vcl { class Font; }
-class ConvertChar;
-class OutputDevice;
-class Size;
-
 class ImplTextLineInfo
 {
 private:
commit 7785c201a7e60a69f04dbf90a32f5539bebd92e4
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date:   Thu Jan 7 14:44:08 2016 +1100

    vcl: split more font classes from outfont.hxx
    
    Change-Id: Ifa10c3b954dd245ff8357b790b59316b3fb111a9

diff --git a/vcl/inc/PhysicalFontFace.hxx b/vcl/inc/PhysicalFontFace.hxx
index c79986c..6af79d7 100644
--- a/vcl/inc/PhysicalFontFace.hxx
+++ b/vcl/inc/PhysicalFontFace.hxx
@@ -24,6 +24,7 @@
 
 #include "outfont.hxx"
 #include "fontattributes.hxx"
+#include "fontselect.hxx"
 
 class ImplFontEntry;
 struct FontMatchStatus;
diff --git a/vcl/inc/fontattributes.hxx b/vcl/inc/fontattributes.hxx
index a958d04..e8467f8 100644
--- a/vcl/inc/fontattributes.hxx
+++ b/vcl/inc/fontattributes.hxx
@@ -17,15 +17,15 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#ifndef INCLUDED_VCL_INC_FONTSELECT_HXX
-#define INCLUDED_VCL_INC_FONTSELECT_HXX
+#ifndef INCLUDED_VCL_INC_FONTATTRIBUTES_HXX
+#define INCLUDED_VCL_INC_FONTATTRIBUTES_HXX
 
 #include <i18nlangtag/lang.h>
 #include <vcl/dllapi.h>
 #include <unotools/fontdefs.hxx>
 #include <vcl/vclenum.hxx>
 
-#include "outfont.hxx"
+#include "fontselect.hxx"
 
 #include <unordered_map>
 
@@ -241,6 +241,6 @@ private:
 
 };
 
-#endif // INCLUDED_VCL_INC_FONTSELECT_HXX
+#endif // INCLUDED_VCL_INC_FONTATTRIBUTES_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/fontselect.hxx b/vcl/inc/fontselect.hxx
new file mode 100644
index 0000000..595f3c9
--- /dev/null
+++ b/vcl/inc/fontselect.hxx
@@ -0,0 +1,88 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_VCL_INC_FONTSELECT_HXX
+#define INCLUDED_VCL_INC_FONTSELECT_HXX
+
+#include <vcl/dllapi.h>
+#include "fontattributes.hxx"
+
+#include <unordered_map>
+
+class PhysicalFontFace;
+class ImplFontEntry;
+class ImplFontCache;
+namespace vcl { class Font; }
+class ConvertChar;
+class OutputDevice;
+class Size;
+
+class FontSelectPatternAttributes : public ImplFontAttributes
+{
+public:
+                    FontSelectPatternAttributes( const vcl::Font&, const OUString& rSearchName,
+                                                 const Size&, float fExactHeight );
+#ifdef WNT
+                    FontSelectPatternAttributes( const PhysicalFontFace&, const Size&,
+                                                 float fExactHeight, int nOrientation, bool bVertical );
+#endif
+
+    size_t          hashCode() const;
+    bool operator==(const FontSelectPatternAttributes& rOther) const;
+    bool operator!=(const FontSelectPatternAttributes& rOther) const
+    {
+        return !(*this == rOther);
+    }
+
+public:
+    OUString        maTargetName;               // name of the font name token that is chosen
+    OUString        maSearchName;               // name of the font that matches best
+    int             mnWidth;                    // width of font in pixel units
+    int             mnHeight;                   // height of font in pixel units
+    float           mfExactHeight;              // requested height (in pixels with subpixel details)
+    int             mnOrientation;              // text orientation in 3600 system
+    LanguageType    meLanguage;                 // text language
+    bool            mbVertical;                 // vertical mode of requested font
+    bool            mbNonAntialiased;           // true if antialiasing is disabled
+
+    bool            mbEmbolden;                 // Force emboldening
+    ItalicMatrix    maItalicMatrix;             // Force matrix for slant
+};
+
+class FontSelectPattern : public FontSelectPatternAttributes
+{
+public:
+                    FontSelectPattern( const vcl::Font&, const OUString& rSearchName,
+                                       const Size&, float fExactHeight );
+#ifdef WNT
+// ifdeffed to prevent it going into unusedcode.easy
+                    FontSelectPattern( const PhysicalFontFace&, const Size&,
+                                       float fExactHeight, int nOrientation, bool bVertical );
+#endif
+
+public: // TODO: change to private
+    const PhysicalFontFace* mpFontData;         // a matching PhysicalFontFace object
+    ImplFontEntry*  mpFontEntry;                // pointer to the resulting FontCache entry
+
+    void            copyAttributes(const FontSelectPatternAttributes &rAttributes);
+};
+
+#endif // INCLUDED_VCL_INC_FONTSELECT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/outfont.hxx b/vcl/inc/outfont.hxx
index cb5b983..80ed409 100644
--- a/vcl/inc/outfont.hxx
+++ b/vcl/inc/outfont.hxx
@@ -20,70 +20,17 @@
 #ifndef INCLUDED_VCL_INC_OUTFONT_HXX
 #define INCLUDED_VCL_INC_OUTFONT_HXX
 
+#include <sal/types.h>
 #include <vcl/dllapi.h>
+
+#include "fontselect.hxx"
 #include "fontattributes.hxx"
 
 #include <unordered_map>
 
-class PhysicalFontFace;
-class ImplFontEntry;
-class ImplFontCache;
 namespace vcl { class Font; }
+class ImplFontCache;
 class ConvertChar;
-class OutputDevice;
-class Size;
-
-class FontSelectPatternAttributes : public ImplFontAttributes
-{
-public:
-                    FontSelectPatternAttributes( const vcl::Font&, const OUString& rSearchName,
-                                                 const Size&, float fExactHeight );
-#ifdef WNT
-                    FontSelectPatternAttributes( const PhysicalFontFace&, const Size&,
-                                                 float fExactHeight, int nOrientation, bool bVertical );
-#endif
-
-    size_t          hashCode() const;
-    bool operator==(const FontSelectPatternAttributes& rOther) const;
-    bool operator!=(const FontSelectPatternAttributes& rOther) const
-    {
-        return !(*this == rOther);
-    }
-
-public:
-    OUString        maTargetName;               // name of the font name token that is chosen
-    OUString        maSearchName;               // name of the font that matches best
-    int             mnWidth;                    // width of font in pixel units
-    int             mnHeight;                   // height of font in pixel units
-    float           mfExactHeight;              // requested height (in pixels with subpixel details)
-    int             mnOrientation;              // text orientation in 3600 system
-    LanguageType    meLanguage;                 // text language
-    bool            mbVertical;                 // vertical mode of requested font
-    bool            mbNonAntialiased;           // true if antialiasing is disabled
-
-    bool            mbEmbolden;                 // Force emboldening
-    ItalicMatrix    maItalicMatrix;             // Force matrix for slant
-};
-
-class FontSelectPattern : public FontSelectPatternAttributes
-{
-public:
-                    FontSelectPattern( const vcl::Font&, const OUString& rSearchName,
-                                       const Size&, float fExactHeight );
-#ifdef WNT
-// ifdeffed to prevent it going into unusedcode.easy
-                    FontSelectPattern( const PhysicalFontFace&, const Size&,
-                                       float fExactHeight, int nOrientation, bool bVertical );
-#endif
-
-public: // TODO: change to private
-    const PhysicalFontFace* mpFontData;         // a matching PhysicalFontFace object
-    ImplFontEntry*  mpFontEntry;                // pointer to the resulting FontCache entry
-
-    void            copyAttributes(const FontSelectPatternAttributes &rAttributes);
-};
-
-// - ImplFontEntry -
 
 // TODO: rename ImplFontEntry to LogicalFontInstance
 // TODO: allow sharing of metrics for related fonts
@@ -121,56 +68,6 @@ private:
     UnicodeFallbackList* mpUnicodeFallbackList;
 };
 
-class ImplTextLineInfo
-{
-private:
-    long        mnWidth;
-    sal_Int32   mnIndex;
-    sal_Int32   mnLen;
-
-public:
-   ImplTextLineInfo( long nWidth, sal_Int32 nIndex, sal_Int32 nLen )
-   {
-       if(nIndex == -1 || nIndex == 0x0FFFF || nLen == -1 || nLen == 0x0FFFF)
-       {
-            SAL_INFO("sal.rtl.xub",
-                     "ImplTextLine Info Suspicious arguments nIndex:" << nIndex << " nLen:" << nLen);
-       }
-       mnWidth = nWidth;
-       mnIndex = nIndex;
-       mnLen   = nLen;
-   }
-
-    long       GetWidth() const { return mnWidth; }
-    sal_Int32  GetIndex() const { return mnIndex; }
-    sal_Int32  GetLen() const { return mnLen; }
-};
-
-#define MULTITEXTLINEINFO_RESIZE    16
-
-class ImplMultiTextLineInfo
-{
-public:
-                ImplMultiTextLineInfo();
-                ~ImplMultiTextLineInfo();
-
-    void        AddLine( ImplTextLineInfo* pLine );
-    void        Clear();
-
-    ImplTextLineInfo* GetLine( sal_Int32 nLine ) const
-                            { return mpLines[nLine]; }
-    sal_Int32   Count() const { return mnLines; }
-
-private:
-    ImplMultiTextLineInfo( const ImplMultiTextLineInfo& ) = delete;
-    ImplMultiTextLineInfo& operator=( const ImplMultiTextLineInfo& ) = delete;
-
-    ImplTextLineInfo**  mpLines;
-    sal_Int32   mnLines;
-    sal_Int32   mnSize;
-
-};
-
 #endif // INCLUDED_VCL_INC_OUTFONT_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/textlineinfo.hxx b/vcl/inc/textlineinfo.hxx
new file mode 100644
index 0000000..9686deb
--- /dev/null
+++ b/vcl/inc/textlineinfo.hxx
@@ -0,0 +1,88 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#ifndef INCLUDED_VCL_INC_TEXTLINEINFO_HXX
+#define INCLUDED_VCL_INC_TEXTLINEINFO_HXX
+
+#include <vcl/dllapi.h>
+#include <sal/types.h>
+
+#include <unordered_map>
+
+class PhysicalFontFace;
+class ImplFontEntry;
+class ImplFontCache;
+namespace vcl { class Font; }
+class ConvertChar;
+class OutputDevice;
+class Size;
+
+class ImplTextLineInfo
+{
+private:
+    long        mnWidth;
+    sal_Int32   mnIndex;
+    sal_Int32   mnLen;
+
+public:
+   ImplTextLineInfo( long nWidth, sal_Int32 nIndex, sal_Int32 nLen )
+   {
+       if(nIndex == -1 || nIndex == 0x0FFFF || nLen == -1 || nLen == 0x0FFFF)
+       {
+            SAL_INFO("sal.rtl.xub",
+                     "ImplTextLine Info Suspicious arguments nIndex:" << nIndex << " nLen:" << nLen);
+       }
+       mnWidth = nWidth;
+       mnIndex = nIndex;
+       mnLen   = nLen;
+   }
+
+    long       GetWidth() const { return mnWidth; }
+    sal_Int32  GetIndex() const { return mnIndex; }
+    sal_Int32  GetLen() const { return mnLen; }
+};
+
+#define MULTITEXTLINEINFO_RESIZE    16
+
+class ImplMultiTextLineInfo
+{
+public:
+                ImplMultiTextLineInfo();
+                ~ImplMultiTextLineInfo();
+
+    void        AddLine( ImplTextLineInfo* pLine );
+    void        Clear();
+
+    ImplTextLineInfo* GetLine( sal_Int32 nLine ) const
+                            { return mpLines[nLine]; }
+    sal_Int32   Count() const { return mnLines; }
+
+private:
+    ImplMultiTextLineInfo( const ImplMultiTextLineInfo& ) = delete;
+    ImplMultiTextLineInfo& operator=( const ImplMultiTextLineInfo& ) = delete;
+
+    ImplTextLineInfo**  mpLines;
+    sal_Int32   mnLines;
+    sal_Int32   mnSize;
+
+};
+
+#endif // INCLUDED_VCL_INC_TEXTLINEINFO_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 7a53504..14cfa6c 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -67,6 +67,7 @@
 #include "salgdi.hxx"
 #include "sallayout.hxx"
 #include "textlayout.hxx"
+#include "textlineinfo.hxx"
 
 #include "pdfwriter_impl.hxx"
 
diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx
index b396e53..762e33a 100644
--- a/vcl/source/outdev/text.cxx
+++ b/vcl/source/outdev/text.cxx
@@ -47,6 +47,8 @@
 #include <svdata.hxx>
 #include <textlayout.hxx>
 
+#include "textlineinfo.hxx"
+
 #include <config_graphite.h>
 #if ENABLE_GRAPHITE
 #include "graphite_features.hxx"


More information about the Libreoffice-commits mailing list