drawinglayer/source/processor2d/vclpixelprocessor2d.cxx | 20 ++++++++++++--- include/drawinglayer/processor2d/vclpixelprocessor2d.hxx | 5 +++ 2 files changed, 21 insertions(+), 4 deletions(-)
New commits: commit 56ed1221d4d578260d9e20715d073b70a099efa4 Author: Michael Stahl <mst...@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 (cherry picked from commit 420aa16af0bbab4bdef80ceeb8d44cabe65840e0) Reviewed-on: https://gerrit.libreoffice.org/4872 Reviewed-by: Fridrich Strba <fridr...@documentfoundation.org> Tested-by: Fridrich Strba <fridr...@documentfoundation.org> diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx index dde9bb5..a626d60 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); } void VclPixelProcessor2D::processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate) diff --git a/include/drawinglayer/processor2d/vclpixelprocessor2d.hxx b/include/drawinglayer/processor2d/vclpixelprocessor2d.hxx index c3003f0..f280da7 100644 --- a/include/drawinglayer/processor2d/vclpixelprocessor2d.hxx +++ b/include/drawinglayer/processor2d/vclpixelprocessor2d.hxx @@ -25,6 +25,8 @@ #include <drawinglayer/processor2d/vclprocessor2d.hxx> #include <vcl/outdev.hxx> +#include <boost/scoped_ptr.hpp> + ////////////////////////////////////////////////////////////////////////////// namespace drawinglayer @@ -40,6 +42,9 @@ namespace drawinglayer class DRAWINGLAYER_DLLPUBLIC 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 _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits