diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2023-04-28 12:32:19 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2023-04-28 16:29:56 +0200 |
commit | 424bdeda9fea09f0b48b5551baf872656845c7c3 (patch) | |
tree | 5ec62140bf0ccc00a7079a0af9cee71f4713818a /drawinglayer | |
parent | a2756bf71a304f2bb1bf49753dfd37a3402bc463 (diff) |
Move all handling of AA allowing from svt to drawinglayer
Commit 444bf8710d5da7b584fbcb94693e4ed8d2e29297 (Update handling of
AntiAliasing settings and processor2d, 2022-11-08) moved the actual
variable holding the AA state to drawinglayer, which introduced a
duplication of the information.
This moves all the handling from svt to drawinglayer, so that svt
functions only use respective drawinglayer functions. Well, almost:
the IsAAPossibleOnThisSystem function needs vcl, so stays in svt.
Change-Id: I887307fbca1ca0cff1f5f32446e3599817099c3f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151163
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'drawinglayer')
-rw-r--r-- | drawinglayer/source/geometry/viewinformation2d.cxx | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/drawinglayer/source/geometry/viewinformation2d.cxx b/drawinglayer/source/geometry/viewinformation2d.cxx index 7e0240690a68..03089e41e36f 100644 --- a/drawinglayer/source/geometry/viewinformation2d.cxx +++ b/drawinglayer/source/geometry/viewinformation2d.cxx @@ -25,8 +25,11 @@ #include <com/sun/star/drawing/XDrawPage.hpp> #include <com/sun/star/geometry/AffineMatrix2D.hpp> #include <com/sun/star/geometry/RealRectangle2D.hpp> +#include <o3tl/temporary.hxx> #include <officecfg/Office/Common.hxx> #include <unotools/configmgr.hxx> + +#include <atomic> #include <utility> using namespace com::sun::star; @@ -48,7 +51,6 @@ constexpr OUStringLiteral g_PropertyName_PixelSnapHairline = u"PixelSnapHairline namespace { bool bForwardsAreInitialized(false); -bool bForwardedAntiAliasing(true); bool bForwardPixelSnapHairline(true); } @@ -105,8 +107,8 @@ public: , mxVisualizedPage() , mfViewTime(0.0) , mbReducedDisplayQuality(false) - , mbUseAntiAliasing(bForwardedAntiAliasing) - , mbPixelSnapHairline(bForwardedAntiAliasing && bForwardPixelSnapHairline) + , mbUseAntiAliasing(ViewInformation2D::getGlobalAntiAliasing()) + , mbPixelSnapHairline(mbUseAntiAliasing && bForwardPixelSnapHairline) { } @@ -227,13 +229,12 @@ ViewInformation2D::ViewInformation2D() bForwardsAreInitialized = true; if (!utl::ConfigManager::IsFuzzing()) { - bForwardedAntiAliasing = officecfg::Office::Common::Drawinglayer::AntiAliasing::get(); bForwardPixelSnapHairline = officecfg::Office::Common::Drawinglayer::SnapHorVerLinesToDiscrete::get(); } } - setUseAntiAliasing(bForwardedAntiAliasing); + setUseAntiAliasing(ViewInformation2D::getGlobalAntiAliasing()); setPixelSnapHairline(bForwardPixelSnapHairline); } @@ -352,10 +353,30 @@ void ViewInformation2D::setPixelSnapHairline(bool bNew) mpViewInformation2D->setPixelSnapHairline(bNew); } -void ViewInformation2D::forwardAntiAliasing(bool bAntiAliasing) +static std::atomic<bool>& globalAntiAliasing() +{ + static std::atomic<bool> g_GlobalAntiAliasing + = utl::ConfigManager::IsFuzzing() + || officecfg::Office::Common::Drawinglayer::AntiAliasing::get(); + return g_GlobalAntiAliasing; +} + +/** + * Some code like to turn this stuff on and off during a drawing operation + * so it can "tunnel" information down through several layers, + * so we don't want to actually do a config write all the time. + */ +void ViewInformation2D::setGlobalAntiAliasing(bool bAntiAliasing, bool bTemporary) { - bForwardedAntiAliasing = bAntiAliasing; + if (globalAntiAliasing().compare_exchange_strong(o3tl::temporary(!bAntiAliasing), bAntiAliasing) + && !bTemporary) + { + auto batch = comphelper::ConfigurationChanges::create(); + officecfg::Office::Common::Drawinglayer::AntiAliasing::set(bAntiAliasing, batch); + batch->commit(); + } } +bool ViewInformation2D::getGlobalAntiAliasing() { return globalAntiAliasing(); } void ViewInformation2D::forwardPixelSnapHairline(bool bPixelSnapHairline) { |