[Libreoffice-commits] core.git: drawinglayer/source include/svtools officecfg/registry svtools/source svx/source

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Fri Apr 17 11:08:19 UTC 2020


 drawinglayer/source/primitive2d/controlprimitive2d.cxx     |    3 
 drawinglayer/source/primitive2d/sceneprimitive2d.cxx       |    2 
 drawinglayer/source/processor2d/vclpixelprocessor2d.cxx    |   20 +
 drawinglayer/source/processor2d/vclprocessor2d.cxx         |    2 
 drawinglayer/source/processor3d/zbufferprocessor3d.cxx     |    2 
 include/svtools/optionsdrawinglayer.hxx                    |   23 -
 officecfg/registry/schema/org/openoffice/Office/Common.xcs |   64 +++++
 svtools/source/config/optionsdrawinglayer.cxx              |  153 ++++++++++++-
 svx/source/svdraw/svddrgv.cxx                              |    7 
 9 files changed, 245 insertions(+), 31 deletions(-)

New commits:
commit f569507f3f0da7f69a2e808165612cbef4c15410
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Fri Apr 17 11:43:39 2020 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Fri Apr 17 13:07:42 2020 +0200

    Revert "[API CHANGE] remove some primitives rendering settings"
    
    This reverts commit c71656f51a09e88ecae4f3423c96fee84778647d.
    
    Reason for revert: I give up
    
    Change-Id: I2a09c36c1f0d731f4d3f7d809364de7efa8d8a58
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92426
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/drawinglayer/source/primitive2d/controlprimitive2d.cxx b/drawinglayer/source/primitive2d/controlprimitive2d.cxx
index 65ec1ab9214a..600bb4be8a3f 100644
--- a/drawinglayer/source/primitive2d/controlprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/controlprimitive2d.cxx
@@ -96,7 +96,8 @@ namespace drawinglayer::primitive2d
                     basegfx::B2DVector aDiscreteSize(rViewInformation.getObjectToViewTransformation() * aScale);
 
                     // limit to a maximum square size, e.g. 300x150 pixels (45000)
-                    const double fDiscreteMax(SvtOptionsDrawinglayer::GetQuadraticFormControlRenderLimit());
+                    const SvtOptionsDrawinglayer aDrawinglayerOpt;
+                    const double fDiscreteMax(aDrawinglayerOpt.GetQuadraticFormControlRenderLimit());
                     const double fDiscreteQuadratic(aDiscreteSize.getX() * aDiscreteSize.getY());
                     const bool bScaleUsed(fDiscreteQuadratic > fDiscreteMax);
                     double fFactor(1.0);
diff --git a/drawinglayer/source/primitive2d/sceneprimitive2d.cxx b/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
index b225d62537a9..c0c0fec7d41a 100644
--- a/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
@@ -243,7 +243,7 @@ namespace drawinglayer::primitive2d
                 double fViewSizeY(aVisibleDiscreteRange.getHeight());
                 const double fViewVisibleArea(fViewSizeX * fViewSizeY);
                 const SvtOptionsDrawinglayer aDrawinglayerOpt;
-                const double fMaximumVisibleArea(SvtOptionsDrawinglayer::GetQuadratic3DRenderLimit());
+                const double fMaximumVisibleArea(aDrawinglayerOpt.GetQuadratic3DRenderLimit());
                 double fReduceFactor(1.0);
 
                 if(fViewVisibleArea > fMaximumVisibleArea)
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index f09776f50710..e94637a9a7fe 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -389,7 +389,14 @@ namespace drawinglayer::processor2d
             const DrawModeFlags nOriginalDrawMode(mpOutputDevice->GetDrawMode());
             adaptTextToFillDrawMode();
 
-            RenderTextSimpleOrDecoratedPortionPrimitive2D(rCandidate);
+            if(getOptionsDrawinglayer().IsRenderSimpleTextDirect())
+            {
+                RenderTextSimpleOrDecoratedPortionPrimitive2D(rCandidate);
+            }
+            else
+            {
+                process(rCandidate);
+            }
 
             // restore DrawMode
             mpOutputDevice->SetDrawMode(nOriginalDrawMode);
@@ -401,7 +408,14 @@ namespace drawinglayer::processor2d
             const DrawModeFlags nOriginalDrawMode(mpOutputDevice->GetDrawMode());
             adaptTextToFillDrawMode();
 
-            RenderTextSimpleOrDecoratedPortionPrimitive2D(rCandidate);
+            if(getOptionsDrawinglayer().IsRenderDecoratedTextDirect())
+            {
+                RenderTextSimpleOrDecoratedPortionPrimitive2D(rCandidate);
+            }
+            else
+            {
+                process(rCandidate);
+            }
 
             // restore DrawMode
             mpOutputDevice->SetDrawMode(nOriginalDrawMode);
@@ -815,7 +829,7 @@ namespace drawinglayer::processor2d
         void VclPixelProcessor2D::processMetaFilePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate)
         {
             // #i98289#
-            const bool bForceLineSnap(getOptionsDrawinglayer().IsAntiAliasing());
+            const bool bForceLineSnap(getOptionsDrawinglayer().IsAntiAliasing() && getOptionsDrawinglayer().IsSnapHorVerLinesToDiscrete());
             const AntialiasingFlags nOldAntiAliase(mpOutputDevice->GetAntialiasing());
 
             if(bForceLineSnap)
diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx
index b7537708af20..34ff2992934f 100644
--- a/drawinglayer/source/processor2d/vclprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx
@@ -332,7 +332,7 @@ namespace drawinglayer::processor2d
             basegfx::B2DPolygon aLocalPolygon(rPolygonCandidate.getB2DPolygon());
             aLocalPolygon.transform(maCurrentTransformation);
 
-            if(bPixelBased && getOptionsDrawinglayer().IsAntiAliasing())
+            if(bPixelBased && getOptionsDrawinglayer().IsAntiAliasing() && getOptionsDrawinglayer().IsSnapHorVerLinesToDiscrete())
             {
                 // #i98289#
                 // when a Hairline is painted and AntiAliasing is on the option SnapHorVerLinesToDiscrete
diff --git a/drawinglayer/source/processor3d/zbufferprocessor3d.cxx b/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
index c36e2bbfc558..3c5945af41b7 100644
--- a/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
+++ b/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
@@ -444,7 +444,7 @@ namespace drawinglayer::processor3d
 
                 if(mnAntiAlialize > 1)
                 {
-                    const bool bForceLineSnap(getOptionsDrawinglayer().IsAntiAliasing());
+                    const bool bForceLineSnap(getOptionsDrawinglayer().IsAntiAliasing() && getOptionsDrawinglayer().IsSnapHorVerLinesToDiscrete());
 
                     if(bForceLineSnap)
                     {
diff --git a/include/svtools/optionsdrawinglayer.hxx b/include/svtools/optionsdrawinglayer.hxx
index b156dd5741f2..762b2545e1af 100644
--- a/include/svtools/optionsdrawinglayer.hxx
+++ b/include/svtools/optionsdrawinglayer.hxx
@@ -101,23 +101,12 @@ class SVT_DLLPUBLIC SvtOptionsDrawinglayer
 
         // primitives
         bool        IsAntiAliasing() const;
-    	/**
-          Defines a Limitation for the default raster conversion from
-          3D Scenes to Bitmaps. The number is the maximum number of pixels to
-          use, e.g. 1000x1000 Pixels is allowed as default. When Scenes would
-          need more Pixels than this, the Bitmap will be limited and scaled to
-          the needed pixel size at paint time.
-	     */
-        static sal_uInt32  GetQuadratic3DRenderLimit() { return 1000000; }
-        /**
-          Defines a Limitation for the default raster conversion of
-          FormControls in edit mode. These have the ability to be displayed
-          using this fallback to Bitmaps. The number is the maximum number of
-          pixels to use, e.g. 300x150 Pixels is allowed as default. When
-          FormControls would need more Pixels than this, the Bitmap will be
-          limited and scaled to the needed pixel size at paint time.
-         */
-        static sal_uInt32  GetQuadraticFormControlRenderLimit() { return 45000; }
+        bool        IsSnapHorVerLinesToDiscrete() const;
+        bool        IsSolidDragCreate() const;
+        bool        IsRenderDecoratedTextDirect() const;
+        bool        IsRenderSimpleTextDirect() const;
+        sal_uInt32  GetQuadratic3DRenderLimit() const;
+        sal_uInt32  GetQuadraticFormControlRenderLimit() const;
 
         void        SetAntiAliasing( bool bState );
 
diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
index d7ae0e4d48b6..1307269765fb 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
@@ -1140,6 +1140,45 @@
         </info>
         <value>true</value>
       </prop>
+      <prop oor:name="SnapHorVerLinesToDiscrete" oor:type="xs:boolean" oor:nillable="false">
+        <info>
+          <desc>This switch allows to enhance visualisation of graphics which
+          use Horizontal or Vertical Hairlines combined with AntiAliased mode
+          (e.g. in 2D charts). When not used, those lines will be AntiAliased as
+          everything else. Since this is not pleasing for the eye, this option
+          allows to force those lines to snap to discrete points (pixels) when
+          activated and thus avoids AntiAliasing of pure Horizontal or Vertical
+          Hairlines.</desc>
+          <label>Determines if Horizontal and Vertical HairLines in AntiAliased
+          mode are snapped to discrete pixels to enhance visualisation</label>
+        </info>
+        <value>true</value>
+      </prop>
+      <prop oor:name="RenderDecoratedTextDirect" oor:type="xs:boolean" oor:nillable="false">
+        <info>
+          <desc>This switch determines if the decorations of decorated text
+          portions (e.g. underline, strike through) are rendered using VCL
+          direct rendering or if the primitive is decomposed into simple text
+          and the corresponding geometrical representations of the decorations.
+          Default is true since VCL's usage of the diverse System's hinting
+          possibilities for decorations is useful.</desc>
+          <label>Determines if decorated texts are decomposed at render time or
+          directly rendered using VCL</label>
+        </info>
+        <value>true</value>
+      </prop>
+      <prop oor:name="RenderSimpleTextDirect" oor:type="xs:boolean" oor:nillable="false">
+        <info>
+          <desc>This switch determines if simple text is directly rendered using
+          VCL or not. If not, the simple text is decomposed into PolyPolygons
+          which will be painted then. Default is true, since VCL will use the
+          hinting for font rendering on the diverse supported systems, which
+          gives better quality than rendering the text as Polygons.</desc>
+          <label>Determines if simple texts are decomposed at render time or
+          directly rendered using VCL</label>
+        </info>
+        <value>true</value>
+      </prop>
       <prop oor:name="SolidDragCreate" oor:type="xs:boolean" oor:nillable="false">
         <info>
           <desc>This switch decides if Interactions in the DrawingLayer are
@@ -1155,6 +1194,31 @@
         </info>
         <value>true</value>
       </prop>
+      <prop oor:name="Quadratic3DRenderLimit" oor:type="xs:int" oor:nillable="false">
+        <info>
+          <desc>This defines a Limitation for the default raster conversion from
+          3D Scenes to Bitmaps. The number is the maximum number of pixels to
+          use, e.g. 1000x1000 Pixels is allowed as default. When Scenes would
+          need more Pixels than this, the Bitmap will be limited and scaled to
+          the needed pixel size at paint time.</desc>
+          <label>A Pixel limitation for the creation of 3D Scenes with the
+          default renderer.</label>
+        </info>
+        <value>1000000</value>
+      </prop>
+      <prop oor:name="QuadraticFormControlRenderLimit" oor:type="xs:int" oor:nillable="false">
+        <info>
+          <desc>This defines a Limitation for the default raster conversion of
+          FormControls in edit mode. These have the ability to be displayed
+          using this fallback to Bitmaps. The number is the maximum number of
+          pixels to use, e.g. 300x150 Pixels is allowed as default. When
+          FormControls would need more Pixels than this, the Bitmap will be
+          limited and scaled to the needed pixel size at paint time.</desc>
+          <label>A Pixel limitation for the creation of FormControl fallback
+          display.</label>
+        </info>
+        <value>45000</value>
+      </prop>
       <prop oor:name="TransparentSelection" oor:type="xs:boolean" oor:nillable="false">
         <info>
           <desc>This switch defines if the selections in the applications (text
diff --git a/svtools/source/config/optionsdrawinglayer.cxx b/svtools/source/config/optionsdrawinglayer.cxx
index d20f2a32be2c..18a2ab4a00a7 100644
--- a/svtools/source/config/optionsdrawinglayer.cxx
+++ b/svtools/source/config/optionsdrawinglayer.cxx
@@ -62,6 +62,12 @@ using namespace ::com::sun::star::uno   ;
 
 // primitives
 #define DEFAULT_ANTIALIASING                        true
+#define DEFAULT_SNAPHORVERLINESTODISCRETE           true
+#define DEFAULT_SOLIDDRAGCREATE                     true
+#define DEFAULT_RENDERDECORATEDTEXTDIRECT           true
+#define DEFAULT_RENDERSIMPLETEXTDIRECT              true
+#define DEFAULT_QUADRATIC3DRENDERLIMIT              1000000
+#define DEFAULT_QUADRATICFORMCONTROLRENDERLIMIT     45000
 
 // #i97672# selection settings
 #define DEFAULT_TRANSPARENTSELECTION                true
@@ -94,6 +100,12 @@ using namespace ::com::sun::star::uno   ;
 
 // primitives
 #define PROPERTYNAME_ANTIALIASING OUString("AntiAliasing")
+#define PROPERTYNAME_SNAPHORVERLINESTODISCRETE OUString("SnapHorVerLinesToDiscrete")
+#define PROPERTYNAME_SOLIDDRAGCREATE OUString("SolidDragCreate")
+#define PROPERTYNAME_RENDERDECORATEDTEXTDIRECT OUString("RenderDecoratedTextDirect")
+#define PROPERTYNAME_RENDERSIMPLETEXTDIRECT OUString("RenderSimpleTextDirect")
+#define PROPERTYNAME_QUADRATIC3DRENDERLIMIT OUString("Quadratic3DRenderLimit")
+#define PROPERTYNAME_QUADRATICFORMCONTROLRENDERLIMIT OUString("QuadraticFormControlRenderLimit")
 
 // #i97672# selection settings
 #define PROPERTYNAME_TRANSPARENTSELECTION OUString("TransparentSelection")
@@ -126,13 +138,19 @@ using namespace ::com::sun::star::uno   ;
 
 // primitives
 #define PROPERTYHANDLE_ANTIALIASING                     17
+#define PROPERTYHANDLE_SNAPHORVERLINESTODISCRETE        18
+#define PROPERTYHANDLE_SOLIDDRAGCREATE                  19
+#define PROPERTYHANDLE_RENDERDECORATEDTEXTDIRECT        20
+#define PROPERTYHANDLE_RENDERSIMPLETEXTDIRECT           21
+#define PROPERTYHANDLE_QUADRATIC3DRENDERLIMIT           22
+#define PROPERTYHANDLE_QUADRATICFORMCONTROLRENDERLIMIT  23
 
 // #i97672# selection settings
-#define PROPERTYHANDLE_TRANSPARENTSELECTION             18
-#define PROPERTYHANDLE_TRANSPARENTSELECTIONPERCENT      19
-#define PROPERTYHANDLE_SELECTIONMAXIMUMLUMINANCEPERCENT 20
+#define PROPERTYHANDLE_TRANSPARENTSELECTION             24
+#define PROPERTYHANDLE_TRANSPARENTSELECTIONPERCENT      25
+#define PROPERTYHANDLE_SELECTIONMAXIMUMLUMINANCEPERCENT 26
 
-#define PROPERTYCOUNT                               21
+#define PROPERTYCOUNT                               27
 
 class SvtOptionsDrawinglayer_Impl : public ConfigItem
 {
@@ -171,6 +189,12 @@ public:
 
     // primitives
     bool        IsAntiAliasing() const { return m_bAntiAliasing;}
+    bool        IsSnapHorVerLinesToDiscrete() const { return m_bSnapHorVerLinesToDiscrete;}
+    bool        IsSolidDragCreate() const { return m_bSolidDragCreate;}
+    bool        IsRenderDecoratedTextDirect() const { return m_bRenderDecoratedTextDirect;}
+    bool        IsRenderSimpleTextDirect() const { return m_bRenderSimpleTextDirect;}
+    sal_uInt32  GetQuadratic3DRenderLimit() const { return m_nQuadratic3DRenderLimit;}
+    sal_uInt32  GetQuadraticFormControlRenderLimit() const { return m_nQuadraticFormControlRenderLimit;}
 
     void        SetAntiAliasing( bool bState );
 
@@ -216,6 +240,12 @@ private:
 
         // primitives
         bool        m_bAntiAliasing;
+        bool        m_bSnapHorVerLinesToDiscrete;
+        bool        m_bSolidDragCreate;
+        bool        m_bRenderDecoratedTextDirect;
+        bool        m_bRenderSimpleTextDirect;
+        sal_uInt32  m_nQuadratic3DRenderLimit;
+        sal_uInt32  m_nQuadraticFormControlRenderLimit;
 
         // #i97672# selection settings
         sal_uInt16  m_nTransparentSelectionPercent;
@@ -255,6 +285,12 @@ SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl() :
 
     // primitives
     m_bAntiAliasing(DEFAULT_ANTIALIASING),
+    m_bSnapHorVerLinesToDiscrete(DEFAULT_SNAPHORVERLINESTODISCRETE),
+    m_bSolidDragCreate(DEFAULT_SOLIDDRAGCREATE),
+    m_bRenderDecoratedTextDirect(DEFAULT_RENDERDECORATEDTEXTDIRECT),
+    m_bRenderSimpleTextDirect(DEFAULT_RENDERSIMPLETEXTDIRECT),
+    m_nQuadratic3DRenderLimit(DEFAULT_QUADRATIC3DRENDERLIMIT),
+    m_nQuadraticFormControlRenderLimit(DEFAULT_QUADRATICFORMCONTROLRENDERLIMIT),
 
     // #i97672# selection settings
     m_nTransparentSelectionPercent(DEFAULT_TRANSPARENTSELECTIONPERCENT),
@@ -413,6 +449,49 @@ SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl() :
             }
             break;
 
+            // primitives
+            case PROPERTYHANDLE_SNAPHORVERLINESTODISCRETE:
+            {
+                DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\SnapHorVerLinesToDiscrete\"?" );
+                seqValues[nProperty] >>= m_bSnapHorVerLinesToDiscrete;
+            }
+            break;
+
+            case PROPERTYHANDLE_SOLIDDRAGCREATE:
+            {
+                DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\SolidDragCreate\"?" );
+                seqValues[nProperty] >>= m_bSolidDragCreate;
+            }
+            break;
+
+            case PROPERTYHANDLE_RENDERDECORATEDTEXTDIRECT:
+            {
+                DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\RenderDecoratedTextDirect\"?" );
+                seqValues[nProperty] >>= m_bRenderDecoratedTextDirect;
+            }
+            break;
+
+            case PROPERTYHANDLE_RENDERSIMPLETEXTDIRECT:
+            {
+                DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\RenderSimpleTextDirect\"?" );
+                seqValues[nProperty] >>= m_bRenderSimpleTextDirect;
+            }
+            break;
+
+            case PROPERTYHANDLE_QUADRATIC3DRENDERLIMIT:
+            {
+                DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\Quadratic3DRenderLimit\"?" );
+                seqValues[nProperty] >>= m_nQuadratic3DRenderLimit;
+            }
+            break;
+
+            case PROPERTYHANDLE_QUADRATICFORMCONTROLRENDERLIMIT:
+            {
+                DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\QuadraticFormControlRenderLimit\"?" );
+                seqValues[nProperty] >>= m_nQuadraticFormControlRenderLimit;
+            }
+            break;
+
             // #i97672# selection settings
             case PROPERTYHANDLE_TRANSPARENTSELECTION:
             {
@@ -531,6 +610,30 @@ void SvtOptionsDrawinglayer_Impl::ImplCommit()
                 aSeqValues[nProperty] <<= m_bAntiAliasing;
             break;
 
+            case PROPERTYHANDLE_SNAPHORVERLINESTODISCRETE:
+                aSeqValues[nProperty] <<= m_bSnapHorVerLinesToDiscrete;
+            break;
+
+            case PROPERTYHANDLE_SOLIDDRAGCREATE:
+                aSeqValues[nProperty] <<= m_bSolidDragCreate;
+            break;
+
+            case PROPERTYHANDLE_RENDERDECORATEDTEXTDIRECT:
+                aSeqValues[nProperty] <<= m_bRenderDecoratedTextDirect;
+            break;
+
+            case PROPERTYHANDLE_RENDERSIMPLETEXTDIRECT:
+                aSeqValues[nProperty] <<= m_bRenderSimpleTextDirect;
+            break;
+
+            case PROPERTYHANDLE_QUADRATIC3DRENDERLIMIT:
+                aSeqValues[nProperty] <<= m_nQuadratic3DRenderLimit;
+            break;
+
+            case PROPERTYHANDLE_QUADRATICFORMCONTROLRENDERLIMIT:
+                aSeqValues[nProperty] <<= m_nQuadraticFormControlRenderLimit;
+            break;
+
             // #i97672# selection settings
             case PROPERTYHANDLE_TRANSPARENTSELECTION:
                 aSeqValues[nProperty] <<= m_bTransparentSelection;
@@ -627,6 +730,12 @@ Sequence< OUString > SvtOptionsDrawinglayer_Impl::impl_GetPropertyNames()
 
         // primitives
         PROPERTYNAME_ANTIALIASING,
+        PROPERTYNAME_SNAPHORVERLINESTODISCRETE,
+        PROPERTYNAME_SOLIDDRAGCREATE,
+        PROPERTYNAME_RENDERDECORATEDTEXTDIRECT,
+        PROPERTYNAME_RENDERSIMPLETEXTDIRECT,
+        PROPERTYNAME_QUADRATIC3DRENDERLIMIT,
+        PROPERTYNAME_QUADRATICFORMCONTROLRENDERLIMIT,
 
         // #i97672# selection settings
         PROPERTYNAME_TRANSPARENTSELECTION,
@@ -793,6 +902,42 @@ bool SvtOptionsDrawinglayer::IsAntiAliasing() const
     return m_pImpl->IsAntiAliasing() && IsAAPossibleOnThisSystem();
 }
 
