[Libreoffice-commits] core.git: include/vcl vcl/inc vcl/qa vcl/source

Chris Sherlock chris.sherlock79 at gmail.com
Wed Jan 13 09:20:22 PST 2016


 include/vcl/metric.hxx        |    2 ++
 vcl/inc/impfont.hxx           |   10 +++++++---
 vcl/qa/cppunit/fontmetric.cxx |   21 +++++++++++++++++++--
 vcl/source/gdi/metric.cxx     |   17 ++++++++++++++---
 vcl/source/outdev/font.cxx    |    6 ++----
 5 files changed, 44 insertions(+), 12 deletions(-)

New commits:
commit e3746c66929f4f038d1dee58b4fa222fb3c31951
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date:   Wed Jan 13 17:14:53 2016 +1100

    vcl: Create accessor and mutator for builtin font flag in FontMetric
    
    Accessor and mutator created for builtin font flag, removed the
    existing bit field.
    
    See commit description in 8bfccd3a71d911b6d ("vcl: Create accessor
    and mutator for font scaling in FontMetric") for reasoning behind
    patch.
    
    Unit tests
    - check to ensure that can set builtin font flag
    - check equality operator on FontMetric after setting builtin font
      flag
    
    Change-Id: Iac3f4270f86d10f9dcd0bb6e3951c0e983a4f22f
    Reviewed-on: https://gerrit.libreoffice.org/21414
    Reviewed-by: Chris Sherlock <chris.sherlock79 at gmail.com>
    Tested-by: Chris Sherlock <chris.sherlock79 at gmail.com>

diff --git a/include/vcl/metric.hxx b/include/vcl/metric.hxx
index f3de018..7b3694d 100644
--- a/include/vcl/metric.hxx
+++ b/include/vcl/metric.hxx
@@ -56,9 +56,11 @@ public:
 
     bool                IsScalable() const;
     bool                IsFullstopCentered() const;
+    bool                IsBuiltInFont() const;
 
     void                SetScalableFlag(bool);
     void                SetFullstopCenteredFlag(bool);
+    void                SetBuiltInFontFlag(bool);
 
     FontMetric&         operator=( const FontMetric& rMetric );
     bool                operator==( const FontMetric& rMetric ) const;
diff --git a/vcl/inc/impfont.hxx b/vcl/inc/impfont.hxx
index 5367a77..13c7801 100644
--- a/vcl/inc/impfont.hxx
+++ b/vcl/inc/impfont.hxx
@@ -106,11 +106,12 @@ private:
 
     bool                mbScalableFont;
     bool                mbFullstopCentered;
+    bool                mbDevice;
 
     // TODO: As these are progressively moved from bit fields into boolean variables, comment them out.
     // Eventually this enum will not be needed and we can remove it.
     enum {
-        DEVICE_FLAG=1,
+        /* DEVICE_FLAG=1, */
         /* SCALABLE_FLAG=2, */
         LATIN_FLAG=4,
         CJK_FLAG=8,
@@ -136,9 +137,12 @@ public:
 
     bool                IsScalable() const                          { return mbScalableFont; }
     bool                IsFullstopCentered() const                  { return mbFullstopCentered; }
+    bool                IsBuiltInFont() const                       { return mbDevice; }
+
+    void                SetScalableFlag( bool bScalable )           { mbScalableFont = bScalable; }
+    void                SetFullstopCenteredFlag( bool bCentered )   { mbFullstopCentered = bCentered; }
+    void                SetBuiltInFontFlag( bool bIsBuiltInFont )   { mbDevice = bIsBuiltInFont; }
 
-    void                SetScalableFlag(bool bScalable)             { mbScalableFont = bScalable; }
-    void                SetFullstopCenteredFlag(bool bCentered)     { mbFullstopCentered = bCentered; }
 };
 
 
diff --git a/vcl/qa/cppunit/fontmetric.cxx b/vcl/qa/cppunit/fontmetric.cxx
index 1428cfb..f434ae0 100644
--- a/vcl/qa/cppunit/fontmetric.cxx
+++ b/vcl/qa/cppunit/fontmetric.cxx
@@ -23,11 +23,13 @@ public:
 
     void testScalableFlag();
     void testFullstopCenteredFlag();
+    void testBuiltInFontFlag();
     void testEqualityOperator();
 
     CPPUNIT_TEST_SUITE(VclFontMetricTest);
     CPPUNIT_TEST(testScalableFlag);
     CPPUNIT_TEST(testFullstopCenteredFlag);
+    CPPUNIT_TEST(testBuiltInFontFlag);
     CPPUNIT_TEST(testEqualityOperator);
     CPPUNIT_TEST_SUITE_END();
 };
@@ -44,7 +46,6 @@ void VclFontMetricTest::testScalableFlag()
     CPPUNIT_ASSERT_MESSAGE( "Scalable flag should be true", aFontMetric.IsScalable() );
 }
 
