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

Chris Sherlock (via logerrit) logerrit at kemper.freedesktop.org
Thu Sep 2 06:19:23 UTC 2021


 vcl/qa/cppunit/outdev.cxx         |   69 ++++++++++++++++++++++++++++++
 vcl/source/outdev/line.cxx        |   87 ++++++++++++++++++++++++++++++++++----
 vcl/source/outdev/outdevstate.cxx |   70 ------------------------------
 3 files changed, 148 insertions(+), 78 deletions(-)

New commits:
commit 7ded01efaec8171a204a255395767432bab881b5
Author:     Chris Sherlock <chris.sherlock79 at gmail.com>
AuthorDate: Wed Aug 25 15:24:13 2021 +1000
Commit:     Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Thu Sep 2 08:18:51 2021 +0200

    vcl: move OutputDevice line functions to line.cxx
    
    Add unit tests for SetLineColor(), IsLineColor() and GetLineColor()
    
    Change-Id: I54a6e191f9c821c258527ebf075d88ff60cc9471
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121015
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/vcl/qa/cppunit/outdev.cxx b/vcl/qa/cppunit/outdev.cxx
index d9aa34a0250c..f5d814fe91fb 100644
--- a/vcl/qa/cppunit/outdev.cxx
+++ b/vcl/qa/cppunit/outdev.cxx
@@ -48,6 +48,9 @@ public:
     void testDefaultFillColor();
     void testTransparentFillColor();
     void testFillColor();
+    void testDefaultLineColor();
+    void testTransparentLineColor();
+    void testLineColor();
     void testSystemTextColor();
     void testShouldDrawWavePixelAsRect();
     void testGetWaveLineSize();
@@ -72,6 +75,9 @@ public:
     CPPUNIT_TEST(testDefaultFillColor);
     CPPUNIT_TEST(testTransparentFillColor);
     CPPUNIT_TEST(testFillColor);
+    CPPUNIT_TEST(testDefaultLineColor);
+    CPPUNIT_TEST(testTransparentLineColor);
+    CPPUNIT_TEST(testLineColor);
     CPPUNIT_TEST(testSystemTextColor);
     CPPUNIT_TEST(testShouldDrawWavePixelAsRect);
     CPPUNIT_TEST(testGetWaveLineSize);
@@ -535,6 +541,69 @@ void VclOutdevTest::testFillColor()
     CPPUNIT_ASSERT_EQUAL(COL_RED, rColor);
 }
 
