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

Chris Sherlock chris.sherlock79 at gmail.com
Wed Jan 13 13:33:52 PST 2016


 include/vcl/metric.hxx        |    1 
 vcl/inc/impfont.hxx           |    1 
 vcl/qa/cppunit/fontmetric.cxx |    7 ++++-
 vcl/source/gdi/metric.cxx     |    5 ++++
 vcl/source/outdev/font.cxx    |   52 +++++++++++++++++++++---------------------
 vcl/workben/svpclient.cxx     |   19 +++++++++++++--
 6 files changed, 56 insertions(+), 29 deletions(-)

New commits:
commit d9c20d142539b53b052937274efd2e576d0712ec
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date:   Thu Jan 14 08:33:12 2016 +1100

    vcl: (workbench) check error status of socket writes
    
    Change-Id: I0825a4e1a0dc49d7ab2d74ad4b11cfb8baf973f7

diff --git a/vcl/workben/svpclient.cxx b/vcl/workben/svpclient.cxx
index 1d25daf..65d16c1 100644
--- a/vcl/workben/svpclient.cxx
+++ b/vcl/workben/svpclient.cxx
@@ -44,6 +44,7 @@
 #include <math.h>
 
 #include <errno.h>
+#include <string.h>
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -214,8 +215,22 @@ OString MyWin::processCommand( const OString& rCommand )
         else
         {
             ssize_t nBytes = 0;
-            write( nSocket, rCommand.getStr(), rCommand.getLength() );
-            write( nSocket, "\n", 1 );
+            ssize_t fd = 0;
+            fd = write( nSocket, rCommand.getStr(), rCommand.getLength() );
+
+            if (fd == 0)
+                SAL_WARN("vcl", "Connection closed on other end");
+            else if (fd < 0)
+                SAL_WARN("vcl", "Error writing to socket: " << strerror( errno ));
+
+            fd = write( nSocket, "\n", 1 );
+
+            if (fd == 0)
+                SAL_WARN("vcl", "Connection closed on other end");
+            else if (fd < 0)
+                SAL_WARN("vcl", "Error writing to socket: " << strerror( errno ));
+
+
             char buf[256];
             do
             {
commit a5bc28e073c2dd1eb8ad733687dc827e6bac31bd
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date:   Thu Jan 14 08:15:40 2016 +1100

    vcl: Create mutator for line height attribute in FontMetric
    
    Mutator created for line height in attribute FontMetric.
    
    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 get and set line height attribute
    - check equality operator on FontMetric after setting line height
      attribute
    
    Change-Id: I86dff217fa24850b5f9d04a17ddda464dfb0156a

diff --git a/include/vcl/metric.hxx b/include/vcl/metric.hxx
index 0a7d0e6..e4e6661 100644
--- a/include/vcl/metric.hxx
+++ b/include/vcl/metric.hxx
@@ -58,6 +58,7 @@ public:
     void                SetDescent(long);
     void                SetExternalLeading(long);
     void                SetInternalLeading(long);
+    void                SetLineHeight(long);
 
     bool                IsScalable() const;
     bool                IsFullstopCentered() const;
diff --git a/vcl/inc/impfont.hxx b/vcl/inc/impfont.hxx
index 182f4e8..e0a1ca1 100644
--- a/vcl/inc/impfont.hxx
+++ b/vcl/inc/impfont.hxx
@@ -127,6 +127,7 @@ public:
     void                SetDescent( long nDescent )                 { mnDescent = nDescent; }
     void                SetInternalLeading( long nIntLeading )      { mnIntLeading = nIntLeading; }
     void                SetExternalLeading( long nExtLeading )      { mnExtLeading = nExtLeading; }
+    void                SetLineHeight( long nHeight )               { mnLineHeight = nHeight; }
 
     bool                IsScalable() const                          { return mbScalableFont; }
     bool                IsFullstopCentered() const                  { return mbFullstopCentered; }
diff --git a/vcl/qa/cppunit/fontmetric.cxx b/vcl/qa/cppunit/fontmetric.cxx
index 07fc0e6..3093783 100644
--- a/vcl/qa/cppunit/fontmetric.cxx
+++ b/vcl/qa/cppunit/fontmetric.cxx
@@ -33,8 +33,8 @@ public:
     CPPUNIT_TEST(testScalableFlag);
     CPPUNIT_TEST(testFullstopCenteredFlag);
     CPPUNIT_TEST(testBuiltInFontFlag);
-    CPPUNIT_TEST(testEqualityOperator);
     CPPUNIT_TEST(testSpacings);
+    CPPUNIT_TEST(testEqualityOperator);
     CPPUNIT_TEST_SUITE_END();
 };
 
@@ -83,6 +83,8 @@ void VclFontMetricTest::testSpacings()
     CPPUNIT_ASSERT_EQUAL( (long) aFontMetric.GetDescent(), 0L );
     CPPUNIT_ASSERT_EQUAL( (long) aFontMetric.GetExternalLeading(), 0L );
     CPPUNIT_ASSERT_EQUAL( (long) aFontMetric.GetInternalLeading(), 0L );
+    CPPUNIT_ASSERT_EQUAL( (long) aFontMetric.GetLineHeight(), 0L );
+
 
     aFontMetric.SetAscent( 100 );
     CPPUNIT_ASSERT_EQUAL( (long) aFontMetric.GetAscent(), 100L );
@@ -95,6 +97,9 @@ void VclFontMetricTest::testSpacings()
 
     aFontMetric.SetInternalLeading( 100L );
     CPPUNIT_ASSERT_EQUAL( (long) aFontMetric.GetInternalLeading(), 100L );
+
+    aFontMetric.SetLineHeight( 100L );
+    CPPUNIT_ASSERT_EQUAL( (long) aFontMetric.GetLineHeight(), 100L );
 }
 
 
diff --git a/vcl/source/gdi/metric.cxx b/vcl/source/gdi/metric.cxx
index df4d11d..1b7206f 100644
--- a/vcl/source/gdi/metric.cxx
+++ b/vcl/source/gdi/metric.cxx
@@ -163,6 +163,11 @@ long FontMetric::GetLineHeight() const
     return mpImplMetric->GetLineHeight();
 }
 
+void FontMetric::SetLineHeight( long nHeight )
+{
+    mpImplMetric->SetLineHeight( nHeight );
+}
+
 long FontMetric::GetSlant() const
 {
     return mpImplMetric->GetSlant();
diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx
index fe0255f..2165677 100644
--- a/vcl/source/outdev/font.cxx
+++ b/vcl/source/outdev/font.cxx
@@ -221,7 +221,7 @@ FontMetric OutputDevice::GetFontMetric() const
     aMetric.SetInternalLeading( ImplDevicePixelToLogicHeight( pFontAttributes->GetInternalLeading() + mnEmphasisAscent ) );
     // OutputDevice has its own external leading function due to #i60945#
     aMetric.SetExternalLeading( ImplDevicePixelToLogicHeight( GetFontExtLeading() ) );
-    aMetric.mpImplMetric->mnLineHeight   = ImplDevicePixelToLogicHeight( pFontAttributes->GetAscent() + pFontAttributes->GetDescent() + mnEmphasisAscent + mnEmphasisDescent );
+    aMetric.SetLineHeight( ImplDevicePixelToLogicHeight( pFontAttributes->GetAscent() + pFontAttributes->GetDescent() + mnEmphasisAscent + mnEmphasisDescent ) );
     aMetric.mpImplMetric->mnSlant        = ImplDevicePixelToLogicHeight( pFontAttributes->GetSlant() );
 
     SAL_INFO("vcl.gdi.fontmetric", "OutputDevice::GetFontMetric:" << aMetric);
@@ -1076,9 +1076,9 @@ bool OutputDevice::ImplNewFont() const
     if( pOldFontInstance )
         mpFontCache->Release( pOldFontInstance );
 
-    LogicalFontInstance* pFontEntry = mpFontInstance;
+    LogicalFontInstance* pFontInstance = mpFontInstance;
 
-    if (!pFontEntry)
+    if (!pFontInstance)
     {
         SAL_WARN("vcl.gdi", "OutputDevice::ImplNewFont(): no LogicalFontInstance, no Font");
         return false;
@@ -1086,28 +1086,28 @@ bool OutputDevice::ImplNewFont() const
 
     // mark when lower layers need to get involved
     mbNewFont = false;
-    if( pFontEntry != pOldFontInstance )
+    if( pFontInstance != pOldFontInstance )
         mbInitFont = true;
 
     // select font when it has not been initialized yet
-    if ( !pFontEntry->mbInit )
+    if ( !pFontInstance->mbInit )
     {
         InitFont();
 
         // get metric data from device layers
         if ( pGraphics )
         {
-            pFontEntry->mbInit = true;
+            pFontInstance->mbInit = true;
 
-            pFontEntry->maFontMetric.SetOrientation( sal::static_int_cast<short>(pFontEntry->maFontSelData.mnOrientation) );
-            pGraphics->GetFontMetric( &(pFontEntry->maFontMetric) );
+            pFontInstance->maFontMetric.SetOrientation( sal::static_int_cast<short>(pFontInstance->maFontSelData.mnOrientation) );
+            pGraphics->GetFontMetric( &(pFontInstance->maFontMetric) );
 
-            pFontEntry->maFontMetric.ImplInitTextLineSize( this );
-            pFontEntry->maFontMetric.ImplInitAboveTextLineSize();
+            pFontInstance->maFontMetric.ImplInitTextLineSize( this );
+            pFontInstance->maFontMetric.ImplInitAboveTextLineSize();
 
-            pFontEntry->mnLineHeight = pFontEntry->maFontMetric.GetAscent() + pFontEntry->maFontMetric.GetDescent();
+            pFontInstance->mnLineHeight = pFontInstance->maFontMetric.GetAscent() + pFontInstance->maFontMetric.GetDescent();
 
-            SetFontOrientation( pFontEntry );
+            SetFontOrientation( pFontInstance );
         }
     }
 
@@ -1115,7 +1115,7 @@ bool OutputDevice::ImplNewFont() const
     if ( maFont.GetKerning() & FontKerning::FontSpecific )
     {
         // TODO: test if physical font supports kerning and disable if not
-        if( pFontEntry->maFontMetric.IsKernable() )
+        if( pFontInstance->maFontMetric.IsKernable() )
             mbKerning = true;
     }
     else
@@ -1132,7 +1132,7 @@ bool OutputDevice::ImplNewFont() const
     if ( maFont.GetEmphasisMark() & EMPHASISMARK_STYLE )
     {
         FontEmphasisMark    nEmphasisMark = ImplGetEmphasisMarkStyle( maFont );
-        long                nEmphasisHeight = (pFontEntry->mnLineHeight*250)/1000;
+        long                nEmphasisHeight = (pFontInstance->mnLineHeight*250)/1000;
         if ( nEmphasisHeight < 1 )
             nEmphasisHeight = 1;
         if ( nEmphasisMark & EMPHASISMARK_POS_BELOW )
@@ -1151,21 +1151,21 @@ bool OutputDevice::ImplNewFont() const
     else if ( eAlign == ALIGN_TOP )
     {
         mnTextOffX = 0;
-        mnTextOffY = +pFontEntry->maFontMetric.GetAscent() + mnEmphasisAscent;
-        if ( pFontEntry->mnOrientation )
+        mnTextOffY = +pFontInstance->maFontMetric.GetAscent() + mnEmphasisAscent;
+        if ( pFontInstance->mnOrientation )
         {
             Point aOriginPt(0, 0);
-            aOriginPt.RotateAround( mnTextOffX, mnTextOffY, pFontEntry->mnOrientation );
+            aOriginPt.RotateAround( mnTextOffX, mnTextOffY, pFontInstance->mnOrientation );
         }
     }
     else // eAlign == ALIGN_BOTTOM
     {
         mnTextOffX = 0;
-        mnTextOffY = -pFontEntry->maFontMetric.GetDescent() + mnEmphasisDescent;
-        if ( pFontEntry->mnOrientation )
+        mnTextOffY = -pFontInstance->maFontMetric.GetDescent() + mnEmphasisDescent;
+        if ( pFontInstance->mnOrientation )
         {
             Point aOriginPt(0, 0);
-            aOriginPt.RotateAround( mnTextOffX, mnTextOffY, pFontEntry->mnOrientation );
+            aOriginPt.RotateAround( mnTextOffX, mnTextOffY, pFontInstance->mnOrientation );
         }
     }
 
@@ -1179,7 +1179,7 @@ bool OutputDevice::ImplNewFont() const
     // #95414# fix for OLE objects which use scale factors very creatively
     if( mbMap && !aSize.Width() )
     {
-        int nOrigWidth = pFontEntry->maFontMetric.GetWidth();
+        int nOrigWidth = pFontInstance->maFontMetric.GetWidth();
         float fStretch = (float)maMapRes.mnMapScNumX * maMapRes.mnMapScDenomY;
         fStretch /= (float)maMapRes.mnMapScNumY * maMapRes.mnMapScDenomX;
         int nNewWidth = (int)(nOrigWidth * fStretch + 0.5);
@@ -1198,16 +1198,16 @@ bool OutputDevice::ImplNewFont() const
     return true;
 }
 
-void OutputDevice::SetFontOrientation( LogicalFontInstance* const pFontEntry ) const
+void OutputDevice::SetFontOrientation( LogicalFontInstance* const pFontInstance ) const
 {
-    if( pFontEntry->maFontSelData.mnOrientation && !pFontEntry->maFontMetric.GetOrientation() )
+    if( pFontInstance->maFontSelData.mnOrientation && !pFontInstance->maFontMetric.GetOrientation() )
     {
-        pFontEntry->mnOwnOrientation = sal::static_int_cast<short>(pFontEntry->maFontSelData.mnOrientation);
-        pFontEntry->mnOrientation = pFontEntry->mnOwnOrientation;
+        pFontInstance->mnOwnOrientation = sal::static_int_cast<short>(pFontInstance->maFontSelData.mnOrientation);
+        pFontInstance->mnOrientation = pFontInstance->mnOwnOrientation;
     }
     else
     {
-        pFontEntry->mnOrientation = pFontEntry->maFontMetric.GetOrientation();
+        pFontInstance->mnOrientation = pFontInstance->maFontMetric.GetOrientation();
     }
 }
 


More information about the Libreoffice-commits mailing list