summaryrefslogtreecommitdiff
path: root/drawinglayer
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2023-04-28 12:32:19 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2023-04-28 16:29:56 +0200
commit424bdeda9fea09f0b48b5551baf872656845c7c3 (patch)
tree5ec62140bf0ccc00a7079a0af9cee71f4713818a /drawinglayer
parenta2756bf71a304f2bb1bf49753dfd37a3402bc463 (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.cxx35
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)
{