+void VclOutdevTest::testDefaultLineColor()
+{
+    // Create a virtual device, and connect a metafile to it.
+    ScopedVclPtrInstance<VirtualDevice> pVDev;
+
+    GDIMetaFile aMtf;
+    aMtf.Record(pVDev.get());
+
+    CPPUNIT_ASSERT(pVDev->IsLineColor());
+    CPPUNIT_ASSERT_EQUAL(COL_BLACK, pVDev->GetLineColor());
+
+    pVDev->SetLineColor();
+    CPPUNIT_ASSERT(!pVDev->IsLineColor());
+    CPPUNIT_ASSERT_EQUAL(COL_TRANSPARENT, pVDev->GetLineColor());
+    MetaAction* pAction = aMtf.GetAction(0);
+    CPPUNIT_ASSERT_EQUAL(MetaActionType::LINECOLOR, pAction->GetType());
+    auto pLineAction = static_cast<MetaLineColorAction*>(pAction);
+    const Color& rColor = pLineAction->GetColor();
+    CPPUNIT_ASSERT_EQUAL(Color(), rColor);
+}
+
+void VclOutdevTest::testTransparentLineColor()
+{
+    // Create a virtual device, and connect a metafile to it.
+    ScopedVclPtrInstance<VirtualDevice> pVDev;
+
+    GDIMetaFile aMtf;
+    aMtf.Record(pVDev.get());
+
+    CPPUNIT_ASSERT(pVDev->IsLineColor());
+    CPPUNIT_ASSERT_EQUAL(COL_BLACK, pVDev->GetLineColor());
+
+    pVDev->SetLineColor(COL_TRANSPARENT);
+    CPPUNIT_ASSERT(!pVDev->IsLineColor());
+    CPPUNIT_ASSERT_EQUAL(COL_TRANSPARENT, pVDev->GetLineColor());
+    MetaAction* pAction = aMtf.GetAction(0);
+    CPPUNIT_ASSERT_EQUAL(MetaActionType::LINECOLOR, pAction->GetType());
+    auto pLineAction = static_cast<MetaLineColorAction*>(pAction);
+    const Color& rColor = pLineAction->GetColor();
+    CPPUNIT_ASSERT_EQUAL(COL_TRANSPARENT, rColor);
+}
+
+void VclOutdevTest::testLineColor()
+{
+    // Create a virtual device, and connect a metafile to it.
+    ScopedVclPtrInstance<VirtualDevice> pVDev;
+
+    GDIMetaFile aMtf;
+    aMtf.Record(pVDev.get());
+
+    CPPUNIT_ASSERT(pVDev->IsLineColor());
+    CPPUNIT_ASSERT_EQUAL(COL_BLACK, pVDev->GetLineColor());
+
+    pVDev->SetLineColor(COL_RED);
+    CPPUNIT_ASSERT(pVDev->IsLineColor());
+    CPPUNIT_ASSERT_EQUAL(COL_RED, pVDev->GetLineColor());
+    MetaAction* pAction = aMtf.GetAction(0);
+    CPPUNIT_ASSERT_EQUAL(MetaActionType::LINECOLOR, pAction->GetType());
+    auto pLineAction = static_cast<MetaLineColorAction*>(pAction);
+    const Color& rColor = pLineAction->GetColor();
+    CPPUNIT_ASSERT_EQUAL(COL_RED, rColor);
+}
+
 void VclOutdevTest::testSystemTextColor()
 {
     {
diff --git a/vcl/source/outdev/line.cxx b/vcl/source/outdev/line.cxx
index 479705082265..9c1b5749f336 100644
--- a/vcl/source/outdev/line.cxx
+++ b/vcl/source/outdev/line.cxx
@@ -17,21 +17,92 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#include <cassert>
-#include <numeric>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b2dlinegeometry.hxx>
+#include <tools/debug.hxx>
 
-#include <vcl/gdimtf.hxx>
 #include <vcl/lineinfo.hxx>
 #include <vcl/metaact.hxx>
-#include <vcl/outdev.hxx>
 #include <vcl/virdev.hxx>
 
+#include <drawmode.hxx>
 #include <salgdi.hxx>
 
-#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <basegfx/polygon/b2dlinegeometry.hxx>
+#include <cassert>
+#include <numeric>
+
+void OutputDevice::SetLineColor()
+{
+
+    if ( mpMetaFile )
+        mpMetaFile->AddAction( new MetaLineColorAction( Color(), false ) );
+
+    if ( mbLineColor )
+    {
+        mbInitLineColor = true;
+        mbLineColor = false;
+        maLineColor = COL_TRANSPARENT;
+    }
+
+    if( mpAlphaVDev )
+        mpAlphaVDev->SetLineColor();
+}
+
+void OutputDevice::SetLineColor( const Color& rColor )
+{
+
+    Color aColor = vcl::drawmode::GetLineColor(rColor, GetDrawMode(), GetSettings().GetStyleSettings());
+
+    if( mpMetaFile )
+        mpMetaFile->AddAction( new MetaLineColorAction( aColor, true ) );
+
+    if( aColor.IsTransparent() )
+    {
+        if ( mbLineColor )
+        {
+            mbInitLineColor = true;
+            mbLineColor = false;
+            maLineColor = COL_TRANSPARENT;
+        }
+    }
+    else
+    {
+        if( maLineColor != aColor )
+        {
+            mbInitLineColor = true;
+            mbLineColor = true;
+            maLineColor = aColor;
+        }
+    }
+
+    if( mpAlphaVDev )
+        mpAlphaVDev->SetLineColor( COL_BLACK );
+}
+
+void OutputDevice::InitLineColor()
+{
+    DBG_TESTSOLARMUTEX();
+
+    if( mbLineColor )
+    {
+        if( RasterOp::N0 == meRasterOp )
+            mpGraphics->SetROPLineColor( SalROPColor::N0 );
+        else if( RasterOp::N1 == meRasterOp )
+            mpGraphics->SetROPLineColor( SalROPColor::N1 );
+        else if( RasterOp::Invert == meRasterOp )
+            mpGraphics->SetROPLineColor( SalROPColor::Invert );
+        else
+            mpGraphics->SetLineColor( maLineColor );
+    }
+    else
+    {
+        mpGraphics->SetLineColor();
+    }
+
+    mbInitLineColor = false;
+}
 
 void OutputDevice::DrawLine( const Point& rStartPt, const Point& rEndPt,
                              const LineInfo& rLineInfo )
diff --git a/vcl/source/outdev/outdevstate.cxx b/vcl/source/outdev/outdevstate.cxx
index 0568f2d3c577..a859f29faecb 100644
--- a/vcl/source/outdev/outdevstate.cxx
+++ b/vcl/source/outdev/outdevstate.cxx
@@ -277,54 +277,6 @@ void OutputDevice::SetRasterOp( RasterOp eRasterOp )
         mpAlphaVDev->SetRasterOp( eRasterOp );
 }
 
-void OutputDevice::SetLineColor()
-{
-
-    if ( mpMetaFile )
-        mpMetaFile->AddAction( new MetaLineColorAction( Color(), false ) );
-
-    if ( mbLineColor )
-    {
-        mbInitLineColor = true;
-        mbLineColor = false;
-        maLineColor = COL_TRANSPARENT;
-    }
-
-    if( mpAlphaVDev )
-        mpAlphaVDev->SetLineColor();
-}
-
-void OutputDevice::SetLineColor( const Color& rColor )
-{
-
-    Color aColor = vcl::drawmode::GetLineColor(rColor, GetDrawMode(), GetSettings().GetStyleSettings());
-
-    if( mpMetaFile )
-        mpMetaFile->AddAction( new MetaLineColorAction( aColor, true ) );
-
-    if( aColor.IsTransparent() )
-    {
-        if ( mbLineColor )
-        {
-            mbInitLineColor = true;
-            mbLineColor = false;
-            maLineColor = COL_TRANSPARENT;
-        }
-    }
-    else
-    {
-        if( maLineColor != aColor )
-        {
-            mbInitLineColor = true;
-            mbLineColor = true;
-            maLineColor = aColor;
-        }
-    }
-
-    if( mpAlphaVDev )
-        mpAlphaVDev->SetLineColor( COL_BLACK );
-}
-
 void OutputDevice::SetFont( const vcl::Font& rNewFont )
 {
     vcl::Font aFont = vcl::drawmode::GetFont(rNewFont, GetDrawMode(), GetSettings().GetStyleSettings());
@@ -371,26 +323,4 @@ void OutputDevice::SetFont( const vcl::Font& rNewFont )
     mpAlphaVDev->SetFont( aFont );
 }
 
-
-void OutputDevice::InitLineColor()
-{
-    DBG_TESTSOLARMUTEX();
-
-    if( mbLineColor )
-    {
-        if( RasterOp::N0 == meRasterOp )
-            mpGraphics->SetROPLineColor( SalROPColor::N0 );
-        else if( RasterOp::N1 == meRasterOp )
-            mpGraphics->SetROPLineColor( SalROPColor::N1 );
-        else if( RasterOp::Invert == meRasterOp )
-            mpGraphics->SetROPLineColor( SalROPColor::Invert );
-        else
-            mpGraphics->SetLineColor( maLineColor );
-    }
-    else
-        mpGraphics->SetLineColor();
-
-    mbInitLineColor = false;
-}
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list