-
 void VclFontMetricTest::testFullstopCenteredFlag()
 {
     // default constructor should set scalable flag to false
@@ -57,6 +58,17 @@ void VclFontMetricTest::testFullstopCenteredFlag()
     CPPUNIT_ASSERT_MESSAGE( "Fullstop centered flag should be true", aFontMetric.IsFullstopCentered() );
 }
 
+void VclFontMetricTest::testBuiltInFontFlag()
+{
+    // default constructor should set scalable flag to false
+    FontMetric aFontMetric;
+
+    CPPUNIT_ASSERT_MESSAGE( "Built-in font flag should be false after default constructor called", !aFontMetric.IsBuiltInFont() );
+
+    aFontMetric.SetBuiltInFontFlag(true);
+
+    CPPUNIT_ASSERT_MESSAGE( "Built-in font flag should be true", aFontMetric.IsBuiltInFont() );
+}
 
 void VclFontMetricTest::testEqualityOperator()
 {
@@ -71,7 +83,12 @@ void VclFontMetricTest::testEqualityOperator()
     aLhs.SetFullstopCenteredFlag(true);
     aRhs.SetFullstopCenteredFlag(true);
 
-    CPPUNIT_ASSERT_MESSAGE( "Fullstop centered flag set same", aLhs == aRhs );
+    CPPUNIT_ASSERT_MESSAGE( "Scalable font flag set same", aLhs == aRhs );
+
+    aLhs.SetBuiltInFontFlag(true);
+    aRhs.SetBuiltInFontFlag(true);
+
+    CPPUNIT_ASSERT_MESSAGE( "Scalable font flag set same", aLhs == aRhs );
 }
 
 
diff --git a/vcl/source/gdi/metric.cxx b/vcl/source/gdi/metric.cxx
index 089e421..c7f5253 100644
--- a/vcl/source/gdi/metric.cxx
+++ b/vcl/source/gdi/metric.cxx
@@ -36,7 +36,8 @@ ImplFontMetric::ImplFontMetric()
     mnMiscFlags( 0 ),
     mnRefCount( 1 ),
     mbScalableFont( false ),
-    mbFullstopCentered( false )
+    mbFullstopCentered( false ),
+    mbDevice( false )
 {}
 
 inline void ImplFontMetric::AddReference()
@@ -54,8 +55,9 @@ inline void ImplFontMetric::DeReference()
 
 bool ImplFontMetric::operator==( const ImplFontMetric& r ) const
 {
-    if( mbScalableFont != r.mbScalableFont
-        || mbFullstopCentered != r.mbFullstopCentered )
+    if(    mbScalableFont     != r.mbScalableFont
+        || mbFullstopCentered != r.mbFullstopCentered
+        || mbDevice           != r.mbDevice)
         return false;
     if( mnMiscFlags  != r.mnMiscFlags )
         return false;
@@ -174,4 +176,13 @@ void FontMetric::SetFullstopCenteredFlag(bool bScalable)
     mpImplMetric->SetFullstopCenteredFlag( bScalable );
 }
 
+bool FontMetric::IsBuiltInFont() const
+{
+    return mpImplMetric->IsBuiltInFont();
+}
+
+void FontMetric::SetBuiltInFontFlag( bool bIsBuiltInFont )
+{
+    mpImplMetric->SetBuiltInFontFlag( bIsBuiltInFont );
+}
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx
index 923347c..e56e07d 100644
--- a/vcl/source/outdev/font.cxx
+++ b/vcl/source/outdev/font.cxx
@@ -83,8 +83,7 @@ FontMetric OutputDevice::GetDevFont( int nDevFontIndex ) const
         aFontMetric.SetItalic( rData.GetSlantType() );
         aFontMetric.SetWidthType( rData.GetWidthType() );
         aFontMetric.SetScalableFlag( rData.IsScalable() );
-        if( rData.IsBuiltInFont() )
-            aFontMetric.mpImplMetric->mnMiscFlags |= ImplFontMetric::DEVICE_FLAG;
+        aFontMetric.SetBuiltInFontFlag( rData.IsBuiltInFont() );
     }
 
     return aFontMetric;
@@ -214,8 +213,7 @@ FontMetric OutputDevice::GetFontMetric() const
 
     // set remaining metric fields
     aMetric.mpImplMetric->mnMiscFlags   = 0;
-    if( pFontAttributes->IsBuiltInFont() )
-            aMetric.mpImplMetric->mnMiscFlags |= ImplFontMetric::DEVICE_FLAG;
+    aMetric.SetBuiltInFontFlag( pFontAttributes->IsBuiltInFont() );
     aMetric.SetScalableFlag( pFontAttributes->IsScalable() );
     aMetric.SetFullstopCenteredFlag( pFontAttributes->IsFullstopCentered() );
     aMetric.mpImplMetric->mnBulletOffset = pFontAttributes->GetBulletOffset();


More information about the Libreoffice-commits mailing list