Kaydet (Commit) 420aa16a authored tarafından Michael Stahl's avatar Michael Stahl

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 5913506b turned off
anti-aliasing for FontWork objects simply by creating a
temporary VclPixelProcessor2D.

Change-Id: I7f7fcbf86b0dd425f599cd8e62fce3c69a2744bb
üst dd547e4a
......@@ -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)
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment