[Libreoffice-commits] core.git: cui/source framework/source include/vcl starmath/source svtools/source sw/source toolkit/source vcl/source vcl/workben

Chris Sherlock (via logerrit) logerrit at kemper.freedesktop.org
Sat Sep 18 09:52:26 UTC 2021


 cui/source/dialogs/cuicharmap.cxx                     |    6 ++--
 framework/source/uielement/fontsizemenucontroller.cxx |    2 -
 include/vcl/metric.hxx                                |    7 +++--
 include/vcl/outdev.hxx                                |    4 +-
 starmath/source/document.cxx                          |    2 -
 starmath/source/view.cxx                              |    2 -
 svtools/source/control/ctrltool.cxx                   |    6 ++--
 sw/source/ui/config/optpage.cxx                       |    4 +-
 sw/source/ui/dialog/ascfldlg.cxx                      |    4 +-
 toolkit/source/awt/vclxdevice.cxx                     |    4 +-
 vcl/source/font/fontmetric.cxx                        |   15 ++++++++++
 vcl/source/outdev/font.cxx                            |   25 +++---------------
 vcl/workben/svptest.cxx                               |    4 +-
 13 files changed, 44 insertions(+), 41 deletions(-)

New commits:
commit c2e6a068c112f4c5866b6371d02362bd71f903a3
Author:     Chris Sherlock <chris.sherlock79 at gmail.com>
AuthorDate: Wed Sep 8 12:07:48 2021 +1000
Commit:     Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Sat Sep 18 11:51:52 2021 +0200

    vcl: create FontMetric from PhysicalFontFace
    
    A FontMetric can be created from a PhysicalFontFace, so setup a
    constructor that takes a PhysicalFontFace object to instantiate the
    FontMetric.
    
    The OutputDevice functions GetDevFont() and GetDevFontCount() don't
    necessarily make much sense, so have changed GetDevFont() to
    GetFontMetricFromCollection() and GetDevFontCount() to
    GetFontFaceCollectionCount().
    
    Change-Id: I1577679b949a49a7cf1248838786d0f5e84a5245
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121796
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/cui/source/dialogs/cuicharmap.cxx b/cui/source/dialogs/cuicharmap.cxx
index c8bf07cc5794..acdacbd803c0 100644
--- a/cui/source/dialogs/cuicharmap.cxx
+++ b/cui/source/dialogs/cuicharmap.cxx
@@ -451,12 +451,12 @@ void SvxCharacterMap::init()
 
     OUString aDefStr( aFont.GetFamilyName() );
     OUString aLastName;
-    int nCount = m_xVirDev->GetDevFontCount();
+    int nCount = m_xVirDev->GetFontFaceCollectionCount();
     std::vector<weld::ComboBoxEntry> aEntries;
     aEntries.reserve(nCount);
     for (int i = 0; i < nCount; ++i)
     {
-        OUString aFontName( m_xVirDev->GetDevFont( i ).GetFamilyName() );
+        OUString aFontName( m_xVirDev->GetFontMetricFromCollection( i ).GetFamilyName() );
         if (aFontName != aLastName)
         {
             aLastName = aFontName;
@@ -657,7 +657,7 @@ void SvxCharacterMap::insertCharToDoc(const OUString& sGlyph)
 IMPL_LINK_NOARG(SvxCharacterMap, FontSelectHdl, weld::ComboBox&, void)
 {
     const sal_uInt32 nFont = m_xFontLB->get_active_id().toUInt32();
-    aFont = m_xVirDev->GetDevFont(nFont);
+    aFont = m_xVirDev->GetFontMetricFromCollection(nFont);
     aFont.SetWeight( WEIGHT_DONTKNOW );
     aFont.SetItalic( ITALIC_NONE );
     aFont.SetWidthType( WIDTH_DONTKNOW );
diff --git a/framework/source/uielement/fontsizemenucontroller.cxx b/framework/source/uielement/fontsizemenucontroller.cxx
index 4a70e0ab2e5f..0a90c125ec84 100644
--- a/framework/source/uielement/fontsizemenucontroller.cxx
+++ b/framework/source/uielement/fontsizemenucontroller.cxx
@@ -150,7 +150,7 @@ void FontSizeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > co
     if ( !aPrinterName.isEmpty() )
     {
         pInfoPrinter.disposeAndReset(VclPtr<Printer>::Create( aPrinterName ));
-        if ( pInfoPrinter && pInfoPrinter->GetDevFontCount() > 0 )
+        if ( pInfoPrinter && pInfoPrinter->GetFontFaceCollectionCount() > 0 )
             pFontList.reset(new FontList( pInfoPrinter.get() ));
     }
 
diff --git a/include/vcl/metric.hxx b/include/vcl/metric.hxx
index 9de279fd222d..5af0629950de 100644
--- a/include/vcl/metric.hxx
+++ b/include/vcl/metric.hxx
@@ -20,12 +20,14 @@
 #ifndef INCLUDED_VCL_METRIC_HXX
 #define INCLUDED_VCL_METRIC_HXX
 
-#include <vcl/dllapi.h>
-#include <vcl/font.hxx>
 #include <tools/ref.hxx>
 #include <tools/gen.hxx>
 
+#include <vcl/dllapi.h>
+#include <vcl/font.hxx>
+
 class FontCharMap;
+class PhysicalFontFace;
 
 typedef tools::SvRef<FontCharMap> FontCharMapRef;
 
@@ -34,6 +36,7 @@ class VCL_DLLPUBLIC FontMetric : public vcl::Font
 public:
     explicit            FontMetric();
                         FontMetric( const FontMetric& );  // TODO make this explicit
+                        FontMetric(PhysicalFontFace const& rFace);
                         ~FontMetric() override;
 
     tools::Long                GetAscent() const                           { return mnAscent; }
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index 54703cb88d34..d0a4ec03bd84 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -1110,8 +1110,8 @@ private:
 
 public:
 
-    FontMetric                  GetDevFont( int nDevFontIndex ) const;
-    int                         GetDevFontCount() const;
+    FontMetric                  GetFontMetricFromCollection( int nDevFontIndex ) const;
+    int                         GetFontFaceCollectionCount() const;
 
     bool                        IsFontAvailable( const OUString& rFontName ) const;
 
diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx
index 4acba208a61e..0a0646988c80 100644
--- a/starmath/source/document.cxx
+++ b/starmath/source/document.cxx
@@ -872,7 +872,7 @@ void SmDocShell::Execute(SfxRequest& rReq)
         {
             // get device used to retrieve the FontList
             OutputDevice *pDev = GetPrinter();
-            if (!pDev || pDev->GetDevFontCount() == 0)
+            if (!pDev || pDev->GetFontFaceCollectionCount() == 0)
                 pDev = &SM_MOD()->GetDefaultVirtualDev();
             OSL_ENSURE (pDev, "device for font list missing" );
 
diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx
index a5d427d89cdc..c82b414bb131 100644
--- a/starmath/source/view.cxx
+++ b/starmath/source/view.cxx
@@ -1937,7 +1937,7 @@ void SmViewShell::Execute(SfxRequest& rReq)
             // get device used to retrieve the FontList
             SmDocShell *pDoc = GetDoc();
             OutputDevice *pDev = pDoc->GetPrinter();
-            if (!pDev || pDev->GetDevFontCount() == 0)
+            if (!pDev || pDev->GetFontFaceCollectionCount() == 0)
                 pDev = &SM_MOD()->GetDefaultVirtualDev();
             SAL_WARN_IF( !pDev, "starmath", "device for font list missing" );
 
diff --git a/svtools/source/control/ctrltool.cxx b/svtools/source/control/ctrltool.cxx
index f9c7f30c6b97..14968cdf77f0 100644
--- a/svtools/source/control/ctrltool.cxx
+++ b/svtools/source/control/ctrltool.cxx
@@ -252,16 +252,16 @@ void FontList::ImplInsertFonts(OutputDevice* pDevice, bool bInsertData)
         nType = FontListFontNameType::PRINTER;
 
     // inquire all fonts from the device
-    int n = pDevice->GetDevFontCount();
+    int n = pDevice->GetFontFaceCollectionCount();
     if (n == 0 && comphelper::LibreOfficeKit::isActive())
     {
         pDevice->RefreshFontData(true);
-        n = pDevice->GetDevFontCount();
+        n = pDevice->GetFontFaceCollectionCount();
     }
 
     for (int i = 0; i < n; ++i)
     {
-        FontMetric aFontMetric = pDevice->GetDevFont( i );
+        FontMetric aFontMetric = pDevice->GetFontMetricFromCollection( i );
         OUString aSearchName(aFontMetric.GetFamilyName());
         ImplFontListNameInfo*   pData;
         sal_uInt32              nIndex;
diff --git a/sw/source/ui/config/optpage.cxx b/sw/source/ui/config/optpage.cxx
index de601d0a6b7f..a8c7dba32850 100644
--- a/sw/source/ui/config/optpage.cxx
+++ b/sw/source/ui/config/optpage.cxx
@@ -766,10 +766,10 @@ void SwStdFontTabPage::Reset( const SfxItemSet* rSet)
     {
         // get the set of distinct available family names
         std::set< OUString > aFontNames;
-        int nFontNames = m_pPrt->GetDevFontCount();
+        int nFontNames = m_pPrt->GetFontFaceCollectionCount();
         for( int i = 0; i < nFontNames; i++ )
         {
-            FontMetric aFontMetric( m_pPrt->GetDevFont( i ) );
+            FontMetric aFontMetric( m_pPrt->GetFontMetricFromCollection( i ) );
             aFontNames.insert( aFontMetric.GetFamilyName() );
         }
 
diff --git a/sw/source/ui/dialog/ascfldlg.cxx b/sw/source/ui/dialog/ascfldlg.cxx
index 5ed597d7fc83..895c0398feb2 100644
--- a/sw/source/ui/dialog/ascfldlg.cxx
+++ b/sw/source/ui/dialog/ascfldlg.cxx
@@ -204,10 +204,10 @@ SwAsciiFilterDlg::SwAsciiFilterDlg( weld::Window* pParent, SwDocShell& rDocSh,
 
             // get the set of distinct available family names
             std::set< OUString > aFontNames;
-            int nFontNames = pPrt->GetDevFontCount();
+            int nFontNames = pPrt->GetFontFaceCollectionCount();
             for( int i = 0; i < nFontNames; i++ )
             {
-                FontMetric aFontMetric( pPrt->GetDevFont( i ) );
+                FontMetric aFontMetric( pPrt->GetFontMetricFromCollection( i ) );
                 aFontNames.insert( aFontMetric.GetFamilyName() );
             }
 
diff --git a/toolkit/source/awt/vclxdevice.cxx b/toolkit/source/awt/vclxdevice.cxx
index d82e1a6ec905..72b0618d5a2a 100644
--- a/toolkit/source/awt/vclxdevice.cxx
+++ b/toolkit/source/awt/vclxdevice.cxx
@@ -98,13 +98,13 @@ css::uno::Sequence< css::awt::FontDescriptor > VCLXDevice::getFontDescriptors(
     css::uno::Sequence< css::awt::FontDescriptor> aFonts;
     if( mpOutputDevice )
     {
-        int nFonts = mpOutputDevice->GetDevFontCount();
+        int nFonts = mpOutputDevice->GetFontFaceCollectionCount();
         if ( nFonts )
         {
             aFonts = css::uno::Sequence< css::awt::FontDescriptor>( nFonts );
             css::awt::FontDescriptor* pFonts = aFonts.getArray();
             for ( int n = 0; n < nFonts; n++ )
-                pFonts[n] = VCLUnoHelper::CreateFontDescriptor( mpOutputDevice->GetDevFont( n ) );
+                pFonts[n] = VCLUnoHelper::CreateFontDescriptor( mpOutputDevice->GetFontMetricFromCollection( n ) );
         }
     }
     return aFonts;
diff --git a/vcl/source/font/fontmetric.cxx b/vcl/source/font/fontmetric.cxx
index 817025286b37..03996cd7a4d8 100644
--- a/vcl/source/font/fontmetric.cxx
+++ b/vcl/source/font/fontmetric.cxx
@@ -24,6 +24,7 @@
 #include <vcl/outdev.hxx>
 #include <sal/log.hxx>
 
+#include <PhysicalFontFace.hxx>
 #include <fontinstance.hxx>
 #include <fontselect.hxx>
 #include <impfontmetricdata.hxx>
@@ -50,6 +51,20 @@ FontMetric::FontMetric()
 
 FontMetric::FontMetric( const FontMetric& rFontMetric ) = default;
 
+FontMetric::FontMetric(PhysicalFontFace const& rFace)
+{
+    SetFamilyName(rFace.GetFamilyName());
+    SetStyleName(rFace.GetStyleName());
+    SetCharSet(rFace.GetCharSet());
+    SetFamily(rFace.GetFamilyType());
+    SetPitch(rFace.GetPitch());
+    SetWeight(rFace.GetWeight());
+    SetItalic(rFace.GetItalic());
+    SetAlignment(TextAlign::ALIGN_TOP);
+    SetWidthType(rFace.GetWidthType());
+    SetQuality(rFace.GetQuality() );
+}
+
 FontMetric::~FontMetric()
 {
 }
diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx
index ed6f5be095b8..e2d8d4ef471c 100644
--- a/vcl/source/outdev/font.cxx
+++ b/vcl/source/outdev/font.cxx
@@ -95,32 +95,17 @@ void OutputDevice::SetFont( const vcl::Font& rNewFont )
     mpAlphaVDev->SetFont( aFont );
 }
 
-FontMetric OutputDevice::GetDevFont( int nDevFontIndex ) const
+FontMetric OutputDevice::GetFontMetricFromCollection(int nDevFontIndex) const
 {
-    FontMetric aFontMetric;
-
     ImplInitFontList();
 
-    int nCount = GetDevFontCount();
-    if( nDevFontIndex < nCount )
-    {
-        const PhysicalFontFace& rData = *mpFontFaceCollection->Get( nDevFontIndex );
-        aFontMetric.SetFamilyName( rData.GetFamilyName() );
-        aFontMetric.SetStyleName( rData.GetStyleName() );
-        aFontMetric.SetCharSet( rData.GetCharSet() );
-        aFontMetric.SetFamily( rData.GetFamilyType() );
-        aFontMetric.SetPitch( rData.GetPitch() );
-        aFontMetric.SetWeight( rData.GetWeight() );
-        aFontMetric.SetItalic( rData.GetItalic() );
-        aFontMetric.SetAlignment( TextAlign::ALIGN_TOP );
-        aFontMetric.SetWidthType( rData.GetWidthType() );
-        aFontMetric.SetQuality( rData.GetQuality() );
-    }
+    if (nDevFontIndex < GetFontFaceCollectionCount())
+        return FontMetric(*mpFontFaceCollection->Get(nDevFontIndex));
 
-    return aFontMetric;
+    return FontMetric();
 }
 
-int OutputDevice::GetDevFontCount() const
+int OutputDevice::GetFontFaceCollectionCount() const
 {
     if( !mpFontFaceCollection )
     {
diff --git a/vcl/workben/svptest.cxx b/vcl/workben/svptest.cxx
index 988b0d9d164f..2bc3ad4adb7c 100644
--- a/vcl/workben/svptest.cxx
+++ b/vcl/workben/svptest.cxx
@@ -226,12 +226,12 @@ void MyWin::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rR
                          Size(aPaperSize.Width() - 600,
                               aPaperSize.Height() - 600)));
 
-    const int nFontCount = rRenderContext.GetDevFontCount();
+    const int nFontCount = rRenderContext.GetFontFaceCollectionCount();
     const int nFontSamples = (nFontCount < 15) ? nFontCount : 15;
     for (int i = 0; i < nFontSamples; ++i)
     {
 
-        FontMetric aFont = rRenderContext.GetDevFont((i * nFontCount) / nFontSamples);
+        FontMetric aFont(rRenderContext.GetFontMetricFromCollection((i * nFontCount) / nFontSamples));
         aFont.SetFontHeight(400 + (i % 7) * 100);
         aFont.SetOrientation(Degree10(i * (3600 / nFontSamples)));
         rRenderContext.SetFont(aFont);


More information about the Libreoffice-commits mailing list