[Libreoffice-commits] core.git: Branch 'feature/drawinglayercore2' - drawinglayer/qa drawinglayer/source include/drawinglayer sc/source sfx2/source svgio/source svx/source sw/source

Tomaž Vajngerl (via logerrit) logerrit at kemper.freedesktop.org
Sat Jul 31 04:46:31 UTC 2021


Rebased ref, commits from common ancestor:
commit acd7a57c335a0230c21d6c2bafaf69b3ee32a653
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Tue Feb 23 13:23:32 2021 +0900
Commit:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
CommitDate: Sat Jul 31 13:45:38 2021 +0900

    drawinglayer: make VisitingParameters constructor explicit
    
    This discovers a bunch of cases where previously the
    ViewInformation was implicitly converted into a VisitingParameter.
    
    Change-Id: Ice233e9d3c9d12c5da284e190281a1d94059f49f

diff --git a/drawinglayer/qa/unit/border.cxx b/drawinglayer/qa/unit/border.cxx
index a3f7029b7350..801912f75825 100644
--- a/drawinglayer/qa/unit/border.cxx
+++ b/drawinglayer/qa/unit/border.cxx
@@ -66,9 +66,10 @@ CPPUNIT_TEST_FIXTURE(DrawinglayerBorderTest, testDoubleDecompositionSolid)
                                                              aStrokeAttribute));
 
     // Decompose it into polygons.
-    drawinglayer::geometry::ViewInformation2D aView;
+    const drawinglayer::geometry::ViewInformation2D aView;
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aView);
     drawinglayer::primitive2d::Primitive2DContainer aContainer;
-    aBorder->get2DDecomposition(aContainer, aView);
+    aBorder->get2DDecomposition(aContainer, aVisitingParameters);
 
     // Make sure it results in two borders as it's a double one.
     CPPUNIT_ASSERT_EQUAL(static_cast<std::size_t>(2), aContainer.size());
@@ -91,8 +92,9 @@ CPPUNIT_TEST_FIXTURE(DrawinglayerBorderTest, testDoublePixelProcessing)
     // Create a pixel processor.
     ScopedVclPtrInstance<VirtualDevice> pDev;
     drawinglayer::geometry::ViewInformation2D aView;
-    std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor(
-        drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice(*pDev, aView));
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aView);
+    auto pProcessor = drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice(
+        *pDev, aVisitingParameters);
     CPPUNIT_ASSERT(pProcessor);
     GDIMetaFile aMetaFile;
     // Start recording after the processor is created, so we can test the pixel processor.
diff --git a/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx b/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
index 98ca81433f12..59c934b88d17 100644
--- a/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
+++ b/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
@@ -118,6 +118,7 @@ namespace drawinglayer::unorenderer
                     }
 
                     const auto aViewInformation2D = geometry::createViewInformation2D(aViewInformationSequence);
+                    primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
                     const sal_uInt32 nDiscreteWidth(basegfx::fround(o3tl::convert(fWidth, eRangeUnit, o3tl::Length::in) * DPI_X));
                     const sal_uInt32 nDiscreteHeight(basegfx::fround(o3tl::convert(fHeight, eRangeUnit, o3tl::Length::in) * DPI_Y));
 
@@ -139,7 +140,7 @@ namespace drawinglayer::unorenderer
                     BitmapEx aBitmapEx(
                         convertToBitmapEx(
                             xEmbedSeq,
-                            aViewInformation2D,
+                            aVisitingParameters,
                             nDiscreteWidth,
                             nDiscreteHeight,
                             MaximumQuadraticPixels));
diff --git a/drawinglayer/source/primitive2d/patternfillprimitive2d.cxx b/drawinglayer/source/primitive2d/patternfillprimitive2d.cxx
index 42559bfd4390..0cfa014bb13e 100644
--- a/drawinglayer/source/primitive2d/patternfillprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/patternfillprimitive2d.cxx
@@ -100,17 +100,19 @@ namespace drawinglayer::primitive2d
             // see if buffering is wanted. If so, create buffered content in given resolution
             if(0 != mnDiscreteWidth && 0 != mnDiscreteHeight)
             {
-                const geometry::ViewInformation2D aViewInformation2D;
                 const primitive2d::Primitive2DReference xEmbedRef(
                     new primitive2d::TransformPrimitive2D(
                         basegfx::utils::createScaleB2DHomMatrix(mnDiscreteWidth, mnDiscreteHeight),
                         getChildren()));
                 const primitive2d::Primitive2DContainer xEmbedSeq { xEmbedRef };
 
+                const geometry::ViewInformation2D aViewInformation2D;
+                primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+
                 const BitmapEx aBitmapEx(
                     convertToBitmapEx(
                         xEmbedSeq,
-                        aViewInformation2D,
+                        aVisitingParameters,
                         mnDiscreteWidth,
                         mnDiscreteHeight,
                         mnDiscreteWidth * mnDiscreteHeight));
diff --git a/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx b/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx
index cbe3ecf81bfe..514a2f5da880 100644
--- a/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx
@@ -84,7 +84,7 @@ namespace drawinglayer::primitive2d
 
                 // I will take the last one here. The small overhead of two primitives will only be
                 // used when UnifiedTransparencePrimitive2D is not handled directly.
-                const basegfx::B2DRange aPolygonRange(getChildren().getB2DRange(rParameters.getViewInformation()));
+                const basegfx::B2DRange aPolygonRange(getChildren().getB2DRange(rParameters));
                 const basegfx::B2DPolygon aPolygon(basegfx::utils::createPolygonFromRect(aPolygonRange));
                 const basegfx::BColor aGray(getTransparence(), getTransparence(), getTransparence());
                 Primitive2DContainer aTransparenceContent(2);
diff --git a/drawinglayer/source/processor2d/baseprocessor2d.cxx b/drawinglayer/source/processor2d/baseprocessor2d.cxx
index a7b079016747..8fc8223a6046 100644
--- a/drawinglayer/source/processor2d/baseprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/baseprocessor2d.cxx
@@ -30,8 +30,8 @@ namespace drawinglayer::processor2d
         {
         }
 
-        BaseProcessor2D::BaseProcessor2D(const geometry::ViewInformation2D& rViewInformation)
-        :   maViewInformation2D(rViewInformation)
+        BaseProcessor2D::BaseProcessor2D(primitive2d::VisitingParameters const & rVisitingParameters)
+        :   maVisitingParameters(rVisitingParameters)
         {
         }
 
@@ -42,7 +42,7 @@ namespace drawinglayer::processor2d
         void BaseProcessor2D::process(const primitive2d::BasePrimitive2D& rCandidate)
         {
             primitive2d::Primitive2DContainer aContainer;
-            rCandidate.get2DDecomposition(aContainer, getViewInformation2D());
+            rCandidate.get2DDecomposition(aContainer, maVisitingParameters);
             process(aContainer);
         }
 
@@ -71,8 +71,8 @@ namespace drawinglayer::processor2d
                     else
                     {
                         // unknown implementation, use UNO API call instead and process recursively
-                        auto aViewParameters = geometry::createPropertyValues(getViewInformation2D());
-                        process(comphelper::sequenceToContainer<primitive2d::Primitive2DContainer>(xReference->getDecomposition(aViewParameters)));
+                        auto aViewParametersProperties = geometry::createPropertyValues(maVisitingParameters.getViewInformation());
+                        process(comphelper::sequenceToContainer<primitive2d::Primitive2DContainer>(xReference->getDecomposition(aViewParametersProperties)));
                     }
                 }
             }
diff --git a/drawinglayer/source/processor2d/contourextractor2d.cxx b/drawinglayer/source/processor2d/contourextractor2d.cxx
index 96250f59fa17..ab75b27e247b 100644
--- a/drawinglayer/source/processor2d/contourextractor2d.cxx
+++ b/drawinglayer/source/processor2d/contourextractor2d.cxx
@@ -36,9 +36,9 @@ using namespace com::sun::star;
 namespace drawinglayer::processor2d
 {
         ContourExtractor2D::ContourExtractor2D(
-            const geometry::ViewInformation2D& rViewInformation,
+            primitive2d::VisitingParameters const& rVisitingParameters,
             bool bExtractFillOnly)
-        :   BaseProcessor2D(rViewInformation),
+        :   BaseProcessor2D(rVisitingParameters),
             maExtractedContour(),
             mbExtractFillOnly(bExtractFillOnly)
         {
@@ -121,7 +121,7 @@ namespace drawinglayer::processor2d
                 {
                     // remember current ViewInformation2D
                     const primitive2d::TransformPrimitive2D& rTransformCandidate(static_cast< const primitive2d::TransformPrimitive2D& >(rCandidate));
-                    const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
+                    primitive2d::VisitingParameters aLastVisitingParameters(maVisitingParameters);
 
                     // create new local ViewInformation2D
                     const geometry::ViewInformation2D aViewInformation2D(
@@ -130,13 +130,15 @@ namespace drawinglayer::processor2d
                         getViewInformation2D().getViewport(),
                         getViewInformation2D().getVisualizedPage(),
                         getViewInformation2D().getViewTime());
-                    updateViewInformation(aViewInformation2D);
+
+                    primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                    updateVisitingParameters(aVisitingParameters);
 
                     // process content
                     process(rTransformCandidate.getChildren());
 
                     // restore transformations
-                    updateViewInformation(aLastViewInformation2D);
+                    updateVisitingParameters(aLastVisitingParameters);
 
                     break;
                 }
@@ -172,7 +174,7 @@ namespace drawinglayer::processor2d
                 case PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D :
                 {
                     // primitives who's BoundRect will be added in world coordinates
-                    basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
+                    basegfx::B2DRange aRange(rCandidate.getB2DRange(maVisitingParameters));
                     if (!aRange.isEmpty())
                     {
                         aRange.transform(getViewInformation2D().getObjectTransformation());
diff --git a/drawinglayer/source/processor2d/hittestprocessor2d.cxx b/drawinglayer/source/processor2d/hittestprocessor2d.cxx
index 8e5dc31242e4..b76c55c86aa9 100644
--- a/drawinglayer/source/processor2d/hittestprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/hittestprocessor2d.cxx
@@ -37,11 +37,11 @@
 
 namespace drawinglayer::processor2d
 {
-        HitTestProcessor2D::HitTestProcessor2D(const geometry::ViewInformation2D& rViewInformation,
+        HitTestProcessor2D::HitTestProcessor2D(primitive2d::VisitingParameters const& rVisitingParameters,
             const basegfx::B2DPoint& rLogicHitPosition,
             double fLogicHitTolerance,
             bool bHitTextOnly)
-        :   BaseProcessor2D(rViewInformation),
+        :   BaseProcessor2D(rVisitingParameters),
             maDiscreteHitPosition(),
             mfDiscreteHitTolerance(0.0),
             maHitStack(),
@@ -230,7 +230,7 @@ namespace drawinglayer::processor2d
                 {
                     // remember current ViewInformation2D
                     const primitive2d::TransformPrimitive2D& rTransformCandidate(static_cast< const primitive2d::TransformPrimitive2D& >(rCandidate));
-                    const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
+                    primitive2d::VisitingParameters aLastVisitingParameters(maVisitingParameters);
 
                     // create new local ViewInformation2D containing transformation
                     const geometry::ViewInformation2D aViewInformation2D(
@@ -239,13 +239,14 @@ namespace drawinglayer::processor2d
                         getViewInformation2D().getViewport(),
                         getViewInformation2D().getVisualizedPage(),
                         getViewInformation2D().getViewTime());
-                    updateViewInformation(aViewInformation2D);
+                    primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                    updateVisitingParameters(aVisitingParameters);
 
                     // process child content recursively
                     process(rTransformCandidate.getChildren());
 
                     // restore transformations
-                    updateViewInformation(aLastViewInformation2D);
+                    updateVisitingParameters(aLastVisitingParameters);
 
                     break;
                 }
@@ -410,7 +411,7 @@ namespace drawinglayer::processor2d
                 case PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D :
                 {
                     // for text use the BoundRect of the primitive itself
-                    const basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
+                    const basegfx::B2DRange aRange(rCandidate.getB2DRange(maVisitingParameters));
 
                     if(!aRange.isEmpty())
                     {
@@ -427,7 +428,7 @@ namespace drawinglayer::processor2d
                         // The recently added BitmapEx::GetTransparency() makes it easy to extend
                         // the BitmapPrimitive2D HitTest to take the contained BitmapEx and it's
                         // transparency into account
-                        const basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
+                        const basegfx::B2DRange aRange(rCandidate.getB2DRange(maVisitingParameters));
 
                         if(!aRange.isEmpty())
                         {
@@ -481,7 +482,7 @@ namespace drawinglayer::processor2d
                         // This may be refined in the future, e.g:
                         // - For Bitmaps, the mask and/or transparence information may be used
                         // - For MetaFiles, the MetaFile content may be used
-                        const basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
+                        const basegfx::B2DRange aRange(rCandidate.getB2DRange(maVisitingParameters));
 
                         if(!aRange.isEmpty())
                         {
diff --git a/drawinglayer/source/processor2d/linegeometryextractor2d.cxx b/drawinglayer/source/processor2d/linegeometryextractor2d.cxx
index 9b7c9b62e90a..5b2de421c2cb 100644
--- a/drawinglayer/source/processor2d/linegeometryextractor2d.cxx
+++ b/drawinglayer/source/processor2d/linegeometryextractor2d.cxx
@@ -29,8 +29,8 @@ using namespace com::sun::star;
 
 namespace drawinglayer::processor2d
 {
-        LineGeometryExtractor2D::LineGeometryExtractor2D(const geometry::ViewInformation2D& rViewInformation)
-        :   BaseProcessor2D(rViewInformation),
+        LineGeometryExtractor2D::LineGeometryExtractor2D(primitive2d::VisitingParameters const& rVisitingParameters)
+        :   BaseProcessor2D(rVisitingParameters),
             maExtractedHairlines(),
             maExtractedLineFills(),
             mbInLineGeometry(false)
@@ -83,7 +83,7 @@ namespace drawinglayer::processor2d
                 {
                     // remember current transformation and ViewInformation
                     const primitive2d::TransformPrimitive2D& rTransformCandidate(static_cast< const primitive2d::TransformPrimitive2D& >(rCandidate));
-                    const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
+                    primitive2d::VisitingParameters aLastVisitingParameters(maVisitingParameters);
 
                     // create new transformations for CurrentTransformation and for local ViewInformation2D
                     const geometry::ViewInformation2D aViewInformation2D(
@@ -92,13 +92,15 @@ namespace drawinglayer::processor2d
                         getViewInformation2D().getViewport(),
                         getViewInformation2D().getVisualizedPage(),
                         getViewInformation2D().getViewTime());
-                    updateViewInformation(aViewInformation2D);
+
+                    primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                    updateVisitingParameters(aVisitingParameters);
 
                     // process content
                     process(rTransformCandidate.getChildren());
 
                     // restore transformations
-                    updateViewInformation(aLastViewInformation2D);
+                    updateVisitingParameters(aLastVisitingParameters);
 
                     break;
                 }
diff --git a/drawinglayer/source/processor2d/objectinfoextractor2d.cxx b/drawinglayer/source/processor2d/objectinfoextractor2d.cxx
index 552406d53f68..4d3eb0188c14 100644
--- a/drawinglayer/source/processor2d/objectinfoextractor2d.cxx
+++ b/drawinglayer/source/processor2d/objectinfoextractor2d.cxx
@@ -62,8 +62,8 @@ namespace drawinglayer::processor2d
             }
         }
 
-        ObjectInfoPrimitiveExtractor2D::ObjectInfoPrimitiveExtractor2D(const geometry::ViewInformation2D& rViewInformation)
-        :   BaseProcessor2D(rViewInformation),
+        ObjectInfoPrimitiveExtractor2D::ObjectInfoPrimitiveExtractor2D(primitive2d::VisitingParameters const& rVisitingParameters)
+        :   BaseProcessor2D(rVisitingParameters),
             mpFound(nullptr)
         {
         }
diff --git a/drawinglayer/source/processor2d/processor2dtools.cxx b/drawinglayer/source/processor2d/processor2dtools.cxx
index 7bc0f5fa0536..921ec4af81c3 100644
--- a/drawinglayer/source/processor2d/processor2dtools.cxx
+++ b/drawinglayer/source/processor2d/processor2dtools.cxx
@@ -29,15 +29,15 @@ namespace drawinglayer::processor2d
 {
         std::unique_ptr<BaseProcessor2D> createPixelProcessor2DFromOutputDevice(
             OutputDevice& rTargetOutDev,
-            const drawinglayer::geometry::ViewInformation2D& rViewInformation2D)
+            const drawinglayer::primitive2d::VisitingParameters& rParameters)
         {
             // create Pixel Vcl-Processor
-            return std::make_unique<VclPixelProcessor2D>(rViewInformation2D, rTargetOutDev);
+            return std::make_unique<VclPixelProcessor2D>(rParameters, rTargetOutDev);
         }
 
         std::unique_ptr<BaseProcessor2D> createProcessor2DFromOutputDevice(
             OutputDevice& rTargetOutDev,
-            const drawinglayer::geometry::ViewInformation2D& rViewInformation2D)
+            const drawinglayer::primitive2d::VisitingParameters& rParameters)
         {
             const GDIMetaFile* pMetaFile = rTargetOutDev.GetConnectMetaFile();
             const bool bOutputToRecordingMetaFile(pMetaFile && pMetaFile->IsRecord() && !pMetaFile->IsPause());
@@ -45,14 +45,12 @@ namespace drawinglayer::processor2d
             if(bOutputToRecordingMetaFile)
             {
                 // create MetaFile Vcl-Processor and process
-                return std::make_unique<VclMetafileProcessor2D>(rViewInformation2D, rTargetOutDev);
+                return std::make_unique<VclMetafileProcessor2D>(rParameters, rTargetOutDev);
             }
             else
             {
                 // create Pixel Vcl-Processor
-                return createPixelProcessor2DFromOutputDevice(
-                    rTargetOutDev,
-                    rViewInformation2D);
+                return createPixelProcessor2DFromOutputDevice(rTargetOutDev, rParameters);
             }
         }
 
diff --git a/drawinglayer/source/processor2d/processorfromoutputdevice.cxx b/drawinglayer/source/processor2d/processorfromoutputdevice.cxx
index c8433753aeff..f16ad46faadb 100644
--- a/drawinglayer/source/processor2d/processorfromoutputdevice.cxx
+++ b/drawinglayer/source/processor2d/processorfromoutputdevice.cxx
@@ -29,7 +29,7 @@ namespace drawinglayer::processor2d
 {
         std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> createBaseProcessor2DFromOutputDevice(
             OutputDevice& rTargetOutDev,
-            const drawinglayer::geometry::ViewInformation2D& rViewInformation2D)
+            drawinglayer::primitive2d::VisitingParameters const& rParameters)
         {
             const GDIMetaFile* pMetaFile = rTargetOutDev.GetConnectMetaFile();
             const bool bOutputToRecordingMetaFile(pMetaFile && pMetaFile->IsRecord() && !pMetaFile->IsPause());
@@ -37,12 +37,12 @@ namespace drawinglayer::processor2d
             if(bOutputToRecordingMetaFile)
             {
                 // create MetaFile Vcl-Processor and process
-                return std::make_unique<drawinglayer::processor2d::VclMetafileProcessor2D>(rViewInformation2D, rTargetOutDev);
+                return std::make_unique<drawinglayer::processor2d::VclMetafileProcessor2D>(rParameters, rTargetOutDev);
             }
             else
             {
                 // create Pixel Vcl-Processor
-                return std::make_unique<drawinglayer::processor2d::VclPixelProcessor2D>(rViewInformation2D, rTargetOutDev);
+                return std::make_unique<drawinglayer::processor2d::VclPixelProcessor2D>(rParameters, rTargetOutDev);
             }
         }
 } // end of namespace
diff --git a/drawinglayer/source/processor2d/textaspolygonextractor2d.cxx b/drawinglayer/source/processor2d/textaspolygonextractor2d.cxx
index 82bc044e36f9..5a551c18311a 100644
--- a/drawinglayer/source/processor2d/textaspolygonextractor2d.cxx
+++ b/drawinglayer/source/processor2d/textaspolygonextractor2d.cxx
@@ -174,7 +174,7 @@ namespace drawinglayer::processor2d
                 {
                     // remember current transformation and ViewInformation
                     const primitive2d::TransformPrimitive2D& rTransformCandidate(static_cast< const primitive2d::TransformPrimitive2D& >(rCandidate));
-                    const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
+                    primitive2d::VisitingParameters aLastParameters(maVisitingParameters);
 
                     // create new transformations for CurrentTransformation and for local ViewInformation2D
                     const geometry::ViewInformation2D aViewInformation2D(
@@ -183,13 +183,15 @@ namespace drawinglayer::processor2d
                         getViewInformation2D().getViewport(),
                         getViewInformation2D().getVisualizedPage(),
                         getViewInformation2D().getViewTime());
-                    updateViewInformation(aViewInformation2D);
+
+                    primitive2d::VisitingParameters aParameters(aViewInformation2D);
+                    updateVisitingParameters(aParameters);
 
                     // process content
                     process(rTransformCandidate.getChildren());
 
                     // restore transformations
-                    updateViewInformation(aLastViewInformation2D);
+                    updateVisitingParameters(aLastParameters);
 
                     break;
                 }
@@ -215,8 +217,8 @@ namespace drawinglayer::processor2d
             }
         }
 
-        TextAsPolygonExtractor2D::TextAsPolygonExtractor2D(const geometry::ViewInformation2D& rViewInformation)
-        :   BaseProcessor2D(rViewInformation),
+        TextAsPolygonExtractor2D::TextAsPolygonExtractor2D(primitive2d::VisitingParameters const& rVisitingParameters)
+        :   BaseProcessor2D(rVisitingParameters),
             maTarget(),
             maBColorModifierStack(),
             mnInText(0)
diff --git a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
index d60616d5be2c..824a00a0450d 100644
--- a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
@@ -214,7 +214,7 @@ VclMetafileProcessor2D::impDumpToMetaFile(const primitive2d::Primitive2DContaine
     // Prepare VDev, MetaFile and connections
     OutputDevice* pLastOutputDevice = mpOutputDevice;
     GDIMetaFile* pLastMetafile = mpMetaFile;
-    basegfx::B2DRange aPrimitiveRange(rContent.getB2DRange(getViewInformation2D()));
+    basegfx::B2DRange aPrimitiveRange(rContent.getB2DRange(maVisitingParameters));
 
     // transform primitive range with current transformation (e.g shadow offset)
     aPrimitiveRange.transform(maCurrentTransformation);
@@ -548,9 +548,9 @@ void VclMetafileProcessor2D::popList()
 // init static break iterator
 uno::Reference<css::i18n::XBreakIterator> VclMetafileProcessor2D::mxBreakIterator;
 
-VclMetafileProcessor2D::VclMetafileProcessor2D(const geometry::ViewInformation2D& rViewInformation,
-                                               OutputDevice& rOutDev)
-    : VclProcessor2D(rViewInformation, rOutDev)
+VclMetafileProcessor2D::VclMetafileProcessor2D(
+    drawinglayer::primitive2d::VisitingParameters const& rParameters, OutputDevice& rOutDev)
+    : VclProcessor2D(rParameters, rOutDev)
     , mpMetaFile(rOutDev.GetConnectMetaFile())
     , mnSvtGraphicFillCount(0)
     , mnSvtGraphicStrokeCount(0)
@@ -564,7 +564,7 @@ VclMetafileProcessor2D::VclMetafileProcessor2D(const geometry::ViewInformation2D
                "VclMetafileProcessor2D: Used on OutDev which has no MetaFile Target (!)");
     // draw to logic coordinates, do not initialize maCurrentTransformation to viewTransformation
     // but only to ObjectTransformation. Do not change MapMode of destination.
-    maCurrentTransformation = rViewInformation.getObjectTransformation();
+    maCurrentTransformation = rParameters.getViewInformation().getObjectTransformation();
 }
 
 VclMetafileProcessor2D::~VclMetafileProcessor2D()
@@ -1123,7 +1123,7 @@ void VclMetafileProcessor2D::processControlPrimitive2D(
         {
             // still need to fill in the location (is a class Rectangle)
             const basegfx::B2DRange aRangeLogic(
-                rControlPrimitive.getB2DRange(getViewInformation2D()));
+                rControlPrimitive.getB2DRange(maVisitingParameters));
             const tools::Rectangle aRectLogic(static_cast<sal_Int32>(floor(aRangeLogic.getMinX())),
                                               static_cast<sal_Int32>(floor(aRangeLogic.getMinY())),
                                               static_cast<sal_Int32>(ceil(aRangeLogic.getMaxX())),
@@ -1234,7 +1234,7 @@ void VclMetafileProcessor2D::processTextHierarchyFieldPrimitive2D(
 
     // process recursively
     primitive2d::Primitive2DContainer rContent;
-    rFieldPrimitive.get2DDecomposition(rContent, getViewInformation2D());
+    rFieldPrimitive.get2DDecomposition(rContent, maVisitingParameters);
     process(rContent);
 
     // for the end comment the type is not relevant yet, they are all the same. Just add.
@@ -1245,7 +1245,7 @@ void VclMetafileProcessor2D::processTextHierarchyFieldPrimitive2D(
         return;
 
     // emulate data handling from ImpEditEngine::Paint
-    const basegfx::B2DRange aViewRange(rContent.getB2DRange(getViewInformation2D()));
+    const basegfx::B2DRange aViewRange(rContent.getB2DRange(maVisitingParameters));
     const tools::Rectangle aRectLogic(static_cast<sal_Int32>(floor(aViewRange.getMinX())),
                                       static_cast<sal_Int32>(floor(aViewRange.getMinY())),
                                       static_cast<sal_Int32>(ceil(aViewRange.getMaxX())),
@@ -2251,7 +2251,7 @@ void VclMetafileProcessor2D::processTransparencePrimitive2D(
         // transparence primitives with non-trivial transparence content) i will for now not
         // refine to tiling here.
 
-        basegfx::B2DRange aViewRange(rContent.getB2DRange(getViewInformation2D()));
+        basegfx::B2DRange aViewRange(rContent.getB2DRange(maVisitingParameters));
         aViewRange.transform(maCurrentTransformation);
         const tools::Rectangle aRectLogic(static_cast<sal_Int32>(floor(aViewRange.getMinX())),
                                           static_cast<sal_Int32>(floor(aViewRange.getMinY())),
@@ -2310,7 +2310,9 @@ void VclMetafileProcessor2D::processTransparencePrimitive2D(
                 getViewInformation2D().getObjectTransformation(), aViewTransform, aViewRange,
                 getViewInformation2D().getVisualizedPage(), getViewInformation2D().getViewTime());
 
-            VclPixelProcessor2D aBufferProcessor(aViewInfo, *aBufferDevice);
+            primitive2d::VisitingParameters aVisitingParameters(aViewInfo);
+
+            VclPixelProcessor2D aBufferProcessor(aVisitingParameters, *aBufferDevice);
 
             // draw content using pixel renderer
             const Point aEmptyPoint;
@@ -2440,14 +2442,16 @@ VclMetafileProcessor2D::CreateBufferDevice(const basegfx::B2DRange& rCandidateRa
 void VclMetafileProcessor2D::processPrimitive2DOnPixelProcessor(
     const primitive2d::BasePrimitive2D& rCandidate)
 {
-    basegfx::B2DRange aViewRange(rCandidate.getB2DRange(getViewInformation2D()));
+    basegfx::B2DRange aViewRange(rCandidate.getB2DRange(maVisitingParameters));
     geometry::ViewInformation2D aViewInfo;
     tools::Rectangle aRectLogic;
     Size aSizePixel;
     auto pBufferDevice(CreateBufferDevice(aViewRange, aViewInfo, aRectLogic, aSizePixel));
     if (pBufferDevice)
     {
-        VclPixelProcessor2D aBufferProcessor(aViewInfo, *pBufferDevice, maBColorModifierStack);
+        primitive2d::VisitingParameters aVisitingParameters(aViewInfo);
+        VclPixelProcessor2D aBufferProcessor(aVisitingParameters, *pBufferDevice,
+                                             maBColorModifierStack);
 
         // draw content using pixel renderer
         primitive2d::Primitive2DReference aRef(
diff --git a/drawinglayer/source/processor2d/vclmetafileprocessor2d.hxx b/drawinglayer/source/processor2d/vclmetafileprocessor2d.hxx
index 67a79ca307cc..4e3f812f3a06 100644
--- a/drawinglayer/source/processor2d/vclmetafileprocessor2d.hxx
+++ b/drawinglayer/source/processor2d/vclmetafileprocessor2d.hxx
@@ -203,7 +203,7 @@ protected:
 
 public:
     /// constructor/destructor
-    VclMetafileProcessor2D(const geometry::ViewInformation2D& rViewInformation,
+    VclMetafileProcessor2D(drawinglayer::primitive2d::VisitingParameters const& rParameters,
                            OutputDevice& rOutDev);
     virtual ~VclMetafileProcessor2D() override;
 };
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index a0990edf7645..28c6d6f9ffdb 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -78,14 +78,15 @@ struct VclPixelProcessor2D::Impl
     }
 };
 
-VclPixelProcessor2D::VclPixelProcessor2D(const geometry::ViewInformation2D& rViewInformation,
+VclPixelProcessor2D::VclPixelProcessor2D(primitive2d::VisitingParameters const& rVisitingParameters,
                                          OutputDevice& rOutDev,
                                          const basegfx::BColorModifierStack& rInitStack)
-    : VclProcessor2D(rViewInformation, rOutDev, rInitStack)
+    : VclProcessor2D(rVisitingParameters, rOutDev, rInitStack)
     , m_pImpl(new Impl(rOutDev))
 {
     // prepare maCurrentTransformation matrix with viewTransformation to target directly to pixels
-    maCurrentTransformation = rViewInformation.getObjectToViewTransformation();
+    maCurrentTransformation
+        = rVisitingParameters.getViewInformation().getObjectToViewTransformation();
 
     // prepare output directly to pixels
     mpOutputDevice->Push(PushFlags::MAPMODE);
@@ -1024,7 +1025,7 @@ AlphaMask ProcessAndBlurAlphaMask(const Bitmap& rMask, double fErodeDilateRadius
 
 void VclPixelProcessor2D::processGlowPrimitive2D(const primitive2d::GlowPrimitive2D& rCandidate)
 {
-    basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
+    basegfx::B2DRange aRange(rCandidate.getB2DRange(maVisitingParameters));
     aRange.transform(maCurrentTransformation);
     basegfx::B2DVector aGlowRadiusVector(rCandidate.getGlowRadius(), 0);
     // Calculate the pixel size of glow radius in current transformation
@@ -1092,7 +1093,7 @@ void VclPixelProcessor2D::processSoftEdgePrimitive2D(
     // borders, where they don't end. Ideally, process the full object once at maximal reasonable
     // resolution, and store the resulting alpha mask in primitive's cache; then reuse it later,
     // applying the transform.
-    basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
+    basegfx::B2DRange aRange(rCandidate.getB2DRange(maVisitingParameters));
     aRange.transform(maCurrentTransformation);
     basegfx::B2DVector aRadiusVector(rCandidate.getRadius(), 0);
     // Calculate the pixel size of soft edge radius in current transformation
@@ -1152,7 +1153,7 @@ void VclPixelProcessor2D::processShadowPrimitive2D(const primitive2d::ShadowPrim
         return;
     }
 
-    basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
+    basegfx::B2DRange aRange(rCandidate.getB2DRange(maVisitingParameters));
     aRange.transform(maCurrentTransformation);
     basegfx::B2DVector aBlurRadiusVector(rCandidate.getShadowBlur(), 0);
     aBlurRadiusVector *= maCurrentTransformation;
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.hxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.hxx
index 480fdcaa6e18..6a1b23db61fe 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.hxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.hxx
@@ -104,7 +104,8 @@ class VclPixelProcessor2D final : public VclProcessor2D
 
 public:
     /// constructor/destructor
-    VclPixelProcessor2D(const geometry::ViewInformation2D& rViewInformation, OutputDevice& rOutDev,
+    VclPixelProcessor2D(primitive2d::VisitingParameters const& rVisitingParameters,
+                        OutputDevice& rOutDev,
                         const basegfx::BColorModifierStack& rInitStack
                         = basegfx::BColorModifierStack());
     virtual ~VclPixelProcessor2D() override;
diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx
index ed40fdb4ee23..f7a4f95ef296 100644
--- a/drawinglayer/source/processor2d/vclprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx
@@ -828,7 +828,7 @@ void VclProcessor2D::RenderUnifiedTransparencePrimitive2D(
     else if (rTransCandidate.getTransparence() > 0.0 && rTransCandidate.getTransparence() < 1.0)
     {
         // transparence is in visible range
-        basegfx::B2DRange aRange(rTransCandidate.getChildren().getB2DRange(getViewInformation2D()));
+        basegfx::B2DRange aRange(rTransCandidate.getChildren().getB2DRange(maVisitingParameters));
         aRange.transform(maCurrentTransformation);
         impBufferDevice aBufferDevice(*mpOutputDevice, aRange);
 
@@ -857,7 +857,7 @@ void VclProcessor2D::RenderTransparencePrimitive2D(
     if (rTransCandidate.getChildren().empty())
         return;
 
-    basegfx::B2DRange aRange(rTransCandidate.getChildren().getB2DRange(getViewInformation2D()));
+    basegfx::B2DRange aRange(rTransCandidate.getChildren().getB2DRange(maVisitingParameters));
     aRange.transform(maCurrentTransformation);
     impBufferDevice aBufferDevice(*mpOutputDevice, aRange);
 
@@ -897,7 +897,7 @@ void VclProcessor2D::RenderTransformPrimitive2D(
 {
     // remember current transformation and ViewInformation
     const basegfx::B2DHomMatrix aLastCurrentTransformation(maCurrentTransformation);
-    const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
+    primitive2d::VisitingParameters aLastVisitingParameters(maVisitingParameters);
 
     // create new transformations for CurrentTransformation
     // and for local ViewInformation2D
@@ -906,14 +906,16 @@ void VclProcessor2D::RenderTransformPrimitive2D(
         getViewInformation2D().getObjectTransformation() * rTransformCandidate.getTransformation(),
         getViewInformation2D().getViewTransformation(), getViewInformation2D().getViewport(),
         getViewInformation2D().getVisualizedPage(), getViewInformation2D().getViewTime());
-    updateViewInformation(aViewInformation2D);
+
+    primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+    updateVisitingParameters(aVisitingParameters);
 
     // process content
     process(rTransformCandidate.getChildren());
 
     // restore transformations
     maCurrentTransformation = aLastCurrentTransformation;
-    updateViewInformation(aLastViewInformation2D);
+    updateVisitingParameters(aLastVisitingParameters);
 }
 
 // new XDrawPage for ViewInformation2D
@@ -921,20 +923,22 @@ void VclProcessor2D::RenderPagePreviewPrimitive2D(
     const primitive2d::PagePreviewPrimitive2D& rPagePreviewCandidate)
 {
     // remember current transformation and ViewInformation
-    const geometry::ViewInformation2D aLastViewInformation2D(getViewInformation2D());
+    primitive2d::VisitingParameters aLastVisitingParameters(maVisitingParameters);
 
     // create new local ViewInformation2D
     const geometry::ViewInformation2D aViewInformation2D(
         getViewInformation2D().getObjectTransformation(),
         getViewInformation2D().getViewTransformation(), getViewInformation2D().getViewport(),
         rPagePreviewCandidate.getXDrawPage(), getViewInformation2D().getViewTime());
-    updateViewInformation(aViewInformation2D);
+
+    primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+    updateVisitingParameters(aVisitingParameters);
 
     // process decomposed content
     process(rPagePreviewCandidate);
 
     // restore transformations
-    updateViewInformation(aLastViewInformation2D);
+    updateVisitingParameters(aLastVisitingParameters);
 }
 
 // marker
@@ -1467,10 +1471,10 @@ void VclProcessor2D::adaptTextToFillDrawMode() const
 
 // process support
 
-VclProcessor2D::VclProcessor2D(const geometry::ViewInformation2D& rViewInformation,
+VclProcessor2D::VclProcessor2D(primitive2d::VisitingParameters const& rVisitingParameters,
                                OutputDevice& rOutDev,
                                const basegfx::BColorModifierStack& rInitStack)
-    : BaseProcessor2D(rViewInformation)
+    : BaseProcessor2D(rVisitingParameters)
     , mpOutputDevice(&rOutDev)
     , maBColorModifierStack(rInitStack)
     , maCurrentTransformation()
diff --git a/drawinglayer/source/processor2d/vclprocessor2d.hxx b/drawinglayer/source/processor2d/vclprocessor2d.hxx
index 7e251aa0ca13..05638b83f7aa 100644
--- a/drawinglayer/source/processor2d/vclprocessor2d.hxx
+++ b/drawinglayer/source/processor2d/vclprocessor2d.hxx
@@ -116,7 +116,8 @@ protected:
 
 public:
     // constructor/destructor
-    VclProcessor2D(const geometry::ViewInformation2D& rViewInformation, OutputDevice& rOutDev,
+    VclProcessor2D(primitive2d::VisitingParameters const& rVisitingParameters,
+                   OutputDevice& rOutDev,
                    const basegfx::BColorModifierStack& rInitStack = basegfx::BColorModifierStack());
     virtual ~VclProcessor2D() override;
 
diff --git a/drawinglayer/source/tools/converters.cxx b/drawinglayer/source/tools/converters.cxx
index d8fe291bf803..123d822fe201 100644
--- a/drawinglayer/source/tools/converters.cxx
+++ b/drawinglayer/source/tools/converters.cxx
@@ -37,7 +37,7 @@ namespace drawinglayer
 
     BitmapEx convertToBitmapEx(
         const drawinglayer::primitive2d::Primitive2DContainer& rSeq,
-        const geometry::ViewInformation2D& rViewInformation2D,
+        drawinglayer::primitive2d::VisitingParameters const& rParameters,
         sal_uInt32 nDiscreteWidth,
         sal_uInt32 nDiscreteHeight,
         sal_uInt32 nMaxSquarePixels)
@@ -81,9 +81,7 @@ namespace drawinglayer
             // create pixel processor, also already takes care of AAing and
             // checking the getOptionsDrawinglayer().IsAntiAliasing() switch. If
             // not wanted, change after this call as needed
-            std::unique_ptr<processor2d::BaseProcessor2D> pContentProcessor = processor2d::createPixelProcessor2DFromOutputDevice(
-                *pContent,
-                rViewInformation2D);
+            auto pContentProcessor = processor2d::createPixelProcessor2DFromOutputDevice(*pContent, rParameters);
 
 #ifdef DBG_UTIL
             static bool bDoSaveForVisualControl(false); // loplugin:constvars:ignore
diff --git a/drawinglayer/source/tools/primitive2dxmldump.cxx b/drawinglayer/source/tools/primitive2dxmldump.cxx
index d48115baafa6..92cd1d92628f 100644
--- a/drawinglayer/source/tools/primitive2dxmldump.cxx
+++ b/drawinglayer/source/tools/primitive2dxmldump.cxx
@@ -208,6 +208,9 @@ void Primitive2dXmlDump::decomposeAndWrite(
     const drawinglayer::primitive2d::Primitive2DContainer& rPrimitive2DSequence,
     ::tools::XmlWriter& rWriter)
 {
+    drawinglayer::geometry::ViewInformation2D aInfo;
+    drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aInfo);
+
     for (size_t i = 0; i < rPrimitive2DSequence.size(); i++)
     {
         drawinglayer::primitive2d::Primitive2DReference xPrimitive2DReference
@@ -528,8 +531,9 @@ void Primitive2dXmlDump::decomposeAndWrite(
                 rWriter.startElement("metafile");
                 drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
                 // since the graphic is not rendered in a document, we do not need a concrete view information
-                rMetafilePrimitive2D.get2DDecomposition(
-                    aPrimitiveContainer, drawinglayer::geometry::ViewInformation2D());
+                drawinglayer::primitive2d::VisitingParameters aEmptyVisitingParameters;
+                rMetafilePrimitive2D.get2DDecomposition(aPrimitiveContainer,
+                                                        aEmptyVisitingParameters);
                 decomposeAndWrite(aPrimitiveContainer, rWriter);
                 rWriter.endElement();
             }
@@ -541,8 +545,7 @@ void Primitive2dXmlDump::decomposeAndWrite(
                 // SdrRectanglePrimitive2D is private to us.
                 rWriter.startElement("sdrrectangle");
                 drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
-                pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
-                                                   drawinglayer::geometry::ViewInformation2D());
+                pBasePrimitive->get2DDecomposition(aPrimitiveContainer, aVisitingParameters);
                 decomposeAndWrite(aPrimitiveContainer, rWriter);
                 rWriter.endElement();
                 break;
@@ -553,8 +556,7 @@ void Primitive2dXmlDump::decomposeAndWrite(
                 // SdrBlockTextPrimitive2D is private to us.
                 rWriter.startElement("sdrblocktext");
                 drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
-                pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
-                                                   drawinglayer::geometry::ViewInformation2D());
+                pBasePrimitive->get2DDecomposition(aPrimitiveContainer, aVisitingParameters);
                 decomposeAndWrite(aPrimitiveContainer, rWriter);
                 rWriter.endElement();
                 break;
@@ -565,8 +567,7 @@ void Primitive2dXmlDump::decomposeAndWrite(
                 // TextHierarchyBlockPrimitive2D.
                 rWriter.startElement("texthierarchyblock");
                 drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
-                pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
-                                                   drawinglayer::geometry::ViewInformation2D());
+                pBasePrimitive->get2DDecomposition(aPrimitiveContainer, aVisitingParameters);
                 decomposeAndWrite(aPrimitiveContainer, rWriter);
                 rWriter.endElement();
                 break;
@@ -577,8 +578,7 @@ void Primitive2dXmlDump::decomposeAndWrite(
                 // TextHierarchyParagraphPrimitive2D.
                 rWriter.startElement("texthierarchyparagraph");
                 drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
-                pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
-                                                   drawinglayer::geometry::ViewInformation2D());
+                pBasePrimitive->get2DDecomposition(aPrimitiveContainer, aVisitingParameters);
                 decomposeAndWrite(aPrimitiveContainer, rWriter);
                 rWriter.endElement();
                 break;
@@ -589,8 +589,7 @@ void Primitive2dXmlDump::decomposeAndWrite(
                 // TextHierarchyLinePrimitive2D.
                 rWriter.startElement("texthierarchyline");
                 drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
-                pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
-                                                   drawinglayer::geometry::ViewInformation2D());
+                pBasePrimitive->get2DDecomposition(aPrimitiveContainer, aVisitingParameters);
                 decomposeAndWrite(aPrimitiveContainer, rWriter);
                 rWriter.endElement();
                 break;
@@ -601,8 +600,7 @@ void Primitive2dXmlDump::decomposeAndWrite(
                 // ShadowPrimitive2D.
                 rWriter.startElement("shadow");
                 drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
-                pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
-                                                   drawinglayer::geometry::ViewInformation2D());
+                pBasePrimitive->get2DDecomposition(aPrimitiveContainer, aVisitingParameters);
                 decomposeAndWrite(aPrimitiveContainer, rWriter);
                 rWriter.endElement();
                 break;
@@ -615,8 +613,7 @@ void Primitive2dXmlDump::decomposeAndWrite(
                                   OUStringToOString(sCurrentElementTag, RTL_TEXTENCODING_UTF8));
                 rWriter.attribute("idNumber", nId);
                 drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer;
-                pBasePrimitive->get2DDecomposition(aPrimitiveContainer,
-                                                   drawinglayer::geometry::ViewInformation2D());
+                pBasePrimitive->get2DDecomposition(aPrimitiveContainer, aVisitingParameters);
                 decomposeAndWrite(aPrimitiveContainer, rWriter);
                 rWriter.endElement();
             }
diff --git a/include/drawinglayer/converters.hxx b/include/drawinglayer/converters.hxx
index 64d0e2ce7d4e..224c4d2f730d 100644
--- a/include/drawinglayer/converters.hxx
+++ b/include/drawinglayer/converters.hxx
@@ -24,10 +24,10 @@
 
 namespace drawinglayer
 {
-BitmapEx DRAWINGLAYER_DLLPUBLIC
-convertToBitmapEx(const drawinglayer::primitive2d::Primitive2DContainer& rSeq,
-                  const geometry::ViewInformation2D& rViewInformation2D, sal_uInt32 nDiscreteWidth,
-                  sal_uInt32 nDiscreteHeight, sal_uInt32 nMaxSquarePixels);
+BitmapEx DRAWINGLAYER_DLLPUBLIC convertToBitmapEx(
+    const drawinglayer::primitive2d::Primitive2DContainer& rSeq,
+    drawinglayer::primitive2d::VisitingParameters const& rParameters, sal_uInt32 nDiscreteWidth,
+    sal_uInt32 nDiscreteHeight, sal_uInt32 nMaxSquarePixels);
 
 } // end of namespace drawinglayer
 
diff --git a/include/drawinglayer/primitive2d/baseprimitive2d.hxx b/include/drawinglayer/primitive2d/baseprimitive2d.hxx
index 0337079e7801..938ff397f564 100644
--- a/include/drawinglayer/primitive2d/baseprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/baseprimitive2d.hxx
@@ -30,25 +30,22 @@
 #include <cppuhelper/basemutex.hxx>
 #include <basegfx/range/b2drange.hxx>
 #include <com/sun/star/graphic/XPrimitive2D.hpp>
-
-namespace drawinglayer::geometry
-{
-class ViewInformation2D;
-}
+#include <drawinglayer/geometry/viewinformation2d.hxx>
 
 namespace drawinglayer::primitive2d
 {
 class DRAWINGLAYERCORE_DLLPUBLIC VisitingParameters
 {
-    const geometry::ViewInformation2D& mrViewInformation;
+private:
+    geometry::ViewInformation2D maViewInformation;
 
 public:
-    VisitingParameters(const geometry::ViewInformation2D& rViewInformation)
-        : mrViewInformation(rViewInformation)
+    explicit VisitingParameters(const geometry::ViewInformation2D& rViewInformation)
+        : maViewInformation(rViewInformation)
     {
     }
 
-    const geometry::ViewInformation2D& getViewInformation() const { return mrViewInformation; }
+    const geometry::ViewInformation2D& getViewInformation() const { return maViewInformation; }
 };
 
 typedef cppu::WeakComponentImplHelper<css::graphic::XPrimitive2D, css::util::XAccounting>
diff --git a/include/drawinglayer/processor2d/baseprocessor2d.hxx b/include/drawinglayer/processor2d/baseprocessor2d.hxx
index 1f0bd46efb62..802434fd9009 100644
--- a/include/drawinglayer/processor2d/baseprocessor2d.hxx
+++ b/include/drawinglayer/processor2d/baseprocessor2d.hxx
@@ -152,18 +152,16 @@ namespace drawinglayer::processor2d
          */
         class DRAWINGLAYER_DLLPUBLIC BaseProcessor2D
         {
-        private:
-            /// The ViewInformation2D itself. It's private to isolate accesses to it
-            geometry::ViewInformation2D                     maViewInformation2D;
-
         protected:
+            primitive2d::VisitingParameters maVisitingParameters;
+
             /*  access method to allow the implementations to change the current
                 ViewInformation2D if needed. This allows isolating these accesses
                 later if needed
              */
-            void updateViewInformation(const geometry::ViewInformation2D& rViewInformation2D)
+            void updateVisitingParameters(primitive2d::VisitingParameters const & rVisitingParameters)
             {
-                maViewInformation2D = rViewInformation2D;
+                maVisitingParameters = rVisitingParameters;
             }
 
             /*  as tooling, the process() implementation takes over API handling and calls this
@@ -177,14 +175,17 @@ namespace drawinglayer::processor2d
 
         public:
             /// constructor/destructor
-            explicit BaseProcessor2D(const geometry::ViewInformation2D& rViewInformation);
+            explicit BaseProcessor2D(primitive2d::VisitingParameters const & rVisitingParameters);
             virtual ~BaseProcessor2D();
 
             /// the central processing method
             void process(const primitive2d::Primitive2DContainer& rSource);
 
             /// data read access
-            const geometry::ViewInformation2D& getViewInformation2D() const { return maViewInformation2D; }
+            const geometry::ViewInformation2D& getViewInformation2D() const
+            {
+                return maVisitingParameters.getViewInformation();
+            }
         };
 
 } // end of namespace drawinglayer::processor2d
diff --git a/include/drawinglayer/processor2d/contourextractor2d.hxx b/include/drawinglayer/processor2d/contourextractor2d.hxx
index 53158cc21291..dc9f708cc60e 100644
--- a/include/drawinglayer/processor2d/contourextractor2d.hxx
+++ b/include/drawinglayer/processor2d/contourextractor2d.hxx
@@ -46,7 +46,7 @@ namespace drawinglayer::processor2d
 
         public:
             explicit ContourExtractor2D(
-                const geometry::ViewInformation2D& rViewInformation,
+                primitive2d::VisitingParameters const& rVisitingParameters,
                 bool bExtractFillOnly);
 
             virtual ~ContourExtractor2D() override;
diff --git a/include/drawinglayer/processor2d/hittestprocessor2d.hxx b/include/drawinglayer/processor2d/hittestprocessor2d.hxx
index 9ba4ad55dcaa..cc7143ef4adb 100644
--- a/include/drawinglayer/processor2d/hittestprocessor2d.hxx
+++ b/include/drawinglayer/processor2d/hittestprocessor2d.hxx
@@ -68,7 +68,7 @@ namespace drawinglayer::processor2d
 
         public:
             HitTestProcessor2D(
-                const geometry::ViewInformation2D& rViewInformation,
+                primitive2d::VisitingParameters const& rVisitingParameters,
                 const basegfx::B2DPoint& rLogicHitPosition,
                 double fLogicHitTolerance,
                 bool bHitTextOnly);
diff --git a/include/drawinglayer/processor2d/linegeometryextractor2d.hxx b/include/drawinglayer/processor2d/linegeometryextractor2d.hxx
index a2a388dd12f3..d12e0ed698dd 100644
--- a/include/drawinglayer/processor2d/linegeometryextractor2d.hxx
+++ b/include/drawinglayer/processor2d/linegeometryextractor2d.hxx
@@ -46,7 +46,7 @@ namespace drawinglayer::processor2d
             void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate) override;
 
         public:
-            LineGeometryExtractor2D(const geometry::ViewInformation2D& rViewInformation);
+            LineGeometryExtractor2D(primitive2d::VisitingParameters const& rVisitingParameters);
             virtual ~LineGeometryExtractor2D() override;
 
             const basegfx::B2DPolygonVector& getExtractedHairlines() const { return maExtractedHairlines; }
diff --git a/include/drawinglayer/processor2d/objectinfoextractor2d.hxx b/include/drawinglayer/processor2d/objectinfoextractor2d.hxx
index f7dc1d146885..3c537b09d83c 100644
--- a/include/drawinglayer/processor2d/objectinfoextractor2d.hxx
+++ b/include/drawinglayer/processor2d/objectinfoextractor2d.hxx
@@ -41,7 +41,7 @@ namespace drawinglayer::processor2d
             void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate) override;
 
         public:
-            ObjectInfoPrimitiveExtractor2D(const geometry::ViewInformation2D& rViewInformation);
+            ObjectInfoPrimitiveExtractor2D(primitive2d::VisitingParameters const& rVisitingParameters);
             virtual ~ObjectInfoPrimitiveExtractor2D() override;
 
             const primitive2d::ObjectInfoPrimitive2D* getResult() const { return mpFound; }
diff --git a/include/drawinglayer/processor2d/processor2dtools.hxx b/include/drawinglayer/processor2d/processor2dtools.hxx
index 86ad2562e711..0b18a1687012 100644
--- a/include/drawinglayer/processor2d/processor2dtools.hxx
+++ b/include/drawinglayer/processor2d/processor2dtools.hxx
@@ -22,8 +22,8 @@
 #include <drawinglayer/drawinglayerdllapi.h>
 #include <memory>
 
-namespace drawinglayer::geometry { class ViewInformation2D; }
 namespace drawinglayer::processor2d { class BaseProcessor2D; }
+namespace drawinglayer::primitive2d { class VisitingParameters; }
 
 class OutputDevice;
 
@@ -43,7 +43,7 @@ namespace drawinglayer::processor2d
         */
         DRAWINGLAYER_DLLPUBLIC std::unique_ptr<BaseProcessor2D> createPixelProcessor2DFromOutputDevice(
             OutputDevice& rTargetOutDev,
-            const drawinglayer::geometry::ViewInformation2D& rViewInformation2D);
+            drawinglayer::primitive2d::VisitingParameters const& rParameters);
 
         /** create a BaseProcessor2D dependent on some states of the
             given OutputDevice. If metafile is recorded, the needed
@@ -61,7 +61,7 @@ namespace drawinglayer::processor2d
         */
         DRAWINGLAYER_DLLPUBLIC std::unique_ptr<BaseProcessor2D> createProcessor2DFromOutputDevice(
             OutputDevice& rTargetOutDev,
-            const drawinglayer::geometry::ViewInformation2D& rViewInformation2D);
+            drawinglayer::primitive2d::VisitingParameters const& rParameters);
 
 
 } // end of namespace drawinglayer::processor2d
diff --git a/include/drawinglayer/processor2d/processorfromoutputdevice.hxx b/include/drawinglayer/processor2d/processorfromoutputdevice.hxx
index f5ba9da79987..fb434f229739 100644
--- a/include/drawinglayer/processor2d/processorfromoutputdevice.hxx
+++ b/include/drawinglayer/processor2d/processorfromoutputdevice.hxx
@@ -38,7 +38,7 @@ namespace drawinglayer::processor2d
         // deletion is duty of the caller
         DRAWINGLAYER_DLLPUBLIC std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> createBaseProcessor2DFromOutputDevice(
             OutputDevice& rTargetOutDev,
-            const drawinglayer::geometry::ViewInformation2D& rViewInformation2D);
+            drawinglayer::primitive2d::VisitingParameters const& rParameters);
 
 } // end of namespace drawinglayer::processor2d
 
diff --git a/include/drawinglayer/processor2d/textaspolygonextractor2d.hxx b/include/drawinglayer/processor2d/textaspolygonextractor2d.hxx
index 42e2376f0b58..cc2e78049bdf 100644
--- a/include/drawinglayer/processor2d/textaspolygonextractor2d.hxx
+++ b/include/drawinglayer/processor2d/textaspolygonextractor2d.hxx
@@ -79,7 +79,7 @@ namespace drawinglayer::processor2d
             void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate) override;
 
         public:
-            explicit TextAsPolygonExtractor2D(const geometry::ViewInformation2D& rViewInformation);
+            explicit TextAsPolygonExtractor2D(primitive2d::VisitingParameters const& rVisitingParameters);
             virtual ~TextAsPolygonExtractor2D() override;
 
             // data read access
diff --git a/sc/source/ui/miscdlgs/autofmt.cxx b/sc/source/ui/miscdlgs/autofmt.cxx
index 23f77ee76cab..1a3a9360ed9e 100644
--- a/sc/source/ui/miscdlgs/autofmt.cxx
+++ b/sc/source/ui/miscdlgs/autofmt.cxx
@@ -399,10 +399,9 @@ void ScAutoFmtPreview::PaintCells(vcl::RenderContext& rRenderContext)
         return;
 
     const drawinglayer::geometry::ViewInformation2D aNewViewInformation2D;
-    std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor2D(
-        drawinglayer::processor2d::createPixelProcessor2DFromOutputDevice(
-            rRenderContext,
-            aNewViewInformation2D));
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aNewViewInformation2D);
+    auto pProcessor2D = drawinglayer::processor2d::createPixelProcessor2DFromOutputDevice(
+        rRenderContext, aVisitingParameters);
 
     pProcessor2D->process(maArray.CreateB2DPrimitiveArray());
     pProcessor2D.reset();
diff --git a/sc/source/ui/view/hintwin.cxx b/sc/source/ui/view/hintwin.cxx
index a9131828b30f..4dfa976816a4 100644
--- a/sc/source/ui/view/hintwin.cxx
+++ b/sc/source/ui/view/hintwin.cxx
@@ -88,8 +88,9 @@ drawinglayer::primitive2d::Primitive2DContainer ScOverlayHint::createOverlaySequ
     Point aTextStart(nLeft + aHintMargin.Width() + aIndent.Width(),
                      nTop + aHintMargin.Height() + aFontMetric.GetLineHeight() + aIndent.Height());
 
-    drawinglayer::geometry::ViewInformation2D aDummy;
-    rRange.expand(pTitle->getB2DRange(aDummy));
+    drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+    rRange.expand(pTitle->getB2DRange(aVisitingParameters));
 
     drawinglayer::primitive2d::Primitive2DContainer aSeq { pTitle };
 
@@ -125,7 +126,7 @@ drawinglayer::primitive2d::Primitive2DContainer ScOverlayHint::createOverlaySequ
                                                 std::vector<double>(), aFontAttr, css::lang::Locale(),
                                                 rColor.getBColor());
 
-        rRange.expand(pMessage->getB2DRange(aDummy));
+        rRange.expand(pMessage->getB2DRange(aVisitingParameters));
 
         aSeq.push_back(pMessage);
 
diff --git a/sc/source/ui/view/output.cxx b/sc/source/ui/view/output.cxx
index e02fde75aede..6fcce0c04151 100644
--- a/sc/source/ui/view/output.cxx
+++ b/sc/source/ui/view/output.cxx
@@ -1723,8 +1723,8 @@ std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> ScOutputData::Create
             GetXDrawPageForSdrPage( pDrawPage ),
             0.0);
 
-    return drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice(
-                    *mpDev, aNewViewInfos );
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aNewViewInfos);
+    return drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice(*mpDev, aVisitingParameters);
 }
 
 // Printer
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index a6b395a0b666..161a9c4cc0d9 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -898,9 +898,8 @@ void ThumbnailView::Paint(vcl::RenderContext& rRenderContext, const ::tools::Rec
 
     // Create the processor and process the primitives
     const drawinglayer::geometry::ViewInformation2D aNewViewInfos;
-
-    std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor(
-        drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice(rRenderContext, aNewViewInfos));
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aNewViewInfos);
+    auto pProcessor = drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice(rRenderContext, aVisitingParameters);
     pProcessor->process(aSeq);
 
     // draw items
diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx
index 40095a7b8a25..4bf7cef6f848 100644
--- a/sfx2/source/dialog/infobar.cxx
+++ b/sfx2/source/dialog/infobar.cxx
@@ -107,8 +107,9 @@ void SfxInfoBarWindow::SetCloseButtonImage()
     Point aBtnPos(0, 0);
 
     const ViewInformation2D aNewViewInfos;
-    const unique_ptr<BaseProcessor2D> pProcessor(
-        createBaseProcessor2DFromOutputDevice(*xDevice, aNewViewInfos));
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aNewViewInfos);
+    auto pProcessor = drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice(
+        *xDevice, aVisitingParameters);
 
     const ::tools::Rectangle aRect(aBtnPos, xDevice->PixelToLogic(aSize));
 
diff --git a/svgio/source/svgreader/svgclippathnode.cxx b/svgio/source/svgreader/svgclippathnode.cxx
index 1a8269684095..6688791ad207 100644
--- a/svgio/source/svgreader/svgclippathnode.cxx
+++ b/svgio/source/svgreader/svgclippathnode.cxx
@@ -129,6 +129,7 @@ namespace svgio::svgreader
                 return;
 
             const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+            const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
             drawinglayer::primitive2d::Primitive2DContainer aClipTarget;
             basegfx::B2DPolyPolygon aClipPolyPolygon;
 
@@ -138,7 +139,7 @@ namespace svgio::svgreader
             if(!aClipTarget.empty())
             {
                 // extract filled polygons as base for a mask PolyPolygon
-                drawinglayer::processor2d::ContourExtractor2D aExtractor(aViewInformation2D, true);
+                drawinglayer::processor2d::ContourExtractor2D aExtractor(aVisitingParameters, true);
 
                 aExtractor.process(aClipTarget);
 
@@ -161,7 +162,7 @@ namespace svgio::svgreader
                 if (SvgUnits::objectBoundingBox == getClipPathUnits())
                 {
                     // clip is object-relative, transform using content transformation
-                    const basegfx::B2DRange aContentRange(rContent.getB2DRange(aViewInformation2D));
+                    const basegfx::B2DRange aContentRange(rContent.getB2DRange(aVisitingParameters));
 
                     aClipPolyPolygon.transform(
                         basegfx::utils::createScaleTranslateB2DHomMatrix(
@@ -187,9 +188,7 @@ namespace svgio::svgreader
                     // ClipRegion is a rectangle, thus it is not expensive to tell
                     // if the content is completely inside or outside of it; get ranges
                     const basegfx::B2DRange aClipRange(aClipPolyPolygon.getB2DRange());
-                    const basegfx::B2DRange aContentRange(
-                        rContent.getB2DRange(
-                            aViewInformation2D));
+                    const basegfx::B2DRange aContentRange(rContent.getB2DRange(aVisitingParameters));
 
                     if(aClipRange.isInside(aContentRange))
                     {
diff --git a/svgio/source/svgreader/svgimagenode.cxx b/svgio/source/svgreader/svgimagenode.cxx
index feaf5933ad53..05b07b739be1 100644
--- a/svgio/source/svgreader/svgimagenode.cxx
+++ b/svgio/source/svgreader/svgimagenode.cxx
@@ -265,7 +265,9 @@ namespace svgio::svgreader
 
                     if(!aNewTarget.empty())
                     {
-                        aViewBox = aNewTarget.getB2DRange(drawinglayer::geometry::ViewInformation2D());
+                        const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+                        const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                        aViewBox = aNewTarget.getB2DRange(aVisitingParameters);
                     }
                 }
             }
diff --git a/svgio/source/svgreader/svgmasknode.cxx b/svgio/source/svgreader/svgmasknode.cxx
index 7f3ab9a772ca..c2f2c5e0c7fc 100644
--- a/svgio/source/svgreader/svgmasknode.cxx
+++ b/svgio/source/svgreader/svgmasknode.cxx
@@ -201,9 +201,9 @@ namespace svgio::svgreader
             if(!aMaskTarget.empty())
             {
                 // get range of content to be masked
-                const basegfx::B2DRange aContentRange(
-                        rTarget.getB2DRange(
-                            drawinglayer::geometry::ViewInformation2D()));
+                const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+                const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                const basegfx::B2DRange aContentRange = rTarget.getB2DRange(aVisitingParameters);
                 const double fContentWidth(aContentRange.getWidth());
                 const double fContentHeight(aContentRange.getHeight());
 
diff --git a/svgio/source/svgreader/svgstyleattributes.cxx b/svgio/source/svgreader/svgstyleattributes.cxx
index 8ad08b0414e2..7092f7aa8b0e 100644
--- a/svgio/source/svgreader/svgstyleattributes.cxx
+++ b/svgio/source/svgreader/svgstyleattributes.cxx
@@ -280,7 +280,8 @@ namespace svgio::svgreader
                 // text geometry is needed, create
                 // use neutral ViewInformation and create LineGeometryExtractor2D
                 const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
-                drawinglayer::processor2d::TextAsPolygonExtractor2D aExtractor(aViewInformation2D);
+                const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                drawinglayer::processor2d::TextAsPolygonExtractor2D aExtractor(aVisitingParameters);
 
                 // process
                 aExtractor.process(rSource);
@@ -750,7 +751,8 @@ namespace svgio::svgreader
 
                 // use neutral ViewInformation and create LineGeometryExtractor2D
                 const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
-                drawinglayer::processor2d::LineGeometryExtractor2D aExtractor(aViewInformation2D);
+                const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                drawinglayer::processor2d::LineGeometryExtractor2D aExtractor(aVisitingParameters);
 
                 // process
                 aExtractor.process(aSeq);
diff --git a/svgio/source/svgreader/svgsvgnode.cxx b/svgio/source/svgreader/svgsvgnode.cxx
index 082b8f89a715..27bba449da52 100644
--- a/svgio/source/svgreader/svgsvgnode.cxx
+++ b/svgio/source/svgreader/svgsvgnode.cxx
@@ -357,9 +357,9 @@ namespace svgio::svgreader
                                 // Even outermost svg has not all information to resolve relative values,
                                 // I use content itself as fallback to set missing values for viewport
                                 // Any better idea for such ill structured svg documents?
-                                const basegfx::B2DRange aChildRange(
-                                            aSequence.getB2DRange(
-                                                drawinglayer::geometry::ViewInformation2D()));
+                                const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+                                const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                                const basegfx::B2DRange aChildRange = aSequence.getB2DRange(aVisitingParameters);
                                 fWReference = aChildRange.getWidth();
                             }
                         }
@@ -391,9 +391,9 @@ namespace svgio::svgreader
                             // Even outermost svg has not all information to resolve relative values,
                                 // I use content itself as fallback to set missing values for viewport
                                 // Any better idea for such ill structured svg documents?
-                                const basegfx::B2DRange aChildRange(
-                                        aSequence.getB2DRange(
-                                            drawinglayer::geometry::ViewInformation2D()));
+                                const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+                                const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                                const basegfx::B2DRange aChildRange = aSequence.getB2DRange(aVisitingParameters);
                                 fHReference = aChildRange.getHeight();
                             }
                         }
@@ -593,9 +593,10 @@ namespace svgio::svgreader
                             {
                                 // There exists no parent to resolve relative width or height.
                                 // Use child size as fallback. We get viewport >= content, therefore no clipping.
-                                const basegfx::B2DRange aChildRange(
-                                     aSequence.getB2DRange(
-                                         drawinglayer::geometry::ViewInformation2D()));
+                                const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+                                const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                                const basegfx::B2DRange aChildRange = aSequence.getB2DRange(aVisitingParameters);
+
                                 const double fChildWidth(aChildRange.getWidth());
                                 const double fChildHeight(aChildRange.getHeight());
                                 const double fChildLeft(aChildRange.getMinX());
@@ -617,9 +618,9 @@ namespace svgio::svgreader
 
                         // different from Svg we have the possibility with primitives to get
                         // a correct bounding box for the geometry. Get it for evtl. taking action
-                        const basegfx::B2DRange aContentRange(
-                            aSequence.getB2DRange(
-                                drawinglayer::geometry::ViewInformation2D()));
+                        const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+                        const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                        const basegfx::B2DRange aContentRange = aSequence.getB2DRange(aVisitingParameters);
 
                         if(aSvgCanvasRange.isInside(aContentRange))
                         {
diff --git a/svx/source/dialog/frmsel.cxx b/svx/source/dialog/frmsel.cxx
index 75e1a066ec63..9eac8ae76039 100644
--- a/svx/source/dialog/frmsel.cxx
+++ b/svx/source/dialog/frmsel.cxx
@@ -690,10 +690,9 @@ void FrameSelectorImpl::DrawAllFrameBorders()
     // This is one more hint to enhance the primitive visualization further to
     // support diagonals better - that's the way to go.
     const drawinglayer::geometry::ViewInformation2D aNewViewInformation2D;
-    std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor2D(
-        drawinglayer::processor2d::createPixelProcessor2DFromOutputDevice(
-            *mpVirDev,
-            aNewViewInformation2D));
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aNewViewInformation2D);
+    auto pProcessor2D = drawinglayer::processor2d::createPixelProcessor2DFromOutputDevice(
+            *mpVirDev, aVisitingParameters);
 
     pProcessor2D->process(maArray.CreateB2DPrimitiveArray());
     pProcessor2D.reset();
diff --git a/svx/source/dialog/pagectrl.cxx b/svx/source/dialog/pagectrl.cxx
index 028491bbbf78..6f13fc0e6594 100644
--- a/svx/source/dialog/pagectrl.cxx
+++ b/svx/source/dialog/pagectrl.cxx
@@ -360,8 +360,10 @@ void SvxPageWindow::drawFillAttributes(vcl::RenderContext& rRenderContext,
     const drawinglayer::geometry::ViewInformation2D aViewInformation2D(
                     basegfx::B2DHomMatrix(), rRenderContext.GetViewTransformation(), aPaintRange, nullptr, 0.0);
 
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+
     std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor(
-        drawinglayer::processor2d::createProcessor2DFromOutputDevice(rRenderContext, aViewInformation2D));
+        drawinglayer::processor2d::createProcessor2DFromOutputDevice(rRenderContext, aVisitingParameters));
     pProcessor->process(aSequence);
 }
 
diff --git a/svx/source/sdr/contact/objectcontactofobjlistpainter.cxx b/svx/source/sdr/contact/objectcontactofobjlistpainter.cxx
index d59d320acb34..1cf441125d68 100644
--- a/svx/source/sdr/contact/objectcontactofobjlistpainter.cxx
+++ b/svx/source/sdr/contact/objectcontactofobjlistpainter.cxx
@@ -118,9 +118,10 @@ void ObjectContactOfObjListPainter::ProcessDisplay(DisplayInfo& rDisplayInfo)
     // if there is something to show, use a vclProcessor to render it
     if(!xPrimitiveSequence.empty())
     {
+        const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(getViewInformation2D());
         std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor2D(drawinglayer::processor2d::createProcessor2DFromOutputDevice(
             *pTargetDevice,
-            getViewInformation2D()));
+            aVisitingParameters));
 
         pProcessor2D->process(xPrimitiveSequence);
     }
diff --git a/svx/source/sdr/contact/objectcontactofpageview.cxx b/svx/source/sdr/contact/objectcontactofpageview.cxx
index 150735030ea5..8d6e9037204b 100644
--- a/svx/source/sdr/contact/objectcontactofpageview.cxx
+++ b/svx/source/sdr/contact/objectcontactofpageview.cxx
@@ -271,9 +271,10 @@ namespace sdr::contact
                 pOutDev->SetLayoutMode(ComplexTextLayoutFlags::Default); // reset, default is no BiDi/RTL
 
                 // create renderer
+                const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(getViewInformation2D());
                 std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor2D(
                     drawinglayer::processor2d::createProcessor2DFromOutputDevice(
-                        rTargetOutDev, getViewInformation2D()));
+                        rTargetOutDev, aVisitingParameters));
 
                 pProcessor2D->process(xPrimitiveSequence);
             }
diff --git a/svx/source/sdr/contact/viewcontactofgraphic.cxx b/svx/source/sdr/contact/viewcontactofgraphic.cxx
index 7450b25be1a4..3ac2ddf24d99 100644
--- a/svx/source/sdr/contact/viewcontactofgraphic.cxx
+++ b/svx/source/sdr/contact/viewcontactofgraphic.cxx
@@ -270,7 +270,8 @@ namespace sdr::contact
                     // decompose immediately with neutral ViewInformation. This will
                     // layout the text to more simple TextPrimitives from drawinglayer
                     const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
-                    xBlockTextPrimitive->get2DDecomposition(xRetval, aViewInformation2D);
+                    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                    xBlockTextPrimitive->get2DDecomposition(xRetval, aVisitingParameters);
                 }
 
                 // always use SdrObject::Free(...) for SdrObjects (!)
diff --git a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
index 0c53ef5a4499..4f005ee8c091 100644
--- a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
@@ -166,7 +166,9 @@ basegfx::B2DRange ViewContactOfSdrOle2Obj::getRange( const drawinglayer::geometr
             aObjectMatrix,
             aAttribute));
 
-    return drawinglayer::primitive2d::getB2DRangeFromPrimitive2DReference(xReference, rViewInfo2D);
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(rViewInfo2D);
+
+    return drawinglayer::primitive2d::getB2DRangeFromPrimitive2DReference(xReference, aVisitingParameters);
 }
 
 drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrOle2Obj::createViewIndependentPrimitive2DSequence() const
diff --git a/svx/source/sdr/contact/viewobjectcontact.cxx b/svx/source/sdr/contact/viewobjectcontact.cxx
index e65c2bab1d6e..cd69e03037c6 100644
--- a/svx/source/sdr/contact/viewobjectcontact.cxx
+++ b/svx/source/sdr/contact/viewobjectcontact.cxx
@@ -61,7 +61,7 @@ protected:
 
 public:
     AnimatedExtractingProcessor2D(
-        const drawinglayer::geometry::ViewInformation2D& rViewInformation,
+        drawinglayer::primitive2d::VisitingParameters const& rParameters,
         bool bTextAnimationAllowed,
         bool bGraphicAnimationAllowed);
 
@@ -70,10 +70,10 @@ public:
 };
 
 AnimatedExtractingProcessor2D::AnimatedExtractingProcessor2D(
-    const drawinglayer::geometry::ViewInformation2D& rViewInformation,
+    drawinglayer::primitive2d::VisitingParameters const& rParameters,
     bool bTextAnimationAllowed,
     bool bGraphicAnimationAllowed)
-:   drawinglayer::processor2d::BaseProcessor2D(rViewInformation),
+:   drawinglayer::processor2d::BaseProcessor2D(rParameters),
     maPrimitive2DSequence(),
     mbTextAnimationAllowed(bTextAnimationAllowed),
     mbGraphicAnimationAllowed(bGraphicAnimationAllowed)
@@ -199,8 +199,9 @@ const basegfx::B2DRange& ViewObjectContact::getObjectRange() const
 
             if(!xSequence.empty())
             {
+                const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(rViewInfo2D);
                 const_cast< ViewObjectContact* >(this)->maObjectRange =
-                    xSequence.getB2DRange(rViewInfo2D);
+                    xSequence.getB2DRange(aVisitingParameters);
             }
         }
     }
@@ -279,8 +280,9 @@ void ViewObjectContact::checkForPrimitive2DAnimations()
 
     if(bTextAnimationAllowed || bGraphicAnimationAllowed)
     {
-        AnimatedExtractingProcessor2D aAnimatedExtractor(GetObjectContact().getViewInformation2D(),
-            bTextAnimationAllowed, bGraphicAnimationAllowed);
+        const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(GetObjectContact().getViewInformation2D());
+
+        AnimatedExtractingProcessor2D aAnimatedExtractor(aVisitingParameters, bTextAnimationAllowed, bGraphicAnimationAllowed);
         aAnimatedExtractor.process(mxPrimitive2DSequence);
 
         if(!aAnimatedExtractor.getPrimitive2DSequence().empty())
@@ -357,7 +359,8 @@ drawinglayer::primitive2d::Primitive2DContainer const & ViewObjectContact::getPr
 
     // always update object range when PrimitiveSequence changes
     const drawinglayer::geometry::ViewInformation2D& rViewInformation2D(GetObjectContact().getViewInformation2D());
-    const_cast< ViewObjectContact* >(this)->maObjectRange = mxPrimitive2DSequence.getB2DRange(rViewInformation2D);
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(rViewInformation2D);
+    const_cast< ViewObjectContact* >(this)->maObjectRange = mxPrimitive2DSequence.getB2DRange(aVisitingParameters);
 
     // check and eventually embed to GridOffset transform primitive
     if(GetObjectContact().supportsGridOffsets())
@@ -417,7 +420,8 @@ drawinglayer::primitive2d::Primitive2DContainer ViewObjectContact::getPrimitive2
         {
             // get ranges
             const drawinglayer::geometry::ViewInformation2D& rViewInformation2D(GetObjectContact().getViewInformation2D());
-            const basegfx::B2DRange aObjectRange(xRetval.getB2DRange(rViewInformation2D));
+            const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(rViewInformation2D);
+            const basegfx::B2DRange aObjectRange(xRetval.getB2DRange(aVisitingParameters));
             const basegfx::B2DRange aViewRange(rViewInformation2D.getViewport());
 
             // check geometrical visibility
diff --git a/svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx b/svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx
index 0efa4c01750f..e878d4cf0b7d 100644
--- a/svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx
@@ -108,7 +108,8 @@ namespace sdr::contact
             {
                 // get range of MasterPage sub hierarchy
                 const drawinglayer::geometry::ViewInformation2D& rViewInformation2D(GetObjectContact().getViewInformation2D());
-                const basegfx::B2DRange aSubHierarchyRange(xMasterPageSequence.getB2DRange(rViewInformation2D));
+                const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(rViewInformation2D);
+                const basegfx::B2DRange aSubHierarchyRange(xMasterPageSequence.getB2DRange(aVisitingParameters));
 
                 if (rPageFillRange.isInside(aSubHierarchyRange))
                 {
diff --git a/svx/source/sdr/contact/viewobjectcontactofsdrpage.cxx b/svx/source/sdr/contact/viewobjectcontactofsdrpage.cxx
index ef973ecea8c8..aeba359b5d8d 100644
--- a/svx/source/sdr/contact/viewobjectcontactofsdrpage.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofsdrpage.cxx
@@ -382,8 +382,10 @@ drawinglayer::primitive2d::Primitive2DContainer ViewObjectContactOfPageHierarchy
         if(!xRetval.empty())
         {
             // get ranges
+
             const drawinglayer::geometry::ViewInformation2D& rViewInformation2D(GetObjectContact().getViewInformation2D());
-            const basegfx::B2DRange aObjectRange(xRetval.getB2DRange(rViewInformation2D));
+            const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(rViewInformation2D);
+            const basegfx::B2DRange aObjectRange(xRetval.getB2DRange(aVisitingParameters));
             const basegfx::B2DRange aViewRange(rViewInformation2D.getViewport());
 
             // check geometrical visibility
@@ -608,7 +610,8 @@ drawinglayer::primitive2d::Primitive2DContainer ViewObjectContactOfSdrPage::getP
         {
             // get ranges
             const drawinglayer::geometry::ViewInformation2D& rViewInformation2D(GetObjectContact().getViewInformation2D());
-            const basegfx::B2DRange aObjectRange(xRetval.getB2DRange(rViewInformation2D));
+            const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(rViewInformation2D);
+            const basegfx::B2DRange aObjectRange(xRetval.getB2DRange(aVisitingParameters));
             const basegfx::B2DRange aViewRange(rViewInformation2D.getViewport());
 
             // check geometrical visibility
diff --git a/svx/source/sdr/overlay/overlaymanager.cxx b/svx/source/sdr/overlay/overlaymanager.cxx
index 7a8e1a62bd2e..445b9bba5144 100644
--- a/svx/source/sdr/overlay/overlaymanager.cxx
+++ b/svx/source/sdr/overlay/overlaymanager.cxx
@@ -47,9 +47,9 @@ namespace sdr::overlay
             const bool bIsAntiAliasing(SvtOptionsDrawinglayer::IsAntiAliasing());
 
             // create processor
+            const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(getCurrentViewInformation2D());
             std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor(drawinglayer::processor2d::createProcessor2DFromOutputDevice(
-                rDestinationDevice,
-                getCurrentViewInformation2D()));
+                rDestinationDevice, aVisitingParameters));
 
             for(const auto& rpOverlayObject : maOverlayObjects)
             {
diff --git a/svx/source/sdr/overlay/overlayobject.cxx b/svx/source/sdr/overlay/overlayobject.cxx
index 1be8b6f633cc..ddb289710de9 100644
--- a/svx/source/sdr/overlay/overlayobject.cxx
+++ b/svx/source/sdr/overlay/overlayobject.cxx
@@ -134,9 +134,9 @@ namespace sdr::overlay
                 if(!rSequence.empty())
                 {
                     const drawinglayer::geometry::ViewInformation2D aViewInformation2D(getOverlayManager()->getCurrentViewInformation2D());
-
+                    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
                     const_cast< sdr::overlay::OverlayObject* >(this)->maBaseRange =
-                        rSequence.getB2DRange(aViewInformation2D);
+                        rSequence.getB2DRange(aVisitingParameters);
                 }
             }
 
diff --git a/svx/source/sdr/overlay/overlayobjectlist.cxx b/svx/source/sdr/overlay/overlayobjectlist.cxx
index f3e9c9633ccd..cb8bdc1589e1 100644
--- a/svx/source/sdr/overlay/overlayobjectlist.cxx
+++ b/svx/source/sdr/overlay/overlayobjectlist.cxx
@@ -77,8 +77,9 @@ namespace sdr::overlay
                     }
 
                     const drawinglayer::geometry::ViewInformation2D& aViewInformation2D(pManager->getCurrentViewInformation2D());
+                    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
                     drawinglayer::processor2d::HitTestProcessor2D aHitTestProcessor2D(
-                        aViewInformation2D,
+                        aVisitingParameters,
                         rLogicPosition,
                         fLogicTolerance,
                         false);
diff --git a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
index e75ad0a3c6a5..8a123cded816 100644
--- a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
+++ b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
@@ -447,9 +447,10 @@ basegfx::B2DRange getTextAnchorRange(const attribute::SdrTextAttribute& rText,
                     // create neutral geometry::ViewInformation2D for local range and decompose calls. This is okay
                     // since the decompose is view-independent
                     geometry::ViewInformation2D aViewInformation2D;
+                    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
 
                     // get range
-                    const basegfx::B2DRange aScaledRange(pNew->getB2DRange(aViewInformation2D));
+                    const basegfx::B2DRange aScaledRange(pNew->getB2DRange(aVisitingParameters));
 
                     // create left outside and right outside transformations. Also take care
                     // of the clip rectangle
@@ -494,7 +495,7 @@ basegfx::B2DRange getTextAnchorRange(const attribute::SdrTextAttribute& rText,
                         // need the outliner for formatting (alternatively it is also possible to just add
                         // pNew to aNewPrimitiveSequence)
                         Primitive2DContainer aAnimSequence;
-                        pNew->get2DDecomposition(aAnimSequence, aViewInformation2D);
+                        pNew->get2DDecomposition(aAnimSequence, aVisitingParameters);
                         pNew.clear();
 
                         // create a new animatedInterpolatePrimitive and add it
diff --git a/svx/source/svdraw/sdrhittesthelper.cxx b/svx/source/svdraw/sdrhittesthelper.cxx
index 2a93dc372555..8a56ebce5a0d 100644
--- a/svx/source/svdraw/sdrhittesthelper.cxx
+++ b/svx/source/svdraw/sdrhittesthelper.cxx
@@ -142,8 +142,10 @@ bool ViewObjectContactPrimitiveHit(
             {
                 // create a HitTest processor
                 const drawinglayer::geometry::ViewInformation2D& rViewInformation2D = rVOC.GetObjectContact().getViewInformation2D();
+                const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(rViewInformation2D);
+
                 drawinglayer::processor2d::HitTestProcessor2D aHitTestProcessor2D(
-                    rViewInformation2D,
+                    aVisitingParameters,
                     rHitPosition,
                     fLogicHitTolerance,
                     bTextOnly);
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index e7a3f18076f1..763d2973a489 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -771,9 +771,10 @@ void SdrObjEditView::ImpPaintOutlinerView(OutlinerView& rOutlView, const tools::
     {
         // completely reworked to use primitives; this ensures same look and functionality
         const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+        const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
         std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> xProcessor(
             drawinglayer::processor2d::createProcessor2DFromOutputDevice(rTargetDevice,
-                                                                         aViewInformation2D));
+                                                                         aVisitingParameters));
 
         const bool bMapModeEnabled(rTargetDevice.IsMapModeEnabled());
         const basegfx::B2DRange aRange = vcl::unotools::b2DRectangleFromRectangle(aPixRect);
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index 15b9cc6dcfcf..91b812c73136 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -995,7 +995,8 @@ void SdrObject::RecalcBoundRect()
 
     // use neutral ViewInformation and get the range of the primitives
     const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
-    const basegfx::B2DRange aRange(xPrimitives.getB2DRange(aViewInformation2D));
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+    const basegfx::B2DRange aRange(xPrimitives.getB2DRange(aVisitingParameters));
 
     if(!aRange.isEmpty())
     {
@@ -1195,9 +1196,10 @@ basegfx::B2DPolyPolygon SdrObject::TakeContour() const
         {
             // use neutral ViewInformation
             const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+            const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
 
             // create extractor, process and get result (with hairlines as opened polygons)
-            drawinglayer::processor2d::ContourExtractor2D aExtractor(aViewInformation2D, false);
+            drawinglayer::processor2d::ContourExtractor2D aExtractor(aVisitingParameters, false);
             aExtractor.process(xSequence);
             const basegfx::B2DPolyPolygonVector& rResult(aExtractor.getExtractedContour());
             const sal_uInt32 nSize(rResult.size());
@@ -2372,8 +2374,10 @@ static void extractLineContourFromPrimitive2DSequence(
     // use neutral ViewInformation
     const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
 
+     drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+
     // create extractor, process and get result
-    drawinglayer::processor2d::LineGeometryExtractor2D aExtractor(aViewInformation2D);
+    drawinglayer::processor2d::LineGeometryExtractor2D aExtractor(aVisitingParameters);
     aExtractor.process(rxSequence);
 
     // copy line results
diff --git a/svx/source/svdraw/svdograf.cxx b/svx/source/svdraw/svdograf.cxx
index 5ec2219cbef3..9c72bb49b09b 100644
--- a/svx/source/svdraw/svdograf.cxx
+++ b/svx/source/svdraw/svdograf.cxx
@@ -150,8 +150,9 @@ void SdrGrafObj::onGraphicChanged()
     if (aSequence.empty())
         return;
 
-    drawinglayer::geometry::ViewInformation2D aViewInformation2D;
-    drawinglayer::processor2d::ObjectInfoPrimitiveExtractor2D aProcessor(aViewInformation2D);
+    const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+    drawinglayer::processor2d::ObjectInfoPrimitiveExtractor2D aProcessor(aVisitingParameters);
 
     aProcessor.process(aSequence);
 
diff --git a/svx/source/svdraw/svdotxtr.cxx b/svx/source/svdraw/svdotxtr.cxx
index f0abb2b9d5a2..11b077c42868 100644
--- a/svx/source/svdraw/svdotxtr.cxx
+++ b/svx/source/svdraw/svdotxtr.cxx
@@ -300,7 +300,8 @@ SdrObjectUniquePtr SdrTextObj::ImpConvertContainedTextToSdrPathObjs(bool bToPoly
     {
         // create an extractor with neutral ViewInformation
         const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
-        drawinglayer::processor2d::TextAsPolygonExtractor2D aExtractor(aViewInformation2D);
+        const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+        drawinglayer::processor2d::TextAsPolygonExtractor2D aExtractor(aVisitingParameters);
 
         // extract text as polygons
         aExtractor.process(xSequence);
diff --git a/svx/source/svdraw/svdxcgv.cxx b/svx/source/svdraw/svdxcgv.cxx
index 8881336bdcf9..c3c08a981baa 100644
--- a/svx/source/svdraw/svdxcgv.cxx
+++ b/svx/source/svdraw/svdxcgv.cxx
@@ -486,7 +486,8 @@ BitmapEx SdrExchangeView::GetMarkedObjBitmapEx(bool bNoVDevIfOneBmpMarked, const
 
                 // get logic range
                 const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
-                const basegfx::B2DRange aRange(xPrimitives.getB2DRange(aViewInformation2D));
+                const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
+                const basegfx::B2DRange aRange(xPrimitives.getB2DRange(aVisitingParameters));
 
                 if(!aRange.isEmpty())
                 {
diff --git a/svx/source/unodraw/unoshape.cxx b/svx/source/unodraw/unoshape.cxx
index 57fd337ed7af..9afef6afdc17 100644
--- a/svx/source/unodraw/unoshape.cxx
+++ b/svx/source/unodraw/unoshape.cxx
@@ -721,8 +721,9 @@ uno::Any SvxShape::GetBitmap( bool bMetaFile /* = false */ ) const
         if(!xPrimitives.empty())
         {
             const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+            const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aViewInformation2D);
             basegfx::B2DRange aRange(
-                xPrimitives.getB2DRange(aViewInformation2D));
+                xPrimitives.getB2DRange(aVisitingParameters));
 
             if(!aRange.isEmpty())
             {
diff --git a/svx/source/xoutdev/xtabdash.cxx b/svx/source/xoutdev/xtabdash.cxx
index 4d0cac97b612..dbd4008aa962 100644
--- a/svx/source/xoutdev/xtabdash.cxx
+++ b/svx/source/xoutdev/xtabdash.cxx
@@ -137,7 +137,6 @@ BitmapEx XDashList::ImpCreateBitmapForXDash(const XDash* pDash)
 
     // prepare VirtualDevice
     ScopedVclPtrInstance< VirtualDevice > pVirtualDevice;
-    const drawinglayer::geometry::ViewInformation2D aNewViewInformation2D;
 
     pVirtualDevice->SetOutputSizePixel(aSize);
     pVirtualDevice->SetDrawMode(rStyleSettings.GetHighContrastMode()
@@ -160,9 +159,10 @@ BitmapEx XDashList::ImpCreateBitmapForXDash(const XDash* pDash)
     }
 
     // create processor and draw primitives
+    const drawinglayer::geometry::ViewInformation2D aNewViewInformation2D;
+    const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aNewViewInformation2D);
     std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor2D(drawinglayer::processor2d::createPixelProcessor2DFromOutputDevice(
-        *pVirtualDevice,
-        aNewViewInformation2D));
+        *pVirtualDevice, aVisitingParameters));
 
     const drawinglayer::primitive2d::Primitive2DContainer aSequence { aLinePrimitive };
 
diff --git a/svx/source/xoutdev/xtabgrdt.cxx b/svx/source/xoutdev/xtabgrdt.cxx
index 5010ff2e49bd..3510e164116c 100644
--- a/svx/source/xoutdev/xtabgrdt.cxx
+++ b/svx/source/xoutdev/xtabgrdt.cxx
@@ -175,7 +175,6 @@ BitmapEx XGradientList::CreateBitmap( tools::Long nIndex, const Size& rSize ) co
 
         // prepare VirtualDevice
         ScopedVclPtrInstance< VirtualDevice > pVirtualDevice;
-        const drawinglayer::geometry::ViewInformation2D aNewViewInformation2D;
 
         pVirtualDevice->SetOutputSizePixel(rSize);
         pVirtualDevice->SetDrawMode(rStyleSettings.GetHighContrastMode()
@@ -183,9 +182,10 @@ BitmapEx XGradientList::CreateBitmap( tools::Long nIndex, const Size& rSize ) co
             : DrawModeFlags::Default);
 
         // create processor and draw primitives
-        std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor2D(drawinglayer::processor2d::createPixelProcessor2DFromOutputDevice(
-            *pVirtualDevice,
-            aNewViewInformation2D));
+        const drawinglayer::geometry::ViewInformation2D aNewViewInformation2D;
+        const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aNewViewInformation2D);
+        auto pProcessor2D = drawinglayer::processor2d::createPixelProcessor2DFromOutputDevice(
+            *pVirtualDevice, aVisitingParameters);
 
         drawinglayer::primitive2d::Primitive2DContainer aSequence(2);
 
diff --git a/svx/source/xoutdev/xtabhtch.cxx b/svx/source/xoutdev/xtabhtch.cxx
index 19bc8b737887..7f0ebf7509de 100644
--- a/svx/source/xoutdev/xtabhtch.cxx
+++ b/svx/source/xoutdev/xtabhtch.cxx
@@ -138,7 +138,6 @@ BitmapEx XHatchList::CreateBitmap( tools::Long nIndex, const Size& rSize) const
 
         // prepare VirtualDevice
         ScopedVclPtrInstance< VirtualDevice > pVirtualDevice;
-        const drawinglayer::geometry::ViewInformation2D aNewViewInformation2D;
 
         pVirtualDevice->SetOutputSizePixel(rSize);
         pVirtualDevice->SetDrawMode(rStyleSettings.GetHighContrastMode()
@@ -160,9 +159,10 @@ BitmapEx XHatchList::CreateBitmap( tools::Long nIndex, const Size& rSize) const
         }
 
         // create processor and draw primitives
-        std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor2D(drawinglayer::processor2d::createPixelProcessor2DFromOutputDevice(
-            *pVirtualDevice,
-            aNewViewInformation2D));
+        const drawinglayer::geometry::ViewInformation2D aNewViewInformation2D;
+        const drawinglayer::primitive2d::VisitingParameters aVisitingParameters(aNewViewInformation2D);
+        auto pProcessor2D = drawinglayer::processor2d::createPixelProcessor2DFromOutputDevice(
+            *pVirtualDevice, aVisitingParameters);
 
         drawinglayer::primitive2d::Primitive2DContainer aSequence(2);
 
diff --git a/svx/source/xoutdev/xtablend.cxx b/svx/source/xoutdev/xtablend.cxx
index 39a963373c71..162fab57721d 100644
--- a/svx/source/xoutdev/xtablend.cxx
+++ b/svx/source/xoutdev/xtablend.cxx
@@ -122,7 +122,6 @@ BitmapEx XLineEndList::CreateBitmapForUI( tools::Long nIndex )
 
         // prepare VirtualDevice

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list