+bool SvtOptionsDrawinglayer::IsSnapHorVerLinesToDiscrete() const
+{
+    MutexGuard aGuard( GetOwnStaticMutex() );
+    return m_pImpl->IsAntiAliasing() && m_pImpl->IsSnapHorVerLinesToDiscrete();
+}
+
+bool SvtOptionsDrawinglayer::IsSolidDragCreate() const
+{
+    MutexGuard aGuard( GetOwnStaticMutex() );
+    return m_pImpl->IsSolidDragCreate();
+}
+
+bool SvtOptionsDrawinglayer::IsRenderDecoratedTextDirect() const
+{
+    MutexGuard aGuard( GetOwnStaticMutex() );
+    return m_pImpl->IsRenderDecoratedTextDirect();
+}
+
+bool SvtOptionsDrawinglayer::IsRenderSimpleTextDirect() const
+{
+    MutexGuard aGuard( GetOwnStaticMutex() );
+    return m_pImpl->IsRenderSimpleTextDirect();
+}
+
+sal_uInt32 SvtOptionsDrawinglayer::GetQuadratic3DRenderLimit() const
+{
+    MutexGuard aGuard( GetOwnStaticMutex() );
+    return m_pImpl->GetQuadratic3DRenderLimit();
+}
+
+sal_uInt32 SvtOptionsDrawinglayer::GetQuadraticFormControlRenderLimit() const
+{
+    MutexGuard aGuard( GetOwnStaticMutex() );
+    return m_pImpl->GetQuadraticFormControlRenderLimit();
+}
+
 void SvtOptionsDrawinglayer::SetAntiAliasing( bool bState )
 {
     MutexGuard aGuard( GetOwnStaticMutex() );
diff --git a/svx/source/svdraw/svddrgv.cxx b/svx/source/svdraw/svddrgv.cxx
index 832ea61ca9de..7002f9447d0d 100644
--- a/svx/source/svdraw/svddrgv.cxx
+++ b/svx/source/svdraw/svddrgv.cxx
@@ -63,7 +63,7 @@ void SdrDragView::ImpClearVars()
     mbCrookAtCenter=false;
 
     // init using default
-    mbSolidDragging = true;
+    mbSolidDragging = getOptionsDrawinglayer().IsSolidDragCreate();
 }
 
 SdrDragView::SdrDragView(
@@ -917,8 +917,9 @@ void SdrDragView::SetSolidDragging(bool bOn)
 
 bool SdrDragView::IsSolidDragging() const
 {
-    // allow each user to disable by having a local setting
-    return mbSolidDragging;
+    // allow each user to disable by having a local setting, but using AND for
+    // checking allowance
+    return mbSolidDragging && getOptionsDrawinglayer().IsSolidDragCreate();
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list