[Libreoffice-commits] core.git: drawinglayer/source

Michael Stahl mstahl at redhat.com
Fri Jul 12 10:26:36 PDT 2013


 drawinglayer/source/processor2d/vclpixelprocessor2d.cxx |   20 ++++++++++++----
 drawinglayer/source/processor2d/vclpixelprocessor2d.hxx |    5 ++++
 2 files changed, 21 insertions(+), 4 deletions(-)

New commits:
commit 420aa16af0bbab4bdef80ceeb8d44cabe65840e0
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Jul 12 19:04:21 2013 +0200

    fdo#66745: drawinglayer: properly restore anti-aliasing mode
    
    VclPixelProcessor2D: the constructor changes the anti-aliasing mode of
    the given output device, and the destructor restores a hard-coded mode
    instead of what was there before.
    
    Due to this commit 5913506b2193e93ca2767ab7365ab2e76ed7848f turned off
    anti-aliasing for FontWork objects simply by creating a
    temporary VclPixelProcessor2D.
    
    Change-Id: I7f7fcbf86b0dd425f599cd8e62fce3c69a2744bb

diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index 1376a03..a805bd2 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -62,8 +62,18 @@ namespace drawinglayer
 {
     namespace processor2d
     {
+        struct VclPixelProcessor2D::Impl
+        {
+            sal_uInt16 m_nOrigAntiAliasing;
+
+            explicit Impl(OutputDevice const& rOutDev)
+                : m_nOrigAntiAliasing(rOutDev.GetAntialiasing())
+            { }
+        };
+
         VclPixelProcessor2D::VclPixelProcessor2D(const geometry::ViewInformation2D& rViewInformation, OutputDevice& rOutDev)
-        :   VclProcessor2D(rViewInformation, rOutDev)
+            :   VclProcessor2D(rViewInformation, rOutDev)
+            ,   m_pImpl(new Impl(rOutDev))
         {
             // prepare maCurrentTransformation matrix with viewTransformation to target directly to pixels
             maCurrentTransformation = rViewInformation.getObjectToViewTransformation();
@@ -75,11 +85,13 @@ namespace drawinglayer
             // react on AntiAliasing settings
             if(getOptionsDrawinglayer().IsAntiAliasing())
             {
-                mpOutputDevice->SetAntialiasing(mpOutputDevice->GetAntialiasing() | ANTIALIASING_ENABLE_B2DDRAW);
+                mpOutputDevice->SetAntialiasing(
+                   m_pImpl->m_nOrigAntiAliasing | ANTIALIASING_ENABLE_B2DDRAW);
             }
             else
             {
-                mpOutputDevice->SetAntialiasing(mpOutputDevice->GetAntialiasing() & ~ANTIALIASING_ENABLE_B2DDRAW);
+                mpOutputDevice->SetAntialiasing(
+                   m_pImpl->m_nOrigAntiAliasing & ~ANTIALIASING_ENABLE_B2DDRAW);
             }
         }
 
@@ -89,7 +101,7 @@ namespace drawinglayer
                mpOutputDevice->Pop();
 
             // restore AntiAliasing
-            mpOutputDevice->SetAntialiasing(mpOutputDevice->GetAntialiasing() & ~ANTIALIASING_ENABLE_B2DDRAW);
+            mpOutputDevice->SetAntialiasing(m_pImpl->m_nOrigAntiAliasing);
         }
 
         bool VclPixelProcessor2D::tryDrawPolyPolygonColorPrimitive2DDirect(const drawinglayer::primitive2d::PolyPolygonColorPrimitive2D& rSource, double fTransparency)
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.hxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.hxx
index 2b41289..a55962d 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.hxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.hxx
@@ -25,6 +25,8 @@
 #include "vclprocessor2d.hxx"
 #include <vcl/outdev.hxx>
 
+#include <boost/scoped_ptr.hpp>
+
 //////////////////////////////////////////////////////////////////////////////
 // predefines
 
@@ -49,6 +51,9 @@ namespace drawinglayer
         class VclPixelProcessor2D : public VclProcessor2D
         {
         private:
+            struct Impl;
+            boost::scoped_ptr<Impl> m_pImpl;
+
         protected:
             /*  the local processor for BasePrinitive2D-Implementation based primitives,
                 called from the common process()-implementation


More information about the Libreoffice-commits mailing list