summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2021-01-02 20:52:36 +0900
committerTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2021-07-30 23:27:41 +0900
commitb5d6416bae5cc06e53aeace360110e6a1429dfa1 (patch)
tree61736e6f6bdcdcfe4f34b681484fa07e1fca1876
parentfe368c43be0a1cab0a6f026bc5dd1f11e573de4e (diff)
make BasePrimitive2D easier extensible with VisitingParameters
BasePrimitive2D virtual methods get2DDecomposition and getB2DRange are used in many subclasses of BasePrimitive2D. If we want to extend the parameters that we want to pass to those classes (and we will need to in the future changes) we need to change all the subclasses too. So this commit intoduces VisitingParameters class, which holds the parameters that we want to pass, which avoids the need to extend the BasePrimitive2D API. The only member of VisitingParameters is ViewInformation2D, which was previously a parameter for both methods. Change-Id: I39afc28707f1511aafce4e8a84dbc45b84fc8cd5
-rw-r--r--drawinglayer/inc/primitive2d/cropprimitive2d.hxx2
-rw-r--r--drawinglayer/inc/primitive2d/texteffectprimitive2d.hxx13
-rw-r--r--drawinglayer/inc/primitive2d/textlineprimitive2d.hxx2
-rw-r--r--drawinglayer/inc/primitive2d/textstrikeoutprimitive2d.hxx4
-rw-r--r--drawinglayer/inc/primitive2d/wallpaperprimitive2d.hxx4
-rw-r--r--drawinglayer/source/primitive2d/BufferedDecompositionPrimitive2D.cxx8
-rw-r--r--drawinglayer/source/primitive2d/PolyPolygonColorPrimitive2D.cxx4
-rw-r--r--drawinglayer/source/primitive2d/PolyPolygonGradientPrimitive2D.cxx2
-rw-r--r--drawinglayer/source/primitive2d/PolyPolygonGraphicPrimitive2D.cxx2
-rw-r--r--drawinglayer/source/primitive2d/PolyPolygonHairlinePrimitive2D.cxx6
-rw-r--r--drawinglayer/source/primitive2d/PolyPolygonHatchPrimitive2D.cxx2
-rw-r--r--drawinglayer/source/primitive2d/PolyPolygonMarkerPrimitive2D.cxx6
-rw-r--r--drawinglayer/source/primitive2d/PolyPolygonSelectionPrimitive2D.cxx9
-rw-r--r--drawinglayer/source/primitive2d/PolyPolygonStrokePrimitive2D.cxx6
-rw-r--r--drawinglayer/source/primitive2d/Primitive2DContainer.cxx5
-rw-r--r--drawinglayer/source/primitive2d/Tools.cxx9
-rw-r--r--drawinglayer/source/primitive2d/animatedprimitive2d.cxx12
-rw-r--r--drawinglayer/source/primitive2d/backgroundcolorprimitive2d.cxx16
-rw-r--r--drawinglayer/source/primitive2d/baseprimitive2d.cxx44
-rw-r--r--drawinglayer/source/primitive2d/bitmapprimitive2d.cxx3
-rw-r--r--drawinglayer/source/primitive2d/borderlineprimitive2d.cxx2
-rw-r--r--drawinglayer/source/primitive2d/controlprimitive2d.cxx16
-rw-r--r--drawinglayer/source/primitive2d/cropprimitive2d.cxx2
-rw-r--r--drawinglayer/source/primitive2d/discretebitmapprimitive2d.cxx2
-rw-r--r--drawinglayer/source/primitive2d/discreteshadowprimitive2d.cxx6
-rw-r--r--drawinglayer/source/primitive2d/embedded3dprimitive2d.cxx8
-rw-r--r--drawinglayer/source/primitive2d/epsprimitive2d.cxx4
-rw-r--r--drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx4
-rw-r--r--drawinglayer/source/primitive2d/fillgraphicprimitive2d.cxx4
-rw-r--r--drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx10
-rw-r--r--drawinglayer/source/primitive2d/glowprimitive2d.cxx5
-rw-r--r--drawinglayer/source/primitive2d/graphicprimitive2d.cxx5
-rw-r--r--drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx6
-rw-r--r--drawinglayer/source/primitive2d/gridprimitive2d.cxx16
-rw-r--r--drawinglayer/source/primitive2d/groupprimitive2d.cxx2
-rw-r--r--drawinglayer/source/primitive2d/helplineprimitive2d.cxx9
-rw-r--r--drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx7
-rw-r--r--drawinglayer/source/primitive2d/markerarrayprimitive2d.cxx8
-rw-r--r--drawinglayer/source/primitive2d/maskprimitive2d.cxx2
-rw-r--r--drawinglayer/source/primitive2d/mediaprimitive2d.cxx8
-rw-r--r--drawinglayer/source/primitive2d/metafileprimitive2d.cxx8
-rw-r--r--drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx6
-rw-r--r--drawinglayer/source/primitive2d/patternfillprimitive2d.cxx16
-rw-r--r--drawinglayer/source/primitive2d/pointarrayprimitive2d.cxx2
-rw-r--r--drawinglayer/source/primitive2d/polygonprimitive2d.cxx52
-rw-r--r--drawinglayer/source/primitive2d/primitivetools2d.cxx26
-rw-r--r--drawinglayer/source/primitive2d/sceneprimitive2d.cxx23
-rw-r--r--drawinglayer/source/primitive2d/shadowprimitive2d.cxx6
-rw-r--r--drawinglayer/source/primitive2d/softedgeprimitive2d.cxx7
-rw-r--r--drawinglayer/source/primitive2d/svggradientprimitive2d.cxx12
-rw-r--r--drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx8
-rw-r--r--drawinglayer/source/primitive2d/texteffectprimitive2d.cxx26
-rw-r--r--drawinglayer/source/primitive2d/textlineprimitive2d.cxx2
-rw-r--r--drawinglayer/source/primitive2d/textprimitive2d.cxx6
-rw-r--r--drawinglayer/source/primitive2d/textstrikeoutprimitive2d.cxx4
-rw-r--r--drawinglayer/source/primitive2d/transformprimitive2d.cxx4
-rw-r--r--drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx8
-rw-r--r--drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx4
-rw-r--r--drawinglayer/source/primitive2d/wrongspellprimitive2d.cxx2
-rw-r--r--drawinglayer/source/tools/wmfemfhelper.cxx4
-rw-r--r--include/drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx4
-rw-r--r--include/drawinglayer/primitive2d/DeviceDependentServices.hxx26
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx3
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonGradientPrimitive2D.hxx5
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonGraphicPrimitive2D.hxx5
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonHairlinePrimitive2D.hxx8
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonHatchPrimitive2D.hxx5
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonMarkerPrimitive2D.hxx8
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonSelectionPrimitive2D.hxx8
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonStrokePrimitive2D.hxx8
-rw-r--r--include/drawinglayer/primitive2d/Primitive2DContainer.hxx6
-rw-r--r--include/drawinglayer/primitive2d/Tools.hxx6
-rw-r--r--include/drawinglayer/primitive2d/animatedprimitive2d.hxx15
-rw-r--r--include/drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx13
-rw-r--r--include/drawinglayer/primitive2d/baseprimitive2d.hxx19
-rw-r--r--include/drawinglayer/primitive2d/bitmapprimitive2d.hxx3
-rw-r--r--include/drawinglayer/primitive2d/borderlineprimitive2d.hxx5
-rw-r--r--include/drawinglayer/primitive2d/controlprimitive2d.hxx16
-rw-r--r--include/drawinglayer/primitive2d/discretebitmapprimitive2d.hxx2
-rw-r--r--include/drawinglayer/primitive2d/discreteshadowprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/embedded3dprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/epsprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/fillgradientprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/fillgraphicprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/fillhatchprimitive2d.hxx6
-rw-r--r--include/drawinglayer/primitive2d/glowprimitive2d.hxx3
-rw-r--r--include/drawinglayer/primitive2d/graphicprimitive2d.hxx8
-rw-r--r--include/drawinglayer/primitive2d/gridprimitive2d.hxx6
-rw-r--r--include/drawinglayer/primitive2d/groupprimitive2d.hxx2
-rw-r--r--include/drawinglayer/primitive2d/helplineprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/markerarrayprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/maskprimitive2d.hxx2
-rw-r--r--include/drawinglayer/primitive2d/mediaprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/metafileprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/pagepreviewprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/patternfillprimitive2d.hxx8
-rw-r--r--include/drawinglayer/primitive2d/pointarrayprimitive2d.hxx2
-rw-r--r--include/drawinglayer/primitive2d/polygonprimitive2d.hxx40
-rw-r--r--include/drawinglayer/primitive2d/primitivetools2d.hxx8
-rw-r--r--include/drawinglayer/primitive2d/sceneprimitive2d.hxx6
-rw-r--r--include/drawinglayer/primitive2d/shadowprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/softedgeprimitive2d.hxx5
-rw-r--r--include/drawinglayer/primitive2d/svggradientprimitive2d.hxx12
-rw-r--r--include/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/textprimitive2d.hxx8
-rw-r--r--include/drawinglayer/primitive2d/transformprimitive2d.hxx2
-rw-r--r--include/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx4
-rw-r--r--include/drawinglayer/primitive2d/wrongspellprimitive2d.hxx2
-rw-r--r--include/svx/sdr/contact/viewcontact.hxx1
-rw-r--r--include/svx/sdr/primitive2d/sdrframeborderprimitive2d.hxx4
-rw-r--r--sd/source/core/CustomAnimationEffect.cxx4
-rw-r--r--svx/inc/sdr/overlay/overlaytools.hxx12
-rw-r--r--svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx2
-rw-r--r--svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.hxx2
-rw-r--r--svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx2
-rw-r--r--svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx4
-rw-r--r--svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx2
-rw-r--r--svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx2
-rw-r--r--svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx2
-rw-r--r--svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx4
-rw-r--r--svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx2
-rw-r--r--svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx2
-rw-r--r--svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx14
-rw-r--r--svx/qa/unit/svdraw.cxx2160
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofgroup.cxx6
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx31
-rw-r--r--svx/source/sdr/overlay/overlaytools.cxx14
-rw-r--r--svx/source/sdr/primitive2d/sdrcaptionprimitive2d.cxx2
-rw-r--r--svx/source/sdr/primitive2d/sdrconnectorprimitive2d.cxx2
-rw-r--r--svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx2
-rw-r--r--svx/source/sdr/primitive2d/sdrellipseprimitive2d.cxx4
-rw-r--r--svx/source/sdr/primitive2d/sdrframeborderprimitive2d.cxx8
-rw-r--r--svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx2
-rw-r--r--svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx4
-rw-r--r--svx/source/sdr/primitive2d/sdrole2primitive2d.cxx2
-rw-r--r--svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx4
-rw-r--r--svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx2
-rw-r--r--svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx2
-rw-r--r--svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx32
-rw-r--r--svx/source/svdraw/charthelper.cxx7
-rw-r--r--svx/source/svdraw/svdpdf.cxx21177
-rw-r--r--svx/source/table/viewcontactoftableobj.cxx4
-rw-r--r--sw/source/core/draw/dflyobj.cxx16
-rw-r--r--sw/source/core/layout/paintfrm.cxx8
-rw-r--r--sw/source/uibase/docvw/AnchorOverlayObject.cxx4
-rw-r--r--sw/source/uibase/docvw/ShadowOverlayObject.cxx4
147 files changed, 1881 insertions, 527 deletions
diff --git a/drawinglayer/inc/primitive2d/cropprimitive2d.hxx b/drawinglayer/inc/primitive2d/cropprimitive2d.hxx
index 86297687ad5f..b0135ffb25e7 100644
--- a/drawinglayer/inc/primitive2d/cropprimitive2d.hxx
+++ b/drawinglayer/inc/primitive2d/cropprimitive2d.hxx
@@ -82,7 +82,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// local decomposition
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/drawinglayer/inc/primitive2d/texteffectprimitive2d.hxx b/drawinglayer/inc/primitive2d/texteffectprimitive2d.hxx
index ce62b3110199..59d0bb954d25 100644
--- a/drawinglayer/inc/primitive2d/texteffectprimitive2d.hxx
+++ b/drawinglayer/inc/primitive2d/texteffectprimitive2d.hxx
@@ -57,9 +57,8 @@ private:
basegfx::B2DHomMatrix maLastObjectToViewTransformation;
/// create local decomposition
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -80,16 +79,14 @@ public:
by a fixed discrete unit, thus the contained geometry needs only once be asked for its
own basegfx::B2DRange
*/
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
/// Override standard getDecomposition to be view-dependent here
- virtual void
- get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
+ VisitingParameters const& rParameters) const override;
};
} // end of namespace primitive2d::drawinglayer
diff --git a/drawinglayer/inc/primitive2d/textlineprimitive2d.hxx b/drawinglayer/inc/primitive2d/textlineprimitive2d.hxx
index 423be7995879..a8818fab6675 100644
--- a/drawinglayer/inc/primitive2d/textlineprimitive2d.hxx
+++ b/drawinglayer/inc/primitive2d/textlineprimitive2d.hxx
@@ -41,7 +41,7 @@ namespace drawinglayer::primitive2d
basegfx::BColor maLineColor;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
diff --git a/drawinglayer/inc/primitive2d/textstrikeoutprimitive2d.hxx b/drawinglayer/inc/primitive2d/textstrikeoutprimitive2d.hxx
index 9b93e28dbe0d..381e130f6d9d 100644
--- a/drawinglayer/inc/primitive2d/textstrikeoutprimitive2d.hxx
+++ b/drawinglayer/inc/primitive2d/textstrikeoutprimitive2d.hxx
@@ -68,7 +68,7 @@ namespace drawinglayer::primitive2d
css::lang::Locale maLocale;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -105,7 +105,7 @@ namespace drawinglayer::primitive2d
TextStrikeout meTextStrikeout;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
diff --git a/drawinglayer/inc/primitive2d/wallpaperprimitive2d.hxx b/drawinglayer/inc/primitive2d/wallpaperprimitive2d.hxx
index c92006b36db3..85754a28c255 100644
--- a/drawinglayer/inc/primitive2d/wallpaperprimitive2d.hxx
+++ b/drawinglayer/inc/primitive2d/wallpaperprimitive2d.hxx
@@ -47,7 +47,7 @@ namespace drawinglayer::primitive2d
WallpaperStyle meWallpaperStyle;
/// create local decomposition
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -65,7 +65,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get B2Drange
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/drawinglayer/source/primitive2d/BufferedDecompositionPrimitive2D.cxx b/drawinglayer/source/primitive2d/BufferedDecompositionPrimitive2D.cxx
index c352c70c6d39..d56fcb102257 100644
--- a/drawinglayer/source/primitive2d/BufferedDecompositionPrimitive2D.cxx
+++ b/drawinglayer/source/primitive2d/BufferedDecompositionPrimitive2D.cxx
@@ -35,16 +35,16 @@ BufferedDecompositionPrimitive2D::BufferedDecompositionPrimitive2D()
void BufferedDecompositionPrimitive2D::get2DDecomposition(
Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const
+ VisitingParameters const& rParameters) const
{
::osl::MutexGuard aGuard(m_aMutex);
if (getBuffered2DDecomposition().empty())
{
Primitive2DContainer aNewSequence;
- create2DDecomposition(aNewSequence, rViewInformation);
- const_cast<BufferedDecompositionPrimitive2D*>(this)->setBuffered2DDecomposition(
- aNewSequence);
+ create2DDecomposition(aNewSequence, rParameters);
+ auto* pMutableThis = const_cast<BufferedDecompositionPrimitive2D*>(this);
+ pMutableThis->setBuffered2DDecomposition(aNewSequence);
}
rVisitor.append(getBuffered2DDecomposition());
diff --git a/drawinglayer/source/primitive2d/PolyPolygonColorPrimitive2D.cxx b/drawinglayer/source/primitive2d/PolyPolygonColorPrimitive2D.cxx
index aa48a965e692..7b588f2de0dc 100644
--- a/drawinglayer/source/primitive2d/PolyPolygonColorPrimitive2D.cxx
+++ b/drawinglayer/source/primitive2d/PolyPolygonColorPrimitive2D.cxx
@@ -48,8 +48,8 @@ bool PolyPolygonColorPrimitive2D::operator==(const BasePrimitive2D& rPrimitive)
return false;
}
-basegfx::B2DRange PolyPolygonColorPrimitive2D::getB2DRange(
- const geometry::ViewInformation2D& /*rViewInformation*/) const
+basegfx::B2DRange
+PolyPolygonColorPrimitive2D::getB2DRange(VisitingParameters const& /*rParameters*/) const
{
// return range
return basegfx::utils::getRange(getB2DPolyPolygon());
diff --git a/drawinglayer/source/primitive2d/PolyPolygonGradientPrimitive2D.cxx b/drawinglayer/source/primitive2d/PolyPolygonGradientPrimitive2D.cxx
index cbf9e8902bb0..1435a2153894 100644
--- a/drawinglayer/source/primitive2d/PolyPolygonGradientPrimitive2D.cxx
+++ b/drawinglayer/source/primitive2d/PolyPolygonGradientPrimitive2D.cxx
@@ -29,7 +29,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
void PolyPolygonGradientPrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
if (!getFillGradient().isDefault())
{
diff --git a/drawinglayer/source/primitive2d/PolyPolygonGraphicPrimitive2D.cxx b/drawinglayer/source/primitive2d/PolyPolygonGraphicPrimitive2D.cxx
index c857ba5c8e3d..1582393f54b5 100644
--- a/drawinglayer/source/primitive2d/PolyPolygonGraphicPrimitive2D.cxx
+++ b/drawinglayer/source/primitive2d/PolyPolygonGraphicPrimitive2D.cxx
@@ -31,7 +31,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
void PolyPolygonGraphicPrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
if (getFillGraphic().isDefault())
return;
diff --git a/drawinglayer/source/primitive2d/PolyPolygonHairlinePrimitive2D.cxx b/drawinglayer/source/primitive2d/PolyPolygonHairlinePrimitive2D.cxx
index e4c73f9191a5..db602d7f3606 100644
--- a/drawinglayer/source/primitive2d/PolyPolygonHairlinePrimitive2D.cxx
+++ b/drawinglayer/source/primitive2d/PolyPolygonHairlinePrimitive2D.cxx
@@ -28,7 +28,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
void PolyPolygonHairlinePrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
const basegfx::B2DPolyPolygon aPolyPolygon(getB2DPolyPolygon());
const sal_uInt32 nCount(aPolyPolygon.count());
@@ -65,8 +65,8 @@ bool PolyPolygonHairlinePrimitive2D::operator==(const BasePrimitive2D& rPrimitiv
return false;
}
-basegfx::B2DRange PolyPolygonHairlinePrimitive2D::getB2DRange(
- const geometry::ViewInformation2D& /*rViewInformation*/) const
+basegfx::B2DRange
+PolyPolygonHairlinePrimitive2D::getB2DRange(VisitingParameters const& /*rParameters*/) const
{
// return range
return basegfx::utils::getRange(getB2DPolyPolygon());
diff --git a/drawinglayer/source/primitive2d/PolyPolygonHatchPrimitive2D.cxx b/drawinglayer/source/primitive2d/PolyPolygonHatchPrimitive2D.cxx
index dd0495739fec..f5d35efde06b 100644
--- a/drawinglayer/source/primitive2d/PolyPolygonHatchPrimitive2D.cxx
+++ b/drawinglayer/source/primitive2d/PolyPolygonHatchPrimitive2D.cxx
@@ -29,7 +29,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
void PolyPolygonHatchPrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
if (!getFillHatch().isDefault())
{
diff --git a/drawinglayer/source/primitive2d/PolyPolygonMarkerPrimitive2D.cxx b/drawinglayer/source/primitive2d/PolyPolygonMarkerPrimitive2D.cxx
index b545ec9465fa..dfd4a8abafc7 100644
--- a/drawinglayer/source/primitive2d/PolyPolygonMarkerPrimitive2D.cxx
+++ b/drawinglayer/source/primitive2d/PolyPolygonMarkerPrimitive2D.cxx
@@ -28,7 +28,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
void PolyPolygonMarkerPrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
const basegfx::B2DPolyPolygon aPolyPolygon(getB2DPolyPolygon());
const sal_uInt32 nCount(aPolyPolygon.count());
@@ -71,8 +71,8 @@ bool PolyPolygonMarkerPrimitive2D::operator==(const BasePrimitive2D& rPrimitive)
return false;
}
-basegfx::B2DRange PolyPolygonMarkerPrimitive2D::getB2DRange(
- const geometry::ViewInformation2D& /*rViewInformation*/) const
+basegfx::B2DRange
+PolyPolygonMarkerPrimitive2D::getB2DRange(VisitingParameters const& /*rParameters*/) const
{
// return range
return basegfx::utils::getRange(getB2DPolyPolygon());
diff --git a/drawinglayer/source/primitive2d/PolyPolygonSelectionPrimitive2D.cxx b/drawinglayer/source/primitive2d/PolyPolygonSelectionPrimitive2D.cxx
index 7be684c2f71e..6e098d6c2a9c 100644
--- a/drawinglayer/source/primitive2d/PolyPolygonSelectionPrimitive2D.cxx
+++ b/drawinglayer/source/primitive2d/PolyPolygonSelectionPrimitive2D.cxx
@@ -31,7 +31,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
void PolyPolygonSelectionPrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
if (getTransparence() >= 1.0 || !getB2DPolyPolygon().count())
return;
@@ -97,8 +97,8 @@ bool PolyPolygonSelectionPrimitive2D::operator==(const BasePrimitive2D& rPrimiti
return false;
}
-basegfx::B2DRange PolyPolygonSelectionPrimitive2D::getB2DRange(
- const geometry::ViewInformation2D& rViewInformation) const
+basegfx::B2DRange
+PolyPolygonSelectionPrimitive2D::getB2DRange(VisitingParameters const& rParameters) const
{
basegfx::B2DRange aRetval(basegfx::utils::getRange(getB2DPolyPolygon()));
@@ -106,7 +106,8 @@ basegfx::B2DRange PolyPolygonSelectionPrimitive2D::getB2DRange(
{
// get the current DiscreteUnit (not sure if getDiscreteUnit() is updated here, better go safe way)
const double fDiscreteUnit(
- (rViewInformation.getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 0.0))
+ (rParameters.getViewInformation().getInverseObjectToViewTransformation()
+ * basegfx::B2DVector(1.0, 0.0))
.getLength());
aRetval.grow(fDiscreteUnit * getDiscreteGrow());
diff --git a/drawinglayer/source/primitive2d/PolyPolygonStrokePrimitive2D.cxx b/drawinglayer/source/primitive2d/PolyPolygonStrokePrimitive2D.cxx
index 53abec1138c3..2e1f93b7e208 100644
--- a/drawinglayer/source/primitive2d/PolyPolygonStrokePrimitive2D.cxx
+++ b/drawinglayer/source/primitive2d/PolyPolygonStrokePrimitive2D.cxx
@@ -28,7 +28,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
void PolyPolygonStrokePrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
const basegfx::B2DPolyPolygon aPolyPolygon(getB2DPolyPolygon());
const sal_uInt32 nCount(aPolyPolygon.count());
@@ -77,8 +77,8 @@ bool PolyPolygonStrokePrimitive2D::operator==(const BasePrimitive2D& rPrimitive)
return false;
}
-basegfx::B2DRange PolyPolygonStrokePrimitive2D::getB2DRange(
- const geometry::ViewInformation2D& /*rViewInformation*/) const
+basegfx::B2DRange
+PolyPolygonStrokePrimitive2D::getB2DRange(VisitingParameters const& /*rParameters*/) const
{
// get range of it (subdivided)
basegfx::B2DRange aRetval(basegfx::utils::getRange(getB2DPolyPolygon()));
diff --git a/drawinglayer/source/primitive2d/Primitive2DContainer.cxx b/drawinglayer/source/primitive2d/Primitive2DContainer.cxx
index 3ae4a9b3e3c4..d4998c442ce8 100644
--- a/drawinglayer/source/primitive2d/Primitive2DContainer.cxx
+++ b/drawinglayer/source/primitive2d/Primitive2DContainer.cxx
@@ -48,8 +48,7 @@ Primitive2DContainer Primitive2DContainer::maybeInvert(bool bInvert) const
}
// get B2DRange from a given Primitive2DSequence
-basegfx::B2DRange
-Primitive2DContainer::getB2DRange(const geometry::ViewInformation2D& aViewInformation) const
+basegfx::B2DRange Primitive2DContainer::getB2DRange(VisitingParameters const& rParameters) const
{
basegfx::B2DRange aRetval;
@@ -59,7 +58,7 @@ Primitive2DContainer::getB2DRange(const geometry::ViewInformation2D& aViewInform
for (sal_Int32 a(0); a < nCount; a++)
{
- aRetval.expand(getB2DRangeFromPrimitive2DReference((*this)[a], aViewInformation));
+ aRetval.expand(getB2DRangeFromPrimitive2DReference((*this)[a], rParameters));
}
}
diff --git a/drawinglayer/source/primitive2d/Tools.cxx b/drawinglayer/source/primitive2d/Tools.cxx
index 7db3a94c8d04..2da6d80e82e9 100644
--- a/drawinglayer/source/primitive2d/Tools.cxx
+++ b/drawinglayer/source/primitive2d/Tools.cxx
@@ -28,9 +28,8 @@ using namespace css;
namespace drawinglayer::primitive2d
{
// get B2DRange from a given Primitive2DReference
-basegfx::B2DRange
-getB2DRangeFromPrimitive2DReference(const Primitive2DReference& rCandidate,
- const geometry::ViewInformation2D& aViewInformation)
+basegfx::B2DRange getB2DRangeFromPrimitive2DReference(const Primitive2DReference& rCandidate,
+ VisitingParameters const& rParameters)
{
basegfx::B2DRange aRetval;
@@ -42,13 +41,13 @@ getB2DRangeFromPrimitive2DReference(const Primitive2DReference& rCandidate,
if (pCandidate)
{
// use it if possible
- aRetval.expand(pCandidate->getB2DRange(aViewInformation));
+ aRetval.expand(pCandidate->getB2DRange(rParameters));
}
else
{
// use UNO API call instead
const uno::Sequence<beans::PropertyValue>& rViewParameters(
- aViewInformation.getViewInformationSequence());
+ rParameters.getViewInformation().getViewInformationSequence());
aRetval.expand(basegfx::unotools::b2DRectangleFromRealRectangle2D(
rCandidate->getRange(rViewParameters)));
}
diff --git a/drawinglayer/source/primitive2d/animatedprimitive2d.cxx b/drawinglayer/source/primitive2d/animatedprimitive2d.cxx
index 827e9b81d05d..25cf2826cd84 100644
--- a/drawinglayer/source/primitive2d/animatedprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/animatedprimitive2d.cxx
@@ -62,12 +62,12 @@ namespace drawinglayer::primitive2d
return false;
}
- void AnimatedSwitchPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void AnimatedSwitchPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
if(getChildren().empty())
return;
- const double fState(getAnimationEntry().getStateAtTime(rViewInformation.getViewTime()));
+ const double fState(getAnimationEntry().getStateAtTime(rParameters.getViewInformation().getViewTime()));
const sal_uInt32 nLen(getChildren().size());
sal_uInt32 nIndex(basegfx::fround(fState * static_cast<double>(nLen)));
@@ -98,11 +98,11 @@ namespace drawinglayer::primitive2d
{
}
- void AnimatedBlinkPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void AnimatedBlinkPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
if(!getChildren().empty())
{
- const double fState(getAnimationEntry().getStateAtTime(rViewInformation.getViewTime()));
+ const double fState(getAnimationEntry().getStateAtTime(rParameters.getViewInformation().getViewTime()));
if(fState < 0.5)
{
@@ -139,13 +139,13 @@ namespace drawinglayer::primitive2d
}
}
- void AnimatedInterpolatePrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void AnimatedInterpolatePrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
const sal_uInt32 nSize(maMatrixStack.size());
if(nSize)
{
- double fState(getAnimationEntry().getStateAtTime(rViewInformation.getViewTime()));
+ double fState(getAnimationEntry().getStateAtTime(rParameters.getViewInformation().getViewTime()));
if(fState < 0.0)
{
diff --git a/drawinglayer/source/primitive2d/backgroundcolorprimitive2d.cxx b/drawinglayer/source/primitive2d/backgroundcolorprimitive2d.cxx
index e05b4b9cb239..0775014bc495 100644
--- a/drawinglayer/source/primitive2d/backgroundcolorprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/backgroundcolorprimitive2d.cxx
@@ -30,8 +30,10 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void BackgroundColorPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ void BackgroundColorPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
+ auto const & rViewInformation = rParameters.getViewInformation();
+
if(!rViewInformation.getViewport().isEmpty())
{
const basegfx::B2DPolygon aOutline(basegfx::utils::createPolygonFromRect(rViewInformation.getViewport()));
@@ -61,17 +63,17 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange BackgroundColorPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ basegfx::B2DRange BackgroundColorPrimitive2D::getB2DRange(VisitingParameters const & rParameters) const
{
// always as big as the view
- return rViewInformation.getViewport();
+ return rParameters.getViewInformation().getViewport();
}
- void BackgroundColorPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void BackgroundColorPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
::osl::MutexGuard aGuard( m_aMutex );
- if(!getBuffered2DDecomposition().empty() && (maLastViewport != rViewInformation.getViewport()))
+ if(!getBuffered2DDecomposition().empty() && (maLastViewport != rParameters.getViewInformation().getViewport()))
{
// conditions of last local decomposition have changed, delete
const_cast< BackgroundColorPrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DContainer());
@@ -80,11 +82,11 @@ namespace drawinglayer::primitive2d
if(getBuffered2DDecomposition().empty())
{
// remember ViewRange
- const_cast< BackgroundColorPrimitive2D* >(this)->maLastViewport = rViewInformation.getViewport();
+ const_cast< BackgroundColorPrimitive2D* >(this)->maLastViewport = rParameters.getViewInformation().getViewport();
}
// use parent implementation
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
// provide unique ID
diff --git a/drawinglayer/source/primitive2d/baseprimitive2d.cxx b/drawinglayer/source/primitive2d/baseprimitive2d.cxx
index c0f879ec2f78..085ccc1b8c58 100644
--- a/drawinglayer/source/primitive2d/baseprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/baseprimitive2d.cxx
@@ -48,55 +48,59 @@ namespace
class B2DRangeVisitor : public Primitive2DDecompositionVisitor
{
public:
- const geometry::ViewInformation2D& mrViewInformation;
+ VisitingParameters const& mrParameters;
basegfx::B2DRange maRetval;
- B2DRangeVisitor(const geometry::ViewInformation2D& rViewInformation)
- : mrViewInformation(rViewInformation)
+
+ B2DRangeVisitor(VisitingParameters const& rParameters)
+ : mrParameters(rParameters)
{
}
- virtual void append(const Primitive2DReference& r) override
+
+ virtual void append(const Primitive2DReference& rReference) override
{
- maRetval.expand(getB2DRangeFromPrimitive2DReference(r, mrViewInformation));
+ maRetval.expand(getB2DRangeFromPrimitive2DReference(rReference, mrParameters));
}
- virtual void append(const Primitive2DContainer& r) override
+
+ virtual void append(const Primitive2DContainer& rReference) override
{
- maRetval.expand(r.getB2DRange(mrViewInformation));
+ maRetval.expand(rReference.getB2DRange(mrParameters));
}
- virtual void append(Primitive2DContainer&& r) override
+
+ virtual void append(Primitive2DContainer&& rReference) override
{
- maRetval.expand(r.getB2DRange(mrViewInformation));
+ maRetval.expand(rReference.getB2DRange(mrParameters));
}
};
}
-basegfx::B2DRange
-BasePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+basegfx::B2DRange BasePrimitive2D::getB2DRange(VisitingParameters const& rParameters) const
{
- B2DRangeVisitor aVisitor(rViewInformation);
- get2DDecomposition(aVisitor, rViewInformation);
+ B2DRangeVisitor aVisitor(rParameters);
+ get2DDecomposition(aVisitor, rParameters);
return aVisitor.maRetval;
}
-void BasePrimitive2D::get2DDecomposition(
- Primitive2DDecompositionVisitor& /*rVisitor*/,
- const geometry::ViewInformation2D& /*rViewInformation*/) const
+void BasePrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& /*rVisitor*/,
+ VisitingParameters const& /*rParameters*/) const
{
}
css::uno::Sequence<::css::uno::Reference<::css::graphic::XPrimitive2D>> SAL_CALL
BasePrimitive2D::getDecomposition(const uno::Sequence<beans::PropertyValue>& rViewParameters)
{
- const geometry::ViewInformation2D aViewInformation(rViewParameters);
Primitive2DContainer aContainer;
- get2DDecomposition(aContainer, aViewInformation);
+ geometry::ViewInformation2D aViewInformation2D(rViewParameters);
+ VisitingParameters aParameters(aViewInformation2D);
+ get2DDecomposition(aContainer, aParameters);
return comphelper::containerToSequence(aContainer);
}
css::geometry::RealRectangle2D SAL_CALL
BasePrimitive2D::getRange(const uno::Sequence<beans::PropertyValue>& rViewParameters)
{
- const geometry::ViewInformation2D aViewInformation(rViewParameters);
- return basegfx::unotools::rectangle2DFromB2DRectangle(getB2DRange(aViewInformation));
+ geometry::ViewInformation2D aViewInformation2D(rViewParameters);
+ VisitingParameters aParameters(aViewInformation2D);
+ return basegfx::unotools::rectangle2DFromB2DRectangle(getB2DRange(aParameters));
}
sal_Int64 SAL_CALL BasePrimitive2D::estimateUsage()
diff --git a/drawinglayer/source/primitive2d/bitmapprimitive2d.cxx b/drawinglayer/source/primitive2d/bitmapprimitive2d.cxx
index 0848193d3c65..afdff1102091 100644
--- a/drawinglayer/source/primitive2d/bitmapprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/bitmapprimitive2d.cxx
@@ -45,8 +45,7 @@ bool BitmapPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
return false;
}
-basegfx::B2DRange
-BitmapPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+basegfx::B2DRange BitmapPrimitive2D::getB2DRange(VisitingParameters const& /*rParameters*/) const
{
basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
aRetval.transform(maTransform);
diff --git a/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx b/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
index e1e6002c35cf..ceb6059d1d11 100644
--- a/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
@@ -112,7 +112,7 @@ namespace drawinglayer::primitive2d
return fRetval;
}
- void BorderLinePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void BorderLinePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
if (getStart().equal(getEnd()) || getBorderLines().empty())
return;
diff --git a/drawinglayer/source/primitive2d/controlprimitive2d.cxx b/drawinglayer/source/primitive2d/controlprimitive2d.cxx
index 5421a696742b..adb28f812e4b 100644
--- a/drawinglayer/source/primitive2d/controlprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/controlprimitive2d.cxx
@@ -75,11 +75,13 @@ namespace drawinglayer::primitive2d
}
}
- Primitive2DReference ControlPrimitive2D::createBitmapDecomposition(const geometry::ViewInformation2D& rViewInformation) const
+ Primitive2DReference ControlPrimitive2D::createBitmapDecomposition(VisitingParameters const & rParameters) const
{
Primitive2DReference xRetval;
const uno::Reference< awt::XControl >& rXControl(getXControl());
+ auto const & rViewInformation = rParameters.getViewInformation();
+
if(rXControl.is())
{
uno::Reference< awt::XWindow > xControlWindow(rXControl, uno::UNO_QUERY);
@@ -226,11 +228,11 @@ namespace drawinglayer::primitive2d
return xRetval;
}
- void ControlPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ void ControlPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
// try to create a bitmap decomposition. If that fails for some reason,
// at least create a replacement decomposition.
- Primitive2DReference xReference(createBitmapDecomposition(rViewInformation));
+ Primitive2DReference xReference(createBitmapDecomposition(rParameters));
if(!xReference.is())
{
@@ -310,7 +312,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange ControlPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange ControlPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
// simply derivate from unit range
basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
@@ -318,12 +320,12 @@ namespace drawinglayer::primitive2d
return aRetval;
}
- void ControlPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void ControlPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
// this primitive is view-dependent related to the scaling. If scaling has changed,
// destroy existing decomposition. To detect change, use size of unit size in view coordinates
::osl::MutexGuard aGuard( m_aMutex );
- const basegfx::B2DVector aNewScaling(rViewInformation.getObjectToViewTransformation() * basegfx::B2DVector(1.0, 1.0));
+ const basegfx::B2DVector aNewScaling(rParameters.getViewInformation().getObjectToViewTransformation() * basegfx::B2DVector(1.0, 1.0));
if(!getBuffered2DDecomposition().empty())
{
@@ -341,7 +343,7 @@ namespace drawinglayer::primitive2d
}
// use parent implementation
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
// provide unique ID
diff --git a/drawinglayer/source/primitive2d/cropprimitive2d.cxx b/drawinglayer/source/primitive2d/cropprimitive2d.cxx
index ff460a59fd11..dba5b0b46303 100644
--- a/drawinglayer/source/primitive2d/cropprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/cropprimitive2d.cxx
@@ -63,7 +63,7 @@ namespace drawinglayer::primitive2d
return false;
}
- void CropPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void CropPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & /*rParameters*/) const
{
if(getChildren().empty())
return;
diff --git a/drawinglayer/source/primitive2d/discretebitmapprimitive2d.cxx b/drawinglayer/source/primitive2d/discretebitmapprimitive2d.cxx
index 9389fd3aec00..6df826acb010 100644
--- a/drawinglayer/source/primitive2d/discretebitmapprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/discretebitmapprimitive2d.cxx
@@ -25,7 +25,7 @@
namespace drawinglayer::primitive2d
{
- void DiscreteBitmapPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void DiscreteBitmapPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
// use getViewTransformation() and getObjectTransformation() from
// ObjectAndViewTransformationDependentPrimitive2D to create a BitmapPrimitive2D
diff --git a/drawinglayer/source/primitive2d/discreteshadowprimitive2d.cxx b/drawinglayer/source/primitive2d/discreteshadowprimitive2d.cxx
index 36b97c99d8f2..9e25bd7f86bb 100644
--- a/drawinglayer/source/primitive2d/discreteshadowprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/discreteshadowprimitive2d.cxx
@@ -157,7 +157,7 @@ namespace drawinglayer::primitive2d
namespace drawinglayer::primitive2d
{
- void DiscreteShadowPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void DiscreteShadowPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
Primitive2DContainer xRetval;
@@ -284,7 +284,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange DiscreteShadowPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ basegfx::B2DRange DiscreteShadowPrimitive2D::getB2DRange(VisitingParameters const & rParameters) const
{
if(getDiscreteShadow().getBitmapEx().IsEmpty())
{
@@ -298,7 +298,7 @@ namespace drawinglayer::primitive2d
aRetval.transform(getTransform());
// extract discrete shadow size and grow
- const basegfx::B2DVector aScale(rViewInformation.getViewTransformation() * basegfx::B2DVector(1.0, 1.0));
+ const basegfx::B2DVector aScale(rParameters.getViewInformation().getViewTransformation() * basegfx::B2DVector(1.0, 1.0));
const sal_Int32 nQuarter((getDiscreteShadow().getBitmapEx().GetSizePixel().Width() - 3) >> 2);
const double fGrowX((1.0 / aScale.getX()) * nQuarter);
const double fGrowY((1.0 / aScale.getY()) * nQuarter);
diff --git a/drawinglayer/source/primitive2d/embedded3dprimitive2d.cxx b/drawinglayer/source/primitive2d/embedded3dprimitive2d.cxx
index e681e31c2084..890ae7562b8b 100644
--- a/drawinglayer/source/primitive2d/embedded3dprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/embedded3dprimitive2d.cxx
@@ -60,10 +60,10 @@ namespace drawinglayer::primitive2d
return !maShadowPrimitives.empty();
}
- void Embedded3DPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ void Embedded3DPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
// use info to create a yellow 2d rectangle, similar to empty 3d scenes and/or groups
- const basegfx::B2DRange aLocal2DRange(getB2DRange(rViewInformation));
+ const basegfx::B2DRange aLocal2DRange(getB2DRange(rParameters));
const basegfx::B2DPolygon aOutline(basegfx::utils::createPolygonFromRect(aLocal2DRange));
const basegfx::BColor aYellow(1.0, 1.0, 0.0);
rContainer.push_back(new PolygonHairlinePrimitive2D(aOutline, aYellow));
@@ -107,7 +107,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange Embedded3DPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ basegfx::B2DRange Embedded3DPrimitive2D::getB2DRange(VisitingParameters const & rParameters) const
{
if(maB2DRange.isEmpty())
{
@@ -125,7 +125,7 @@ namespace drawinglayer::primitive2d
// taken into account
if(impGetShadow3D())
{
- const basegfx::B2DRange aShadow2DRange(maShadowPrimitives.getB2DRange(rViewInformation));
+ const basegfx::B2DRange aShadow2DRange(maShadowPrimitives.getB2DRange(rParameters));
if(!aShadow2DRange.isEmpty())
{
diff --git a/drawinglayer/source/primitive2d/epsprimitive2d.cxx b/drawinglayer/source/primitive2d/epsprimitive2d.cxx
index ea22e529e22e..486f1a009efa 100644
--- a/drawinglayer/source/primitive2d/epsprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/epsprimitive2d.cxx
@@ -23,7 +23,7 @@
namespace drawinglayer::primitive2d
{
- void EpsPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void EpsPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
const GDIMetaFile& rSubstituteContent = getMetaFile();
@@ -65,7 +65,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange EpsPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange EpsPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
// use own implementation to quickly answer the getB2DRange question.
basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
diff --git a/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx b/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx
index 10fff2638865..212863fb7f3d 100644
--- a/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx
@@ -269,7 +269,7 @@ namespace drawinglayer::primitive2d
}
}
- void FillGradientPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void FillGradientPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
// default creates overlapping fill which works with AntiAliasing and without.
// The non-overlapping version does not create single filled polygons, but
@@ -319,7 +319,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange FillGradientPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange FillGradientPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
// return the geometrically visible area
return getOutputRange();
diff --git a/drawinglayer/source/primitive2d/fillgraphicprimitive2d.cxx b/drawinglayer/source/primitive2d/fillgraphicprimitive2d.cxx
index c8f1aa6f92d2..4832f6c85724 100644
--- a/drawinglayer/source/primitive2d/fillgraphicprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/fillgraphicprimitive2d.cxx
@@ -33,7 +33,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void FillGraphicPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void FillGraphicPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
const attribute::FillGraphicAttribute& rAttribute = getFillGraphic();
@@ -112,7 +112,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange FillGraphicPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange FillGraphicPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
// return range of it
basegfx::B2DPolygon aPolygon(basegfx::utils::createUnitPolygon());
diff --git a/drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx b/drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx
index ec81e9ec0d41..b2bac21c201f 100644
--- a/drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx
@@ -32,7 +32,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void FillHatchPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void FillHatchPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
if(getFillHatch().isDefault())
return;
@@ -167,13 +167,13 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange FillHatchPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange FillHatchPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
// return the geometrically visible area
return getOutputRange();
}
- void FillHatchPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void FillHatchPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
::osl::MutexGuard aGuard( m_aMutex );
bool bAdaptDistance(0 != getFillHatch().getMinimalDiscreteDistance());
@@ -181,12 +181,12 @@ namespace drawinglayer::primitive2d
if(bAdaptDistance)
{
// behave view-dependent
- DiscreteMetricDependentPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ DiscreteMetricDependentPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
else
{
// behave view-independent
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
}
diff --git a/drawinglayer/source/primitive2d/glowprimitive2d.cxx b/drawinglayer/source/primitive2d/glowprimitive2d.cxx
index e6adcb4b66d8..cce63b53ce2a 100644
--- a/drawinglayer/source/primitive2d/glowprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/glowprimitive2d.cxx
@@ -45,10 +45,9 @@ bool GlowPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
return false;
}
-basegfx::B2DRange
-GlowPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+basegfx::B2DRange GlowPrimitive2D::getB2DRange(VisitingParameters const& rParameters) const
{
- basegfx::B2DRange aRetval(GroupPrimitive2D::getB2DRange(rViewInformation));
+ basegfx::B2DRange aRetval(GroupPrimitive2D::getB2DRange(rParameters));
// We need additional space for the glow from all sides
aRetval.grow(getGlowRadius());
return aRetval;
diff --git a/drawinglayer/source/primitive2d/graphicprimitive2d.cxx b/drawinglayer/source/primitive2d/graphicprimitive2d.cxx
index 069670dec3cd..86d6f33840df 100644
--- a/drawinglayer/source/primitive2d/graphicprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/graphicprimitive2d.cxx
@@ -31,7 +31,7 @@
namespace drawinglayer::primitive2d
{
void GraphicPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D&) const
+ VisitingParameters const& /*rParameters*/) const
{
if (0 == getGraphicAttr().GetAlpha())
{
@@ -204,8 +204,7 @@ bool GraphicPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
return false;
}
-basegfx::B2DRange
-GraphicPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+basegfx::B2DRange GraphicPrimitive2D::getB2DRange(VisitingParameters const& /*rParameters*/) const
{
basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
aRetval.transform(getTransform());
diff --git a/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx b/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx
index e8174733bf34..609670145077 100644
--- a/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx
+++ b/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx
@@ -351,7 +351,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// override to deliver the correct expected frame dependent of timing
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & /*rParameters*/) const override;
};
}
@@ -422,13 +422,13 @@ namespace drawinglayer::primitive2d
&& maGraphic == pCompare->maGraphic);
}
- void AnimatedGraphicPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void AnimatedGraphicPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
if (!isValidData())
return;
Primitive2DReference aRetval;
- const double fState(getAnimationEntry().getStateAtTime(rViewInformation.getViewTime()));
+ const double fState(getAnimationEntry().getStateAtTime(rParameters.getViewInformation().getViewTime()));
const sal_uInt32 nLen(maAnimation.Count());
sal_uInt32 nIndex(basegfx::fround(fState * static_cast<double>(nLen)));
diff --git a/drawinglayer/source/primitive2d/gridprimitive2d.cxx b/drawinglayer/source/primitive2d/gridprimitive2d.cxx
index 4c560109ec1e..f1c4064c1b54 100644
--- a/drawinglayer/source/primitive2d/gridprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/gridprimitive2d.cxx
@@ -30,8 +30,10 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void GridPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ void GridPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
+ auto const & rViewInformation = rParameters.getViewInformation();
+
if(!(!rViewInformation.getViewport().isEmpty() && getWidth() > 0.0 && getHeight() > 0.0))
return;
@@ -294,25 +296,27 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange GridPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ basegfx::B2DRange GridPrimitive2D::getB2DRange(VisitingParameters const & rParameters) const
{
// get object's range
basegfx::B2DRange aUnitRange(0.0, 0.0, 1.0, 1.0);
aUnitRange.transform(getTransform());
// intersect with visible part
- aUnitRange.intersect(rViewInformation.getViewport());
+ aUnitRange.intersect(rParameters.getViewInformation().getViewport());
return aUnitRange;
}
- void GridPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void GridPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
::osl::MutexGuard aGuard( m_aMutex );
+ auto const & rViewInformation = rParameters.getViewInformation();
if(!getBuffered2DDecomposition().empty())
{
- if(maLastViewport != rViewInformation.getViewport() || maLastObjectToViewTransformation != rViewInformation.getObjectToViewTransformation())
+ if( maLastViewport != rViewInformation.getViewport() ||
+ maLastObjectToViewTransformation != rViewInformation.getObjectToViewTransformation())
{
// conditions of last local decomposition have changed, delete
const_cast< GridPrimitive2D* >(this)->setBuffered2DDecomposition(Primitive2DContainer());
@@ -327,7 +331,7 @@ namespace drawinglayer::primitive2d
}
// use parent implementation
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
// provide unique ID
diff --git a/drawinglayer/source/primitive2d/groupprimitive2d.cxx b/drawinglayer/source/primitive2d/groupprimitive2d.cxx
index 28f4f064608e..606510c45585 100644
--- a/drawinglayer/source/primitive2d/groupprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/groupprimitive2d.cxx
@@ -49,7 +49,7 @@ namespace drawinglayer::primitive2d
}
/// default: just return children, so all renderers not supporting group will use its content
- void GroupPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void GroupPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & /*rParameters*/) const
{
getChildren(rVisitor);
}
diff --git a/drawinglayer/source/primitive2d/helplineprimitive2d.cxx b/drawinglayer/source/primitive2d/helplineprimitive2d.cxx
index d43440fead63..ae774934ef45 100644
--- a/drawinglayer/source/primitive2d/helplineprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/helplineprimitive2d.cxx
@@ -30,8 +30,10 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void HelplinePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ void HelplinePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
+ auto const & rViewInformation = rParameters.getViewInformation();
+
if(rViewInformation.getViewport().isEmpty() || getDirection().equalZero())
return;
@@ -156,9 +158,10 @@ namespace drawinglayer::primitive2d
return false;
}
- void HelplinePrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void HelplinePrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
::osl::MutexGuard aGuard( m_aMutex );
+ auto const & rViewInformation = rParameters.getViewInformation();
if(!getBuffered2DDecomposition().empty())
{
@@ -177,7 +180,7 @@ namespace drawinglayer::primitive2d
}
// use parent implementation
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
// provide unique ID
diff --git a/drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx b/drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx
index c1298cd9589b..7b8af4925d37 100644
--- a/drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx
@@ -32,12 +32,13 @@ namespace drawinglayer::primitive2d
{
}
- basegfx::B2DRange HiddenGeometryPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ basegfx::B2DRange HiddenGeometryPrimitive2D::getB2DRange(VisitingParameters const & rParameters) const
{
- return getChildren().getB2DRange(rViewInformation);
+ return getChildren().getB2DRange(rParameters);
}
- void HiddenGeometryPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& /*rVisitor*/, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void HiddenGeometryPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& /*rVisitor*/,
+ VisitingParameters const & /*rParameters*/) const
{
}
diff --git a/drawinglayer/source/primitive2d/markerarrayprimitive2d.cxx b/drawinglayer/source/primitive2d/markerarrayprimitive2d.cxx
index 46d27c3eaa74..e1ceec103afb 100644
--- a/drawinglayer/source/primitive2d/markerarrayprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/markerarrayprimitive2d.cxx
@@ -30,7 +30,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void MarkerArrayPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ void MarkerArrayPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
const std::vector< basegfx::B2DPoint >& rPositions = getPositions();
const sal_uInt32 nMarkerCount(rPositions.size());
@@ -45,7 +45,7 @@ namespace drawinglayer::primitive2d
return;
// get logic half pixel size
- basegfx::B2DVector aLogicHalfSize(rViewInformation.getInverseObjectToViewTransformation() *
+ basegfx::B2DVector aLogicHalfSize(rParameters.getViewInformation().getInverseObjectToViewTransformation() *
basegfx::B2DVector(aBitmapSize.getWidth() - 1.0, aBitmapSize.getHeight() - 1.0));
// use half size for expand
@@ -91,7 +91,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange MarkerArrayPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ basegfx::B2DRange MarkerArrayPrimitive2D::getB2DRange(VisitingParameters const & rParameters) const
{
basegfx::B2DRange aRetval;
@@ -111,7 +111,7 @@ namespace drawinglayer::primitive2d
if(aBitmapSize.Width() && aBitmapSize.Height())
{
// get logic half size
- basegfx::B2DVector aLogicHalfSize(rViewInformation.getInverseObjectToViewTransformation() *
+ basegfx::B2DVector aLogicHalfSize(rParameters.getViewInformation().getInverseObjectToViewTransformation() *
basegfx::B2DVector(aBitmapSize.getWidth(), aBitmapSize.getHeight()));
// use half size for expand
diff --git a/drawinglayer/source/primitive2d/maskprimitive2d.cxx b/drawinglayer/source/primitive2d/maskprimitive2d.cxx
index 8a71d97008b9..d55d9757d396 100644
--- a/drawinglayer/source/primitive2d/maskprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/maskprimitive2d.cxx
@@ -46,7 +46,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange MaskPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange MaskPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
return getMask().getB2DRange();
}
diff --git a/drawinglayer/source/primitive2d/mediaprimitive2d.cxx b/drawinglayer/source/primitive2d/mediaprimitive2d.cxx
index 349e8b1a113c..3009829a00ee 100644
--- a/drawinglayer/source/primitive2d/mediaprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/mediaprimitive2d.cxx
@@ -31,7 +31,7 @@
namespace drawinglayer::primitive2d
{
- void MediaPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ void MediaPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
Primitive2DContainer xRetval;
xRetval.resize(1);
@@ -55,7 +55,7 @@ namespace drawinglayer::primitive2d
if(getDiscreteBorder())
{
- const basegfx::B2DVector aDiscreteInLogic(rViewInformation.getInverseObjectToViewTransformation() *
+ const basegfx::B2DVector aDiscreteInLogic(rParameters.getViewInformation().getInverseObjectToViewTransformation() *
basegfx::B2DVector(static_cast<double>(getDiscreteBorder()), static_cast<double>(getDiscreteBorder())));
const double fDiscreteSize(aDiscreteInLogic.getX() + aDiscreteInLogic.getY());
@@ -120,14 +120,14 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange MediaPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ basegfx::B2DRange MediaPrimitive2D::getB2DRange(VisitingParameters const & rParameters) const
{
basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
aRetval.transform(getTransform());
if(getDiscreteBorder())
{
- const basegfx::B2DVector aDiscreteInLogic(rViewInformation.getInverseObjectToViewTransformation() *
+ const basegfx::B2DVector aDiscreteInLogic(rParameters.getViewInformation().getInverseObjectToViewTransformation() *
basegfx::B2DVector(static_cast<double>(getDiscreteBorder()), static_cast<double>(getDiscreteBorder())));
const double fDiscreteSize(aDiscreteInLogic.getX() + aDiscreteInLogic.getY());
diff --git a/drawinglayer/source/primitive2d/metafileprimitive2d.cxx b/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
index 22ef460ec205..da3d030be7ea 100644
--- a/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
@@ -30,11 +30,11 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void MetafilePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ void MetafilePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
// Interpret the Metafile and get the content. There should be only one target, as in the start condition,
// but iterating will be the right thing to do when some push/pop is not closed
- Primitive2DContainer xRetval(wmfemfhelper::interpretMetafile(getMetaFile(), rViewInformation));
+ Primitive2DContainer xRetval(wmfemfhelper::interpretMetafile(getMetaFile(), rParameters.getViewInformation()));
if(!xRetval.empty())
{
@@ -46,7 +46,7 @@ namespace drawinglayer::primitive2d
// defined target range (aMtfRange)
if (!aMtfRange.isEmpty())
{
- const basegfx::B2DRange aContentRange(xRetval.getB2DRange(rViewInformation));
+ const basegfx::B2DRange aContentRange(xRetval.getB2DRange(rParameters));
// also test equal since isInside gives also true for equal
if (!aMtfRange.equal(aContentRange) && !aMtfRange.isInside(aContentRange))
@@ -107,7 +107,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange MetafilePrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange MetafilePrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
// use own implementation to quickly answer the getB2DRange question. The
// MetafilePrimitive2D assumes that all geometry is inside of the shape. If
diff --git a/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx b/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx
index 456b02333858..9a1c026ef448 100644
--- a/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx
@@ -31,7 +31,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void PagePreviewPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ void PagePreviewPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
Primitive2DContainer aContent(getPageContent());
@@ -50,7 +50,7 @@ namespace drawinglayer::primitive2d
// check if content overlaps with target size and needs to be embedded with a
// clipping primitive
- const basegfx::B2DRange aRealContentRange(aContent.getB2DRange(rViewInformation));
+ const basegfx::B2DRange aRealContentRange(aContent.getB2DRange(rParameters));
const basegfx::B2DRange aAllowedContentRange(0.0, 0.0, getContentWidth(), getContentHeight());
if(!aAllowedContentRange.isInside(aRealContentRange))
@@ -131,7 +131,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange PagePreviewPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation`*/) const
+ basegfx::B2DRange PagePreviewPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
// nothing is allowed to stick out of a PagePreviewPrimitive, thus we
// can quickly deliver our range here
diff --git a/drawinglayer/source/primitive2d/patternfillprimitive2d.cxx b/drawinglayer/source/primitive2d/patternfillprimitive2d.cxx
index e7a1f7480b6c..42559bfd4390 100644
--- a/drawinglayer/source/primitive2d/patternfillprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/patternfillprimitive2d.cxx
@@ -93,7 +93,7 @@ namespace drawinglayer::primitive2d
}
}
- Primitive2DContainer PatternFillPrimitive2D::createContent(const geometry::ViewInformation2D& rViewInformation) const
+ Primitive2DContainer PatternFillPrimitive2D::createContent(VisitingParameters const & rParameters) const
{
Primitive2DContainer aContent;
@@ -142,7 +142,7 @@ namespace drawinglayer::primitive2d
// check if content needs to be clipped
const basegfx::B2DRange aUnitRange(0.0, 0.0, 1.0, 1.0);
- const basegfx::B2DRange aContentRange(getChildren().getB2DRange(rViewInformation));
+ const basegfx::B2DRange aContentRange(getChildren().getB2DRange(rParameters));
if(!aUnitRange.isInside(aContentRange))
{
@@ -158,7 +158,7 @@ namespace drawinglayer::primitive2d
return aContent;
}
- void PatternFillPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ void PatternFillPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
Primitive2DContainer aRetval;
@@ -180,7 +180,7 @@ namespace drawinglayer::primitive2d
aTiling.appendTransformations(aMatrices);
// create content
- const Primitive2DContainer aContent(createContent(rViewInformation));
+ const Primitive2DContainer aContent(createContent(rParameters));
// resize result
aRetval.resize(aMatrices.size());
@@ -244,12 +244,12 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange PatternFillPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /* rViewInformation */ ) const
+ basegfx::B2DRange PatternFillPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
return getMask().getB2DRange();
}
- void PatternFillPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void PatternFillPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
// The existing buffered decomposition uses a buffer in the remembered
// size or none if sizes are zero. Get new needed sizes which depend on
@@ -257,7 +257,7 @@ namespace drawinglayer::primitive2d
bool bResetBuffering = false;
sal_uInt32 nW(0);
sal_uInt32 nH(0);
- calculateNeededDiscreteBufferSize(nW, nH, rViewInformation);
+ calculateNeededDiscreteBufferSize(nW, nH, rParameters.getViewInformation());
const bool bBufferingCurrentlyUsed(0 != mnDiscreteWidth && 0 != mnDiscreteHeight);
const bool bBufferingNextUsed(0 != nW && 0 != nH);
@@ -305,7 +305,7 @@ namespace drawinglayer::primitive2d
}
// call parent
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
sal_Int64 SAL_CALL PatternFillPrimitive2D::estimateUsage()
diff --git a/drawinglayer/source/primitive2d/pointarrayprimitive2d.cxx b/drawinglayer/source/primitive2d/pointarrayprimitive2d.cxx
index d616b26226fd..bf07d3077e60 100644
--- a/drawinglayer/source/primitive2d/pointarrayprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/pointarrayprimitive2d.cxx
@@ -49,7 +49,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange PointArrayPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange PointArrayPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
if(maB2DRange.isEmpty())
{
diff --git a/drawinglayer/source/primitive2d/polygonprimitive2d.cxx b/drawinglayer/source/primitive2d/polygonprimitive2d.cxx
index 17e63883c94b..eae37f46a1e6 100644
--- a/drawinglayer/source/primitive2d/polygonprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/polygonprimitive2d.cxx
@@ -53,7 +53,7 @@ bool PolygonHairlinePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) c
}
basegfx::B2DRange
-PolygonHairlinePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+PolygonHairlinePrimitive2D::getB2DRange(VisitingParameters const& rParameters) const
{
// this is a hairline, thus the line width is view-dependent. Get range of polygon
// as base size
@@ -63,7 +63,8 @@ PolygonHairlinePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rView
{
// Calculate view-dependent hairline width
const basegfx::B2DVector aDiscreteSize(
- rViewInformation.getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 0.0));
+ rParameters.getViewInformation().getInverseObjectToViewTransformation()
+ * basegfx::B2DVector(1.0, 0.0));
const double fDiscreteHalfLineWidth(aDiscreteSize.getLength() * 0.5);
if (basegfx::fTools::more(fDiscreteHalfLineWidth, 0.0))
@@ -83,11 +84,12 @@ sal_uInt32 PolygonHairlinePrimitive2D::getPrimitive2DID() const
}
void PolygonMarkerPrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ Primitive2DContainer& rContainer, VisitingParameters const& rParameters) const
{
// calculate logic DashLength
- const basegfx::B2DVector aDashVector(rViewInformation.getInverseObjectToViewTransformation()
- * basegfx::B2DVector(getDiscreteDashLength(), 0.0));
+ const basegfx::B2DVector aDashVector(
+ rParameters.getViewInformation().getInverseObjectToViewTransformation()
+ * basegfx::B2DVector(getDiscreteDashLength(), 0.0));
const double fLogicDashLength(aDashVector.getX());
if (fLogicDashLength > 0.0 && !getRGBColorA().equal(getRGBColorB()))
@@ -140,8 +142,7 @@ bool PolygonMarkerPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) con
return false;
}
-basegfx::B2DRange
-PolygonMarkerPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+basegfx::B2DRange PolygonMarkerPrimitive2D::getB2DRange(VisitingParameters const& rParameters) const
{
// this is a hairline, thus the line width is view-dependent. Get range of polygon
// as base size
@@ -151,7 +152,8 @@ PolygonMarkerPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewIn
{
// Calculate view-dependent hairline width
const basegfx::B2DVector aDiscreteSize(
- rViewInformation.getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 0.0));
+ rParameters.getViewInformation().getInverseObjectToViewTransformation()
+ * basegfx::B2DVector(1.0, 0.0));
const double fDiscreteHalfLineWidth(aDiscreteSize.getLength() * 0.5);
if (basegfx::fTools::more(fDiscreteHalfLineWidth, 0.0))
@@ -164,12 +166,12 @@ PolygonMarkerPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewIn
return aRetval;
}
-void PolygonMarkerPrimitive2D::get2DDecomposition(
- Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const
+void PolygonMarkerPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
+ VisitingParameters const& rParameters) const
{
::osl::MutexGuard aGuard(m_aMutex);
bool bNeedNewDecomposition(false);
+ auto const& rViewInformation = rParameters.getViewInformation();
if (!getBuffered2DDecomposition().empty())
{
@@ -196,7 +198,7 @@ void PolygonMarkerPrimitive2D::get2DDecomposition(
}
// use parent implementation
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
// provide unique ID
@@ -210,7 +212,7 @@ sal_uInt32 PolygonMarkerPrimitive2D::getPrimitive2DID() const
namespace drawinglayer::primitive2d
{
void PolygonStrokePrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
if (!getB2DPolygon().count())
return;
@@ -312,9 +314,10 @@ bool PolygonStrokePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) con
return false;
}
-basegfx::B2DRange
-PolygonStrokePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+basegfx::B2DRange PolygonStrokePrimitive2D::getB2DRange(VisitingParameters const& rParameters) const
{
+ auto const& rViewInformation = rParameters.getViewInformation();
+
basegfx::B2DRange aRetval;
if (getLineAttribute().getWidth())
@@ -347,7 +350,7 @@ PolygonStrokePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewIn
attribute::StrokeAttribute aOrigStrokeAttribute = maStrokeAttribute;
const_cast<PolygonStrokePrimitive2D*>(this)->maStrokeAttribute
= attribute::StrokeAttribute();
- aRetval = BufferedDecompositionPrimitive2D::getB2DRange(rViewInformation);
+ aRetval = BufferedDecompositionPrimitive2D::getB2DRange(rParameters);
const_cast<PolygonStrokePrimitive2D*>(this)->maStrokeAttribute = aOrigStrokeAttribute;
}
else
@@ -389,7 +392,7 @@ sal_uInt32 PolygonStrokePrimitive2D::getPrimitive2DID() const
}
void PolygonWavePrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
if (!getB2DPolygon().count())
return;
@@ -464,11 +467,10 @@ bool PolygonWavePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
return false;
}
-basegfx::B2DRange
-PolygonWavePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+basegfx::B2DRange PolygonWavePrimitive2D::getB2DRange(VisitingParameters const& rParameters) const
{
// get range of parent
- basegfx::B2DRange aRetval(PolygonStrokePrimitive2D::getB2DRange(rViewInformation));
+ basegfx::B2DRange aRetval(PolygonStrokePrimitive2D::getB2DRange(rParameters));
// if WaveHeight, grow by it
if (basegfx::fTools::more(getWaveHeight(), 0.0))
@@ -492,7 +494,7 @@ sal_uInt32 PolygonWavePrimitive2D::getPrimitive2DID() const
}
void PolygonStrokeArrowPrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
// copy local polygon, it may be changed
basegfx::B2DPolygon aLocalPolygon(getB2DPolygon());
@@ -590,18 +592,18 @@ bool PolygonStrokeArrowPrimitive2D::operator==(const BasePrimitive2D& rPrimitive
return false;
}
-basegfx::B2DRange PolygonStrokeArrowPrimitive2D::getB2DRange(
- const geometry::ViewInformation2D& rViewInformation) const
+basegfx::B2DRange
+PolygonStrokeArrowPrimitive2D::getB2DRange(VisitingParameters const& rParameters) const
{
if (getStart().isActive() || getEnd().isActive())
{
// use decomposition when line start/end is used
- return BufferedDecompositionPrimitive2D::getB2DRange(rViewInformation);
+ return BufferedDecompositionPrimitive2D::getB2DRange(rParameters);
}
else
{
// get range from parent
- return PolygonStrokePrimitive2D::getB2DRange(rViewInformation);
+ return PolygonStrokePrimitive2D::getB2DRange(rParameters);
}
}
diff --git a/drawinglayer/source/primitive2d/primitivetools2d.cxx b/drawinglayer/source/primitive2d/primitivetools2d.cxx
index da0a378a0089..2acaeaf9592f 100644
--- a/drawinglayer/source/primitive2d/primitivetools2d.cxx
+++ b/drawinglayer/source/primitive2d/primitivetools2d.cxx
@@ -24,12 +24,12 @@
namespace drawinglayer::primitive2d
{
- void DiscreteMetricDependentPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void DiscreteMetricDependentPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
::osl::MutexGuard aGuard( m_aMutex );
// get the current DiscreteUnit, look at X and Y and use the maximum
- const basegfx::B2DVector aDiscreteVector(rViewInformation.getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 1.0));
+ const basegfx::B2DVector aDiscreteVector(rParameters.getViewInformation().getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 1.0));
const double fDiscreteUnit(std::min(fabs(aDiscreteVector.getX()), fabs(aDiscreteVector.getY())));
if(!getBuffered2DDecomposition().empty() && !basegfx::fTools::equal(fDiscreteUnit, getDiscreteUnit()))
@@ -45,18 +45,18 @@ namespace drawinglayer::primitive2d
}
// call base implementation
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
- void ViewportDependentPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void ViewportDependentPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
::osl::MutexGuard aGuard( m_aMutex );
// get the current Viewport
- const basegfx::B2DRange& rViewport = rViewInformation.getViewport();
+ const basegfx::B2DRange& rViewport = rParameters.getViewInformation().getViewport();
if(!getBuffered2DDecomposition().empty() && !rViewport.equal(getViewport()))
{
@@ -71,15 +71,15 @@ namespace drawinglayer::primitive2d
}
// call base implementation
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
- void ViewTransformationDependentPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void ViewTransformationDependentPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
::osl::MutexGuard aGuard( m_aMutex );
// get the current ViewTransformation
- const basegfx::B2DHomMatrix& rViewTransformation = rViewInformation.getViewTransformation();
+ const basegfx::B2DHomMatrix& rViewTransformation = rParameters.getViewInformation().getViewTransformation();
if(!getBuffered2DDecomposition().empty() && rViewTransformation != getViewTransformation())
{
@@ -94,15 +94,15 @@ namespace drawinglayer::primitive2d
}
// call base implementation
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
- void ObjectAndViewTransformationDependentPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void ObjectAndViewTransformationDependentPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
::osl::MutexGuard aGuard( m_aMutex );
// get the current ViewTransformation
- const basegfx::B2DHomMatrix& rViewTransformation = rViewInformation.getViewTransformation();
+ const basegfx::B2DHomMatrix& rViewTransformation = rParameters.getViewInformation().getViewTransformation();
if(!getBuffered2DDecomposition().empty() && rViewTransformation != getViewTransformation())
{
@@ -111,7 +111,7 @@ namespace drawinglayer::primitive2d
}
// get the current ObjectTransformation
- const basegfx::B2DHomMatrix& rObjectTransformation = rViewInformation.getObjectTransformation();
+ const basegfx::B2DHomMatrix& rObjectTransformation = rParameters.getViewInformation().getObjectTransformation();
if(!getBuffered2DDecomposition().empty() && rObjectTransformation != getObjectTransformation())
{
@@ -127,7 +127,7 @@ namespace drawinglayer::primitive2d
}
// call base implementation
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
} // end of namespace
diff --git a/drawinglayer/source/primitive2d/sceneprimitive2d.cxx b/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
index 9c8cc2b39c71..d85cf5ae08a2 100644
--- a/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
@@ -211,14 +211,15 @@ namespace drawinglayer::primitive2d
}
}
- void ScenePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ void ScenePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
+ auto const & rViewInformation = rParameters.getViewInformation();
// create 2D shadows from contained 3D primitives. This creates the shadow primitives on demand and tells if
// there are some or not. Do this at start, the shadow might still be visible even when the scene is not
if(impGetShadow3D())
{
// test visibility
- const basegfx::B2DRange aShadow2DRange(maShadowPrimitives.getB2DRange(rViewInformation));
+ const basegfx::B2DRange aShadow2DRange(maShadowPrimitives.getB2DRange(rParameters));
const basegfx::B2DRange aViewRange(
rViewInformation.getViewport());
@@ -234,7 +235,7 @@ namespace drawinglayer::primitive2d
basegfx::B2DRange aVisibleDiscreteRange;
basegfx::B2DRange aUnitVisibleRange;
- calculateDiscreteSizes(rViewInformation, aDiscreteRange, aVisibleDiscreteRange, aUnitVisibleRange);
+ calculateDiscreteSizes(rParameters.getViewInformation(), aDiscreteRange, aVisibleDiscreteRange, aUnitVisibleRange);
if(aVisibleDiscreteRange.isEmpty())
return;
@@ -601,23 +602,23 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange ScenePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ basegfx::B2DRange ScenePrimitive2D::getB2DRange(VisitingParameters const & rParameters) const
{
// transform unit range to discrete coordinate range
basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
- aRetval.transform(rViewInformation.getObjectToViewTransformation() * getObjectTransformation());
+ aRetval.transform(rParameters.getViewInformation().getObjectToViewTransformation() * getObjectTransformation());
// force to discrete expanded bounds (it grows, so expanding works perfectly well)
aRetval.expand(basegfx::B2DTuple(floor(aRetval.getMinX()), floor(aRetval.getMinY())));
aRetval.expand(basegfx::B2DTuple(ceil(aRetval.getMaxX()), ceil(aRetval.getMaxY())));
// transform back from discrete (view) to world coordinates
- aRetval.transform(rViewInformation.getInverseObjectToViewTransformation());
+ aRetval.transform(rParameters.getViewInformation().getInverseObjectToViewTransformation());
// expand by evtl. existing shadow primitives
if(impGetShadow3D())
{
- const basegfx::B2DRange aShadow2DRange(maShadowPrimitives.getB2DRange(rViewInformation));
+ const basegfx::B2DRange aShadow2DRange(maShadowPrimitives.getB2DRange(rParameters));
if(!aShadow2DRange.isEmpty())
{
@@ -628,7 +629,7 @@ namespace drawinglayer::primitive2d
return aRetval;
}
- void ScenePrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void ScenePrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
::osl::MutexGuard aGuard( m_aMutex );
@@ -641,7 +642,7 @@ namespace drawinglayer::primitive2d
if(!getBuffered2DDecomposition().empty())
{
basegfx::B2DRange aVisibleDiscreteRange;
- calculateDiscreteSizes(rViewInformation, aDiscreteRange, aVisibleDiscreteRange, aUnitVisibleRange);
+ calculateDiscreteSizes(rParameters.getViewInformation(), aDiscreteRange, aVisibleDiscreteRange, aUnitVisibleRange);
bDiscreteSizesAreCalculated = true;
// needs to be painted when the new part is not part of the last
@@ -674,7 +675,7 @@ namespace drawinglayer::primitive2d
if(!bDiscreteSizesAreCalculated)
{
basegfx::B2DRange aVisibleDiscreteRange;
- calculateDiscreteSizes(rViewInformation, aDiscreteRange, aVisibleDiscreteRange, aUnitVisibleRange);
+ calculateDiscreteSizes(rParameters.getViewInformation(), aDiscreteRange, aVisibleDiscreteRange, aUnitVisibleRange);
}
// remember last used NewDiscreteSize and NewUnitVisiblePart
@@ -685,7 +686,7 @@ namespace drawinglayer::primitive2d
}
// use parent implementation
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
// provide unique ID
diff --git a/drawinglayer/source/primitive2d/shadowprimitive2d.cxx b/drawinglayer/source/primitive2d/shadowprimitive2d.cxx
index 5ede8b68c9c3..cb47b75f6248 100644
--- a/drawinglayer/source/primitive2d/shadowprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/shadowprimitive2d.cxx
@@ -56,15 +56,15 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange ShadowPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ basegfx::B2DRange ShadowPrimitive2D::getB2DRange(VisitingParameters const & rParameters) const
{
- basegfx::B2DRange aRetval(getChildren().getB2DRange(rViewInformation));
+ basegfx::B2DRange aRetval(getChildren().getB2DRange(rParameters));
aRetval.grow(getShadowBlur());
aRetval.transform(getShadowTransform());
return aRetval;
}
- void ShadowPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void ShadowPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & /*rParameters*/) const
{
if(getChildren().empty())
return;
diff --git a/drawinglayer/source/primitive2d/softedgeprimitive2d.cxx b/drawinglayer/source/primitive2d/softedgeprimitive2d.cxx
index 03b8ee61c950..1d24d260b28f 100644
--- a/drawinglayer/source/primitive2d/softedgeprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/softedgeprimitive2d.cxx
@@ -40,16 +40,15 @@ bool SoftEdgePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
return false;
}
-void SoftEdgePrimitive2D::get2DDecomposition(
- Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const
+void SoftEdgePrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
+ VisitingParameters const& rParameters) const
{
if (getChildren().empty())
return;
if (!mbInMaskGeneration)
{
- GroupPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ GroupPrimitive2D::get2DDecomposition(rVisitor, rParameters);
return;
}
diff --git a/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx b/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx
index 7aeb1395714f..7fcc3aeea704 100644
--- a/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx
@@ -465,7 +465,7 @@ namespace drawinglayer::primitive2d
}
}
- void SvgLinearGradientPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void SvgLinearGradientPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
if(!getPreconditionsChecked())
{
@@ -591,7 +591,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange SvgLinearGradientPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange SvgLinearGradientPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
// return ObjectRange
return getPolyPolygon().getB2DRange();
@@ -688,7 +688,7 @@ namespace drawinglayer::primitive2d
}
}
- void SvgRadialGradientPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void SvgRadialGradientPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
if(!getPreconditionsChecked())
{
@@ -842,7 +842,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange SvgRadialGradientPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange SvgRadialGradientPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
// return ObjectRange
return getPolyPolygon().getB2DRange();
@@ -861,7 +861,7 @@ namespace drawinglayer::primitive2d
namespace drawinglayer::primitive2d
{
- void SvgLinearAtomPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void SvgLinearAtomPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
const double fDelta(getOffsetB() - getOffsetA());
@@ -949,7 +949,7 @@ namespace drawinglayer::primitive2d
namespace drawinglayer::primitive2d
{
- void SvgRadialAtomPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void SvgRadialAtomPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
const double fDeltaScale(getScaleB() - getScaleA());
diff --git a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
index 34dbf72b94ea..0c146648feae 100644
--- a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx
@@ -149,7 +149,7 @@ namespace drawinglayer::primitive2d
// TODO: Handle Font Emphasis Above/Below
}
- void TextDecoratedPortionPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void TextDecoratedPortionPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
if(getWordLineMode())
{
@@ -368,7 +368,7 @@ namespace drawinglayer::primitive2d
// #i96475#
// Added missing implementation. Decorations may (will) stick out of the text's
// inking area, so add them if needed
- basegfx::B2DRange TextDecoratedPortionPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ basegfx::B2DRange TextDecoratedPortionPrimitive2D::getB2DRange(VisitingParameters const & rParameters) const
{
// check if this needs to be a TextDecoratedPortionPrimitive2D or
// if a TextSimplePortionPrimitive2D would be sufficient
@@ -382,12 +382,12 @@ namespace drawinglayer::primitive2d
// decoration is used, fallback to BufferedDecompositionPrimitive2D::getB2DRange which uses
// the own local decomposition for computation and thus creates all necessary
// geometric objects
- return BufferedDecompositionPrimitive2D::getB2DRange(rViewInformation);
+ return BufferedDecompositionPrimitive2D::getB2DRange(rParameters);
}
else
{
// no relevant decoration used, fallback to TextSimplePortionPrimitive2D::getB2DRange
- return TextSimplePortionPrimitive2D::getB2DRange(rViewInformation);
+ return TextSimplePortionPrimitive2D::getB2DRange(rParameters);
}
}
diff --git a/drawinglayer/source/primitive2d/texteffectprimitive2d.cxx b/drawinglayer/source/primitive2d/texteffectprimitive2d.cxx
index 7b2839803adf..338255b4e401 100644
--- a/drawinglayer/source/primitive2d/texteffectprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/texteffectprimitive2d.cxx
@@ -28,13 +28,14 @@ namespace drawinglayer::primitive2d
{
const double fDiscreteSize(1.1);
-void TextEffectPrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+void TextEffectPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const
{
// get the distance of one discrete units from target display. Use between 1.0 and sqrt(2) to
// have good results on rotated objects, too
- const basegfx::B2DVector aDistance(rViewInformation.getInverseObjectToViewTransformation()
- * basegfx::B2DVector(fDiscreteSize, fDiscreteSize));
+ const basegfx::B2DVector aDistance(
+ rParameters.getViewInformation().getInverseObjectToViewTransformation()
+ * basegfx::B2DVector(fDiscreteSize, fDiscreteSize));
const basegfx::B2DVector aDiagonalDistance(aDistance * (1.0 / 1.44));
switch (getTextEffectStyle2D())
@@ -188,29 +189,28 @@ bool TextEffectPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
return false;
}
-basegfx::B2DRange
-TextEffectPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+basegfx::B2DRange TextEffectPrimitive2D::getB2DRange(VisitingParameters const& rParameters) const
{
// get range of content and grow by used fDiscreteSize. That way it is not necessary to ask
// the whole decomposition for its ranges (which may be expensive with outline mode which
// then will ask 9 times at nearly the same content. This may even be refined here using the
// TextEffectStyle information, e.g. for TEXTEFFECTSTYLE2D_RELIEF the grow needs only to
// be in two directions
- basegfx::B2DRange aRetval(getTextContent().getB2DRange(rViewInformation));
+ basegfx::B2DRange aRetval(getTextContent().getB2DRange(rParameters));
aRetval.grow(fDiscreteSize);
return aRetval;
}
-void TextEffectPrimitive2D::get2DDecomposition(
- Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const
+void TextEffectPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
+ VisitingParameters const& rParameters) const
{
::osl::MutexGuard aGuard(m_aMutex);
if (!getBuffered2DDecomposition().empty())
{
- if (maLastObjectToViewTransformation != rViewInformation.getObjectToViewTransformation())
+ if (maLastObjectToViewTransformation
+ != rParameters.getViewInformation().getObjectToViewTransformation())
{
// conditions of last local decomposition have changed, delete
const_cast<TextEffectPrimitive2D*>(this)->setBuffered2DDecomposition(
@@ -222,11 +222,11 @@ void TextEffectPrimitive2D::get2DDecomposition(
{
// remember ViewRange and ViewTransformation
const_cast<TextEffectPrimitive2D*>(this)->maLastObjectToViewTransformation
- = rViewInformation.getObjectToViewTransformation();
+ = rParameters.getViewInformation().getObjectToViewTransformation();
}
// use parent implementation
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
// provide unique ID
diff --git a/drawinglayer/source/primitive2d/textlineprimitive2d.cxx b/drawinglayer/source/primitive2d/textlineprimitive2d.cxx
index 6d2293f77f7a..75a213907a10 100644
--- a/drawinglayer/source/primitive2d/textlineprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/textlineprimitive2d.cxx
@@ -28,7 +28,7 @@
namespace drawinglayer::primitive2d
{
- void TextLinePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void TextLinePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
if(TEXT_LINE_NONE == getTextLine())
return;
diff --git a/drawinglayer/source/primitive2d/textprimitive2d.cxx b/drawinglayer/source/primitive2d/textprimitive2d.cxx
index 48fe07ac8987..dd146316f810 100644
--- a/drawinglayer/source/primitive2d/textprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/textprimitive2d.cxx
@@ -151,7 +151,7 @@ void TextSimplePortionPrimitive2D::getTextOutlinesAndTransformation(
}
void TextSimplePortionPrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
if (!getTextLength())
return;
@@ -252,8 +252,8 @@ bool TextSimplePortionPrimitive2D::operator==(const BasePrimitive2D& rPrimitive)
return false;
}
-basegfx::B2DRange TextSimplePortionPrimitive2D::getB2DRange(
- const geometry::ViewInformation2D& /*rViewInformation*/) const
+basegfx::B2DRange
+TextSimplePortionPrimitive2D::getB2DRange(VisitingParameters const& /*rParameters*/) const
{
if (maB2DRange.isEmpty() && getTextLength())
{
diff --git a/drawinglayer/source/primitive2d/textstrikeoutprimitive2d.cxx b/drawinglayer/source/primitive2d/textstrikeoutprimitive2d.cxx
index 62ad88fe70e9..49593bee4632 100644
--- a/drawinglayer/source/primitive2d/textstrikeoutprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/textstrikeoutprimitive2d.cxx
@@ -57,7 +57,7 @@ namespace drawinglayer::primitive2d
}
- void TextCharacterStrikeoutPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void TextCharacterStrikeoutPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
// strikeout with character
const OUString aSingleCharString(getStrikeoutChar());
@@ -135,7 +135,7 @@ namespace drawinglayer::primitive2d
return PRIMITIVE2D_ID_TEXTCHARACTERSTRIKEOUTPRIMITIVE2D;
}
- void TextGeometryStrikeoutPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void TextGeometryStrikeoutPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
OSL_ENSURE(TEXT_STRIKEOUT_SLASH != getTextStrikeout() && TEXT_STRIKEOUT_X != getTextStrikeout(),
"Wrong TEXT_STRIKEOUT type; a TextCharacterStrikeoutPrimitive2D should be used (!)");
diff --git a/drawinglayer/source/primitive2d/transformprimitive2d.cxx b/drawinglayer/source/primitive2d/transformprimitive2d.cxx
index b44b7d271459..2c7e5c08cfb4 100644
--- a/drawinglayer/source/primitive2d/transformprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/transformprimitive2d.cxx
@@ -46,9 +46,9 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange TransformPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ basegfx::B2DRange TransformPrimitive2D::getB2DRange(VisitingParameters const & rParameters) const
{
- basegfx::B2DRange aRetval(getChildren().getB2DRange(rViewInformation));
+ basegfx::B2DRange aRetval(getChildren().getB2DRange(rParameters));
aRetval.transform(getTransformation());
return aRetval;
}
diff --git a/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx b/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx
index 88ecf44571cf..cbe3ecf81bfe 100644
--- a/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx
@@ -52,14 +52,14 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange UnifiedTransparencePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ basegfx::B2DRange UnifiedTransparencePrimitive2D::getB2DRange(VisitingParameters const & rParameters) const
{
// do not use the fallback to decomposition here since for a correct BoundRect we also
// need invisible (1.0 == getTransparence()) geometry; these would be deleted in the decomposition
- return getChildren().getB2DRange( rViewInformation);
+ return getChildren().getB2DRange(rParameters);
}
- void UnifiedTransparencePrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void UnifiedTransparencePrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
if(0.0 == getTransparence())
{
@@ -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(rViewInformation));
+ const basegfx::B2DRange aPolygonRange(getChildren().getB2DRange(rParameters.getViewInformation()));
const basegfx::B2DPolygon aPolygon(basegfx::utils::createPolygonFromRect(aPolygonRange));
const basegfx::BColor aGray(getTransparence(), getTransparence(), getTransparence());
Primitive2DContainer aTransparenceContent(2);
diff --git a/drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx b/drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx
index 04df87823e9b..9552998fd5a9 100644
--- a/drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx
@@ -31,7 +31,7 @@
namespace drawinglayer::primitive2d
{
- void WallpaperBitmapPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void WallpaperBitmapPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
Primitive2DReference aRetval;
@@ -242,7 +242,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange WallpaperBitmapPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange WallpaperBitmapPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
return getLocalObjectRange();
}
diff --git a/drawinglayer/source/primitive2d/wrongspellprimitive2d.cxx b/drawinglayer/source/primitive2d/wrongspellprimitive2d.cxx
index 4b71a4d9ab9c..df393d4d72ef 100644
--- a/drawinglayer/source/primitive2d/wrongspellprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/wrongspellprimitive2d.cxx
@@ -26,7 +26,7 @@
namespace drawinglayer::primitive2d
{
- void WrongSpellPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void WrongSpellPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
// ATM this decompose is view-independent, what the original VCL-Display is not. To mimic
// the old behaviour here if wanted it is necessary to add get2DDecomposition and implement
diff --git a/drawinglayer/source/tools/wmfemfhelper.cxx b/drawinglayer/source/tools/wmfemfhelper.cxx
index a54893025984..ea7cd1d395be 100644
--- a/drawinglayer/source/tools/wmfemfhelper.cxx
+++ b/drawinglayer/source/tools/wmfemfhelper.cxx
@@ -76,7 +76,7 @@ namespace drawinglayer::primitive2d
protected:
/// local decomposition.
virtual void create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -92,7 +92,7 @@ namespace drawinglayer::primitive2d
void NonOverlappingFillGradientPrimitive2D::create2DDecomposition(
Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& /*rViewInformation*/) const
+ VisitingParameters const & /*rParameters*/) const
{
if (!getFillGradient().isDefault())
{
diff --git a/include/drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx b/include/drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx
index c86289a08801..5fd676eb10e7 100644
--- a/include/drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx
+++ b/include/drawinglayer/primitive2d/BufferedDecompositionPrimitive2D.hxx
@@ -84,7 +84,7 @@ protected:
/** method which is to be used to implement the local decomposition of a 2D primitive. */
virtual void
create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const = 0;
+ VisitingParameters const& rParameters) const = 0;
public:
// constructor/destructor
@@ -98,7 +98,7 @@ public:
*/
virtual void
get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ VisitingParameters const& rParameters) const override;
};
} // end of namespace drawinglayer::primitive2d
diff --git a/include/drawinglayer/primitive2d/DeviceDependentServices.hxx b/include/drawinglayer/primitive2d/DeviceDependentServices.hxx
new file mode 100644
index 000000000000..ceb9ea70932f
--- /dev/null
+++ b/include/drawinglayer/primitive2d/DeviceDependentServices.hxx
@@ -0,0 +1,26 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+
+#pragma once
+
+#include <drawinglayer/drawinglayerdllapi.h>
+
+namespace drawinglayer::primitive2d
+{
+class DRAWINGLAYERCORE_DLLPUBLIC DeviceDependentServices
+{
+private:
+public:
+ DeviceDependentServices() {}
+};
+
+} // end of namespace drawinglayer::primitive2d
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx
index c9acbb00dd30..621a04600aae 100644
--- a/include/drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx
+++ b/include/drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx
@@ -55,8 +55,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/PolyPolygonGradientPrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonGradientPrimitive2D.hxx
index 9cdeee03f0b4..84a6ec3d39c1 100644
--- a/include/drawinglayer/primitive2d/PolyPolygonGradientPrimitive2D.hxx
+++ b/include/drawinglayer/primitive2d/PolyPolygonGradientPrimitive2D.hxx
@@ -47,9 +47,8 @@ private:
attribute::FillGradientAttribute maFillGradient;
/// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructors. The one without definition range will use output range as definition range
diff --git a/include/drawinglayer/primitive2d/PolyPolygonGraphicPrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonGraphicPrimitive2D.hxx
index 82094a07ccc7..9ec14f8a20f4 100644
--- a/include/drawinglayer/primitive2d/PolyPolygonGraphicPrimitive2D.hxx
+++ b/include/drawinglayer/primitive2d/PolyPolygonGraphicPrimitive2D.hxx
@@ -47,9 +47,8 @@ private:
attribute::FillGraphicAttribute maFillGraphic;
/// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
PolyPolygonGraphicPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
diff --git a/include/drawinglayer/primitive2d/PolyPolygonHairlinePrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonHairlinePrimitive2D.hxx
index 1cab074fabf9..b421a52d58bb 100644
--- a/include/drawinglayer/primitive2d/PolyPolygonHairlinePrimitive2D.hxx
+++ b/include/drawinglayer/primitive2d/PolyPolygonHairlinePrimitive2D.hxx
@@ -44,9 +44,8 @@ private:
basegfx::BColor maBColor;
/// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -61,8 +60,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/PolyPolygonHatchPrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonHatchPrimitive2D.hxx
index 960d2e600d0e..603ba2857a14 100644
--- a/include/drawinglayer/primitive2d/PolyPolygonHatchPrimitive2D.hxx
+++ b/include/drawinglayer/primitive2d/PolyPolygonHatchPrimitive2D.hxx
@@ -51,9 +51,8 @@ private:
attribute::FillHatchAttribute maFillHatch;
/// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructors. The one without definition range will use output range as definition range
diff --git a/include/drawinglayer/primitive2d/PolyPolygonMarkerPrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonMarkerPrimitive2D.hxx
index b2dc64630ecb..e4b7a5cb1cb6 100644
--- a/include/drawinglayer/primitive2d/PolyPolygonMarkerPrimitive2D.hxx
+++ b/include/drawinglayer/primitive2d/PolyPolygonMarkerPrimitive2D.hxx
@@ -50,9 +50,8 @@ private:
double mfDiscreteDashLength;
/// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -70,8 +69,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/PolyPolygonSelectionPrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonSelectionPrimitive2D.hxx
index f7a7c145bca9..0335bdd8fdb2 100644
--- a/include/drawinglayer/primitive2d/PolyPolygonSelectionPrimitive2D.hxx
+++ b/include/drawinglayer/primitive2d/PolyPolygonSelectionPrimitive2D.hxx
@@ -54,9 +54,8 @@ private:
bool mbFill : 1;
/// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -75,8 +74,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/PolyPolygonStrokePrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonStrokePrimitive2D.hxx
index 94a58b466ffe..faea57621cb1 100644
--- a/include/drawinglayer/primitive2d/PolyPolygonStrokePrimitive2D.hxx
+++ b/include/drawinglayer/primitive2d/PolyPolygonStrokePrimitive2D.hxx
@@ -48,9 +48,8 @@ private:
attribute::StrokeAttribute maStrokeAttribute;
/// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -70,8 +69,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/Primitive2DContainer.hxx b/include/drawinglayer/primitive2d/Primitive2DContainer.hxx
index f694541d8d89..68f330e3cfcb 100644
--- a/include/drawinglayer/primitive2d/Primitive2DContainer.hxx
+++ b/include/drawinglayer/primitive2d/Primitive2DContainer.hxx
@@ -27,9 +27,9 @@
#include <basegfx/range/b2drange.hxx>
#include <deque>
-namespace drawinglayer::geometry
+namespace drawinglayer::primitive2d
{
-class ViewInformation2D;
+class VisitingParameters;
}
namespace drawinglayer::primitive2d
@@ -88,7 +88,7 @@ public:
}
bool operator==(const Primitive2DContainer& rB) const;
bool operator!=(const Primitive2DContainer& rB) const { return !operator==(rB); }
- basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& aViewInformation) const;
+ basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const;
Primitive2DContainer maybeInvert(bool bInvert = false) const;
};
diff --git a/include/drawinglayer/primitive2d/Tools.hxx b/include/drawinglayer/primitive2d/Tools.hxx
index 1c30565c8c1b..b3ec0392b321 100644
--- a/include/drawinglayer/primitive2d/Tools.hxx
+++ b/include/drawinglayer/primitive2d/Tools.hxx
@@ -23,16 +23,16 @@
#include <drawinglayer/primitive2d/CommonTypes.hxx>
#include <basegfx/range/b2drange.hxx>
-namespace drawinglayer::geometry
+namespace drawinglayer::primitive2d
{
-class ViewInformation2D;
+class VisitingParameters;
}
namespace drawinglayer::primitive2d
{
/// get B2DRange from a given Primitive2DReference
basegfx::B2DRange DRAWINGLAYERCORE_DLLPUBLIC getB2DRangeFromPrimitive2DReference(
- const Primitive2DReference& rCandidate, const geometry::ViewInformation2D& aViewInformation);
+ const Primitive2DReference& rCandidate, VisitingParameters const& rParameters);
/** compare two Primitive2DReferences for equality, including trying to get implementations (BasePrimitive2D)
and using compare operator
diff --git a/include/drawinglayer/primitive2d/animatedprimitive2d.hxx b/include/drawinglayer/primitive2d/animatedprimitive2d.hxx
index 677235111e2d..1646f0895cfe 100644
--- a/include/drawinglayer/primitive2d/animatedprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/animatedprimitive2d.hxx
@@ -98,9 +98,8 @@ public:
depends on the point in time, so the default implementation is
not useful here, it needs to be handled locally
*/
- virtual void
- get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
+ VisitingParameters const& rParameters) const override;
};
/** AnimatedBlinkPrimitive2D class
@@ -117,9 +116,8 @@ public:
const Primitive2DContainer& rChildren);
/// create local decomposition
- virtual void
- get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
+ VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
@@ -145,9 +143,8 @@ public:
const Primitive2DContainer& rChildren);
/// create local decomposition
- virtual void
- get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
+ VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx b/include/drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx
index 191fde1b8487..0c29e1255f60 100644
--- a/include/drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx
@@ -51,9 +51,8 @@ private:
basegfx::B2DRange maLastViewport;
/// create local decomposition
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -67,16 +66,14 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get B2Drange
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
/// Override standard getDecomposition call to be view-dependent here
- virtual void
- get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
+ VisitingParameters const& rParameters) const override;
};
} // end of namespace drawinglayer::primitive2d
diff --git a/include/drawinglayer/primitive2d/baseprimitive2d.hxx b/include/drawinglayer/primitive2d/baseprimitive2d.hxx
index 7531a32cc2db..0337079e7801 100644
--- a/include/drawinglayer/primitive2d/baseprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/baseprimitive2d.hxx
@@ -25,6 +25,7 @@
#include <drawinglayer/primitive2d/Primitive2DVisitor.hxx>
#include <cppuhelper/compbase.hxx>
+#include <drawinglayer/primitive2d/DeviceDependentServices.hxx>
#include <com/sun/star/util/XAccounting.hpp>
#include <cppuhelper/basemutex.hxx>
#include <basegfx/range/b2drange.hxx>
@@ -37,6 +38,19 @@ class ViewInformation2D;
namespace drawinglayer::primitive2d
{
+class DRAWINGLAYERCORE_DLLPUBLIC VisitingParameters
+{
+ const geometry::ViewInformation2D& mrViewInformation;
+
+public:
+ VisitingParameters(const geometry::ViewInformation2D& rViewInformation)
+ : mrViewInformation(rViewInformation)
+ {
+ }
+
+ const geometry::ViewInformation2D& getViewInformation() const { return mrViewInformation; }
+};
+
typedef cppu::WeakComponentImplHelper<css::graphic::XPrimitive2D, css::util::XAccounting>
BasePrimitive2DImplBase;
@@ -133,8 +147,7 @@ public:
bool operator!=(const BasePrimitive2D& rPrimitive) const { return !operator==(rPrimitive); }
/// The default implementation will use getDecomposition results to create the range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const;
/** provide unique ID for fast identifying of known primitive implementations in renderers. These use
the defines from drawinglayer_primitivetypes2d.hxx to define unique IDs.
@@ -143,7 +156,7 @@ public:
/// The default implementation will return an empty sequence
virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const;
+ VisitingParameters const& rParameters) const;
// Methods from XPrimitive2D
diff --git a/include/drawinglayer/primitive2d/bitmapprimitive2d.hxx b/include/drawinglayer/primitive2d/bitmapprimitive2d.hxx
index 8cddbac31668..4760c8465802 100644
--- a/include/drawinglayer/primitive2d/bitmapprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/bitmapprimitive2d.hxx
@@ -64,8 +64,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
// XAccounting
virtual sal_Int64 SAL_CALL estimateUsage() override;
diff --git a/include/drawinglayer/primitive2d/borderlineprimitive2d.hxx b/include/drawinglayer/primitive2d/borderlineprimitive2d.hxx
index 1dc857ec357e..25331300627d 100644
--- a/include/drawinglayer/primitive2d/borderlineprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/borderlineprimitive2d.hxx
@@ -103,9 +103,8 @@ private:
const drawinglayer::attribute::StrokeAttribute maStrokeAttribute;
/// create local decomposition
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
/// helper to get the full width from maBorderLines
double getFullWidth() const;
diff --git a/include/drawinglayer/primitive2d/controlprimitive2d.hxx b/include/drawinglayer/primitive2d/controlprimitive2d.hxx
index 015151cf8dfc..5097f03bc0e5 100644
--- a/include/drawinglayer/primitive2d/controlprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/controlprimitive2d.hxx
@@ -61,14 +61,12 @@ private:
void createXControl();
/// single local decompositions, used from create2DDecomposition()
- Primitive2DReference
- createBitmapDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
+ Primitive2DReference createBitmapDecomposition(VisitingParameters const& rParameters) const;
Primitive2DReference createPlaceholderDecomposition() const;
/// local decomposition
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -100,16 +98,14 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
/// Override standard getDecomposition to be view-dependent here
- virtual void
- get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
+ VisitingParameters const& rParameters) const override;
};
} // end of namespace drawinglayer::primitive2d
diff --git a/include/drawinglayer/primitive2d/discretebitmapprimitive2d.hxx b/include/drawinglayer/primitive2d/discretebitmapprimitive2d.hxx
index cbdb21ad9d3d..a455564889ea 100644
--- a/include/drawinglayer/primitive2d/discretebitmapprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/discretebitmapprimitive2d.hxx
@@ -46,7 +46,7 @@ namespace drawinglayer::primitive2d
basegfx::B2DPoint maTopLeft;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
diff --git a/include/drawinglayer/primitive2d/discreteshadowprimitive2d.hxx b/include/drawinglayer/primitive2d/discreteshadowprimitive2d.hxx
index 435ab98253bd..489cc2d6c413 100644
--- a/include/drawinglayer/primitive2d/discreteshadowprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/discreteshadowprimitive2d.hxx
@@ -86,7 +86,7 @@ namespace drawinglayer::primitive2d
DiscreteShadow maDiscreteShadow;
/// create local decomposition
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -102,7 +102,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/embedded3dprimitive2d.hxx b/include/drawinglayer/primitive2d/embedded3dprimitive2d.hxx
index 959b38592682..7c1cfde5ad68 100644
--- a/include/drawinglayer/primitive2d/embedded3dprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/embedded3dprimitive2d.hxx
@@ -78,7 +78,7 @@ namespace drawinglayer::primitive2d
bool impGetShadow3D() const;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -102,7 +102,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/epsprimitive2d.hxx b/include/drawinglayer/primitive2d/epsprimitive2d.hxx
index 7aa72b6cef34..8cfd8930cf8f 100644
--- a/include/drawinglayer/primitive2d/epsprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/epsprimitive2d.hxx
@@ -40,7 +40,7 @@ namespace drawinglayer::primitive2d
GDIMetaFile maMetaFile;
/// create local decomposition
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -58,7 +58,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get B2Drange
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/fillgradientprimitive2d.hxx b/include/drawinglayer/primitive2d/fillgradientprimitive2d.hxx
index 9fe2fbcbc4ec..706a8b9b779a 100644
--- a/include/drawinglayer/primitive2d/fillgradientprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/fillgradientprimitive2d.hxx
@@ -82,7 +82,7 @@ namespace drawinglayer::primitive2d
void createFill(Primitive2DContainer& rContainer, bool bOverlapping) const;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructors. The one without definition range will use output range as definition range
@@ -103,7 +103,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/fillgraphicprimitive2d.hxx b/include/drawinglayer/primitive2d/fillgraphicprimitive2d.hxx
index 51d49df30d5e..a96631e67f9d 100644
--- a/include/drawinglayer/primitive2d/fillgraphicprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/fillgraphicprimitive2d.hxx
@@ -53,7 +53,7 @@ namespace drawinglayer::primitive2d
attribute::FillGraphicAttribute maFillGraphic;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -69,7 +69,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==( const BasePrimitive2D& rPrimitive ) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/fillhatchprimitive2d.hxx b/include/drawinglayer/primitive2d/fillhatchprimitive2d.hxx
index 07399ce0e759..49dc4399a224 100644
--- a/include/drawinglayer/primitive2d/fillhatchprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/fillhatchprimitive2d.hxx
@@ -57,7 +57,7 @@ namespace drawinglayer::primitive2d
basegfx::BColor maBColor;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructors. The one without definition range will use output range as definition range
@@ -81,10 +81,10 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// Override standard getDecomposition to be view-dependent here
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/glowprimitive2d.hxx b/include/drawinglayer/primitive2d/glowprimitive2d.hxx
index b91d40a21419..9b44c5d1ad92 100644
--- a/include/drawinglayer/primitive2d/glowprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/glowprimitive2d.hxx
@@ -47,8 +47,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/graphicprimitive2d.hxx b/include/drawinglayer/primitive2d/graphicprimitive2d.hxx
index 9bce4b8c051c..ca7238b1997e 100644
--- a/include/drawinglayer/primitive2d/graphicprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/graphicprimitive2d.hxx
@@ -55,9 +55,8 @@ private:
GraphicAttr maGraphicAttr;
/// local decomposition
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor(s)
@@ -75,8 +74,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/gridprimitive2d.hxx b/include/drawinglayer/primitive2d/gridprimitive2d.hxx
index 3c2bf595add4..bc032230b3c8 100644
--- a/include/drawinglayer/primitive2d/gridprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/gridprimitive2d.hxx
@@ -67,7 +67,7 @@ namespace drawinglayer::primitive2d
basegfx::B2DRange maLastViewport;
/// create local decomposition
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -97,13 +97,13 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get 2d range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
/// Override standard getDecomposition to be view-dependent here
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
};
} // end of namespace drawinglayer::primitive2d
diff --git a/include/drawinglayer/primitive2d/groupprimitive2d.hxx b/include/drawinglayer/primitive2d/groupprimitive2d.hxx
index 06719311505f..c4a7fe403f56 100644
--- a/include/drawinglayer/primitive2d/groupprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/groupprimitive2d.hxx
@@ -79,7 +79,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==( const BasePrimitive2D& rPrimitive ) const override;
/// local decomposition. Implementation will just return children
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/helplineprimitive2d.hxx b/include/drawinglayer/primitive2d/helplineprimitive2d.hxx
index 075715b9b622..080ed2e40a8e 100644
--- a/include/drawinglayer/primitive2d/helplineprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/helplineprimitive2d.hxx
@@ -71,7 +71,7 @@ namespace drawinglayer::primitive2d
basegfx::B2DRange maLastViewport;
/// create local decomposition
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -98,7 +98,7 @@ namespace drawinglayer::primitive2d
virtual sal_uInt32 getPrimitive2DID() const override;
/// Override standard getDecomposition to be view-dependent here
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
};
} // end of namespace drawinglayer::primitive2d
diff --git a/include/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx b/include/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx
index afcb127f0e81..ef4bc0e3db82 100644
--- a/include/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx
@@ -42,10 +42,10 @@ namespace drawinglayer::primitive2d
// despite returning an empty decomposition since it's no visualisation data,
// range calculation is intended to use hidden geometry, so
// the local implementation will return the children's range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// local decomposition. Implementation will return empty Primitive2DSequence
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/markerarrayprimitive2d.hxx b/include/drawinglayer/primitive2d/markerarrayprimitive2d.hxx
index 1e09278fe62d..376a14c3eff9 100644
--- a/include/drawinglayer/primitive2d/markerarrayprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/markerarrayprimitive2d.hxx
@@ -52,7 +52,7 @@ namespace drawinglayer::primitive2d
BitmapEx maMarker;
/// create local decomposition
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -68,7 +68,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/maskprimitive2d.hxx b/include/drawinglayer/primitive2d/maskprimitive2d.hxx
index b2be9ae89cd5..5b950882c8fb 100644
--- a/include/drawinglayer/primitive2d/maskprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/maskprimitive2d.hxx
@@ -60,7 +60,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/mediaprimitive2d.hxx b/include/drawinglayer/primitive2d/mediaprimitive2d.hxx
index 084b6728a183..0c4791c76138 100644
--- a/include/drawinglayer/primitive2d/mediaprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/mediaprimitive2d.hxx
@@ -56,7 +56,7 @@ namespace drawinglayer::primitive2d
const Graphic maSnapshot;
/// local decomposition
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParametersv) const override;
public:
/// constructor
@@ -76,7 +76,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/metafileprimitive2d.hxx b/include/drawinglayer/primitive2d/metafileprimitive2d.hxx
index c6caded90347..46f71c779b78 100644
--- a/include/drawinglayer/primitive2d/metafileprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/metafileprimitive2d.hxx
@@ -61,7 +61,7 @@ namespace drawinglayer::primitive2d
GDIMetaFile maMetaFile;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
MetafilePrimitive2D(
@@ -76,7 +76,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// from MetafileAccessor
virtual void accessMetafile(GDIMetaFile& rTargetMetafile) const override;
diff --git a/include/drawinglayer/primitive2d/pagepreviewprimitive2d.hxx b/include/drawinglayer/primitive2d/pagepreviewprimitive2d.hxx
index e54c883b0945..1094b38c9111 100644
--- a/include/drawinglayer/primitive2d/pagepreviewprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/pagepreviewprimitive2d.hxx
@@ -57,7 +57,7 @@ namespace drawinglayer::primitive2d
double mfContentHeight;
/// local decomposition. Implementation will just return children
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -79,7 +79,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// own getB2DRange
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/patternfillprimitive2d.hxx b/include/drawinglayer/primitive2d/patternfillprimitive2d.hxx
index 9220209306b0..1b01c0e10cb3 100644
--- a/include/drawinglayer/primitive2d/patternfillprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/patternfillprimitive2d.hxx
@@ -54,10 +54,10 @@ namespace drawinglayer::primitive2d
/// helper which creates the content - checks if clipping is needed and eventually
/// creates buffered content to speed up rendering
- Primitive2DContainer createContent(const geometry::ViewInformation2D& rViewInformation) const;
+ Primitive2DContainer createContent(VisitingParameters const & rParameters) const;
/// create local decomposition
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -75,10 +75,10 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// overload to react on evtl. buffered content
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/pointarrayprimitive2d.hxx b/include/drawinglayer/primitive2d/pointarrayprimitive2d.hxx
index ba4be8c5dcc4..56984c6aa7be 100644
--- a/include/drawinglayer/primitive2d/pointarrayprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/pointarrayprimitive2d.hxx
@@ -63,7 +63,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/polygonprimitive2d.hxx b/include/drawinglayer/primitive2d/polygonprimitive2d.hxx
index d67932485eb8..0bbfdf74fbbe 100644
--- a/include/drawinglayer/primitive2d/polygonprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/polygonprimitive2d.hxx
@@ -60,8 +60,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
@@ -94,9 +93,8 @@ private:
basegfx::B2DHomMatrix maLastInverseObjectToViewTransformation;
/// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -113,13 +111,11 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// Override standard getDecomposition to be view-dependent here
- virtual void
- get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
+ VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
@@ -145,9 +141,8 @@ private:
protected:
/// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -168,8 +163,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
@@ -188,9 +182,8 @@ private:
double mfWaveHeight;
/// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -212,8 +205,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
@@ -234,9 +226,8 @@ private:
attribute::LineStartEndAttribute maEnd;
/// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -260,8 +251,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/primitivetools2d.hxx b/include/drawinglayer/primitive2d/primitivetools2d.hxx
index ec578679adce..17caa1775142 100644
--- a/include/drawinglayer/primitive2d/primitivetools2d.hxx
+++ b/include/drawinglayer/primitive2d/primitivetools2d.hxx
@@ -55,7 +55,7 @@ namespace drawinglayer::primitive2d
double getDiscreteUnit() const { return mfDiscreteUnit; }
/// Override standard getDecomposition to be view-dependent here
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
};
/** ViewportDependentPrimitive2D class
@@ -86,7 +86,7 @@ namespace drawinglayer::primitive2d
const basegfx::B2DRange& getViewport() const { return maViewport; }
/// Override standard getDecomposition to be view-dependent here
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
};
/** ViewTransformationDependentPrimitive2D class
@@ -117,7 +117,7 @@ namespace drawinglayer::primitive2d
const basegfx::B2DHomMatrix& getViewTransformation() const { return maViewTransformation; }
/// Override standard getDecomposition to be view-dependent here
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
};
/** ObjectAndViewTransformationDependentPrimitive2D class
@@ -152,7 +152,7 @@ namespace drawinglayer::primitive2d
const basegfx::B2DHomMatrix& getObjectTransformation() const { return maObjectTransformation; }
/// Override standard getDecomposition to be view-dependent here
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
};
} // end of namespace drawinglayer::primitive2d
diff --git a/include/drawinglayer/primitive2d/sceneprimitive2d.hxx b/include/drawinglayer/primitive2d/sceneprimitive2d.hxx
index 3fc027fcbaed..b52fd7ed396a 100644
--- a/include/drawinglayer/primitive2d/sceneprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/sceneprimitive2d.hxx
@@ -92,7 +92,7 @@ namespace drawinglayer::primitive2d
basegfx::B2DRange& rUnitVisibleRange) const;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// public helpers
@@ -133,13 +133,13 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
/// get local decomposition. Override since this decomposition is view-dependent
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
};
} // end of namespace drawinglayer::primitive2d
diff --git a/include/drawinglayer/primitive2d/shadowprimitive2d.hxx b/include/drawinglayer/primitive2d/shadowprimitive2d.hxx
index 37258d8f34ed..64e423c90656 100644
--- a/include/drawinglayer/primitive2d/shadowprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/shadowprimitive2d.hxx
@@ -71,10 +71,10 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// create decomposition
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/softedgeprimitive2d.hxx b/include/drawinglayer/primitive2d/softedgeprimitive2d.hxx
index f16e50287b0e..7ce0b26a2077 100644
--- a/include/drawinglayer/primitive2d/softedgeprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/softedgeprimitive2d.hxx
@@ -40,9 +40,8 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
- virtual void
- get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
+ VisitingParameters const& rParameters) const override;
virtual sal_uInt32 getPrimitive2DID() const override;
};
diff --git a/include/drawinglayer/primitive2d/svggradientprimitive2d.hxx b/include/drawinglayer/primitive2d/svggradientprimitive2d.hxx
index f6ed8e8b1508..57f0841e6dbf 100644
--- a/include/drawinglayer/primitive2d/svggradientprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/svggradientprimitive2d.hxx
@@ -185,7 +185,7 @@ namespace drawinglayer::primitive2d
virtual void checkPreconditions() override;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -206,7 +206,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
@@ -237,7 +237,7 @@ namespace drawinglayer::primitive2d
virtual void checkPreconditions() override;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -261,7 +261,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
@@ -283,7 +283,7 @@ namespace drawinglayer::primitive2d
double mfOffsetB;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -336,7 +336,7 @@ namespace drawinglayer::primitive2d
std::unique_ptr<VectorPair> mpTranslate;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
diff --git a/include/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx b/include/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx
index 8c852b72246a..9fdffee63130 100644
--- a/include/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/textdecoratedprimitive2d.hxx
@@ -66,7 +66,7 @@ namespace drawinglayer::primitive2d
const attribute::FontAttribute& rFontAttribute) const;
/// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
@@ -114,7 +114,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==( const BasePrimitive2D& rPrimitive ) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/textprimitive2d.hxx b/include/drawinglayer/primitive2d/textprimitive2d.hxx
index 22b64928acd4..fba7a067b823 100644
--- a/include/drawinglayer/primitive2d/textprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/textprimitive2d.hxx
@@ -130,9 +130,8 @@ private:
protected:
/// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer,
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -168,8 +167,7 @@ public:
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/transformprimitive2d.hxx b/include/drawinglayer/primitive2d/transformprimitive2d.hxx
index 25549e633ad9..32e0db56b9a7 100644
--- a/include/drawinglayer/primitive2d/transformprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/transformprimitive2d.hxx
@@ -65,7 +65,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx b/include/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx
index caeac986cde6..3bdd5384453d 100644
--- a/include/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx
@@ -54,10 +54,10 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// own getB2DRange implementation to include transparent geometries to BoundRect calculations
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
/// create decomposition
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/include/drawinglayer/primitive2d/wrongspellprimitive2d.hxx b/include/drawinglayer/primitive2d/wrongspellprimitive2d.hxx
index 559e9e191a60..7a4015f6bbc7 100644
--- a/include/drawinglayer/primitive2d/wrongspellprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/wrongspellprimitive2d.hxx
@@ -56,7 +56,7 @@ namespace drawinglayer::primitive2d
basegfx::BColor maColor;
/// create local decomposition
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
/// constructor
diff --git a/include/svx/sdr/contact/viewcontact.hxx b/include/svx/sdr/contact/viewcontact.hxx
index c7119fcd93e2..75c3b8f7065a 100644
--- a/include/svx/sdr/contact/viewcontact.hxx
+++ b/include/svx/sdr/contact/viewcontact.hxx
@@ -23,6 +23,7 @@
#include <sal/types.h>
#include <svx/svxdllapi.h>
#include <drawinglayer/primitive2d/Primitive2DContainer.hxx>
+#include <drawinglayer/geometry/viewinformation2d.hxx>
class SdrLayerIDSet;
class SdrPage;
diff --git a/include/svx/sdr/primitive2d/sdrframeborderprimitive2d.hxx b/include/svx/sdr/primitive2d/sdrframeborderprimitive2d.hxx
index 40638aa9d05b..a32788520c94 100644
--- a/include/svx/sdr/primitive2d/sdrframeborderprimitive2d.hxx
+++ b/include/svx/sdr/primitive2d/sdrframeborderprimitive2d.hxx
@@ -98,7 +98,7 @@ namespace drawinglayer::primitive2d
// local decomposition.
virtual void create2DDecomposition(
Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& aViewInformation) const override;
+ VisitingParameters const & rParameters) const override;
public:
SdrFrameBorderPrimitive2D(
@@ -111,7 +111,7 @@ namespace drawinglayer::primitive2d
// override to get view-dependent
virtual void get2DDecomposition(
Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ VisitingParameters const & rParameters) const override;
// data access
const std::shared_ptr<SdrFrameBorderDataVector>& getFrameBorders() const { return maFrameBorders; }
diff --git a/sd/source/core/CustomAnimationEffect.cxx b/sd/source/core/CustomAnimationEffect.cxx
index ed61bed5cb72..1b3e38412a76 100644
--- a/sd/source/core/CustomAnimationEffect.cxx
+++ b/sd/source/core/CustomAnimationEffect.cxx
@@ -69,6 +69,7 @@
#include <cppuhelper/implbase.hxx>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
#include <drawinglayer/geometry/viewinformation2d.hxx>
#include <o3tl/safeint.hxx>
#include <svx/sdr/contact/viewcontact.hxx>
@@ -1601,7 +1602,8 @@ void CustomAnimationEffect::updatePathFromSdrPathObj( const SdrPathObj& rPathObj
const drawinglayer::primitive2d::Primitive2DContainer& xPrimitives(pObj->GetViewContact().getViewIndependentPrimitive2DContainer());
const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
- const basegfx::B2DRange aRange(xPrimitives.getB2DRange(aViewInformation2D));
+ const drawinglayer::primitive2d::VisitingParameters aParameters(aViewInformation2D);
+ const basegfx::B2DRange aRange(xPrimitives.getB2DRange(aParameters));
if(!aRange.isEmpty())
{
diff --git a/svx/inc/sdr/overlay/overlaytools.hxx b/svx/inc/sdr/overlay/overlaytools.hxx
index c058116f4455..ac4dff0786e7 100644
--- a/svx/inc/sdr/overlay/overlaytools.hxx
+++ b/svx/inc/sdr/overlay/overlaytools.hxx
@@ -40,7 +40,7 @@ private:
// the rotation of the primitive itself
double mfRotation;
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
OverlayStaticRectanglePrimitive(
@@ -83,7 +83,7 @@ namespace drawinglayer::primitive2d
double mfShearX;
double mfRotation;
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
OverlayBitmapExPrimitive(
@@ -124,7 +124,7 @@ namespace drawinglayer::primitive2d
basegfx::BColor maRGBColorB;
double mfDiscreteDashLength;
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
OverlayCrosshairPrimitive(
@@ -168,7 +168,7 @@ namespace drawinglayer::primitive2d
// the rotation of the primitive itself
double mfRotation;
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
OverlayRectanglePrimitive(
@@ -220,7 +220,7 @@ namespace drawinglayer::primitive2d
basegfx::BColor maRGBColorB;
double mfDiscreteDashLength;
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
OverlayHelplineStripedPrimitive(
@@ -261,7 +261,7 @@ namespace drawinglayer::primitive2d
basegfx::BColor maRGBColorB;
double mfDiscreteDashLength;
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
OverlayRollingRectanglePrimitive(
diff --git a/svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx
index 1051fbb7e585..782c98b4120a 100644
--- a/svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrcaptionprimitive2d.hxx
@@ -41,7 +41,7 @@ namespace drawinglayer::primitive2d
double mfCornerRadiusY; // [0.0..1.0] relative to 1/2 height
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrCaptionPrimitive2D(
diff --git a/svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.hxx
index d105a5c87460..d2ca8c6aeeaa 100644
--- a/svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrconnectorprimitive2d.hxx
@@ -37,7 +37,7 @@ namespace drawinglayer::primitive2d
::basegfx::B2DPolygon maUnitPolygon;
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrConnectorPrimitive2D(
diff --git a/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
index e84ef0a4d3e8..c6d949b9a2a5 100644
--- a/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
@@ -48,7 +48,7 @@ namespace drawinglayer::primitive2d
basegfx::B2DHomMatrix maTransform;
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrCustomShapePrimitive2D(
diff --git a/svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx
index 9b4bf4ebeb90..fcb6a62ae1a8 100644
--- a/svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrellipseprimitive2d.hxx
@@ -37,7 +37,7 @@ namespace drawinglayer::primitive2d
attribute::SdrLineFillEffectsTextAttribute maSdrLFSTAttribute;
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrEllipsePrimitive2D(
@@ -69,7 +69,7 @@ namespace drawinglayer::primitive2d
bool mbCloseUsingCenter : 1;
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrEllipseSegmentPrimitive2D(
diff --git a/svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx
index 5e349de4c64d..c74ca2fd9aa1 100644
--- a/svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrgrafprimitive2d.hxx
@@ -37,7 +37,7 @@ private:
// local decomposition.
virtual void
create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& aViewInformation) const override;
+ VisitingParameters const & rParameters) const override;
public:
SdrGrafPrimitive2D(const ::basegfx::B2DHomMatrix& rTransform,
diff --git a/svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx
index 4bc8de10b589..7c83bc5e8e19 100644
--- a/svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrmeasureprimitive2d.hxx
@@ -71,7 +71,7 @@ namespace drawinglayer::primitive2d
bool bRightActive) const;
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrMeasurePrimitive2D(
diff --git a/svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx b/svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx
index 2618f75b03b2..b8802f741acf 100644
--- a/svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrole2primitive2d.hxx
@@ -52,7 +52,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
// local decomposition.
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
diff --git a/svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx
index c734780422d8..ca81257c8273 100644
--- a/svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrolecontentprimitive2d.hxx
@@ -44,7 +44,7 @@ namespace drawinglayer::primitive2d
sal_uInt32 mnGraphicVersion;
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrOleContentPrimitive2D(
@@ -57,7 +57,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
// The default implementation will use getDecomposition results to create the range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const & rParameters) const override;
// data access
const basegfx::B2DHomMatrix& getObjectTransform() const { return maObjectTransform; }
diff --git a/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx
index 6e4819a898a6..9dafacfced6a 100644
--- a/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx
@@ -50,7 +50,7 @@ namespace drawinglayer::primitive2d
basegfx::B2DPolyPolygon maUnitDefinitionPolyPolygon;
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
// OperationSmiley: Extended to UnitDefinitionPolyPolygon, but when needed
diff --git a/svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx
index 6480f03c657b..39645fbfb9f2 100644
--- a/svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrrectangleprimitive2d.hxx
@@ -42,7 +42,7 @@ namespace drawinglayer::primitive2d
bool mbForceFillForHitTest : 1;
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrRectanglePrimitive2D(
diff --git a/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx b/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx
index 96402f54b6df..4dc4dfdbfd9f 100644
--- a/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrtextprimitive2d.hxx
@@ -91,7 +91,7 @@ namespace drawinglayer::primitive2d
// own get2DDecomposition to take aspect of decomposition with or without spell checker
// into account
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const override;
// transformed clone operator
virtual rtl::Reference<SdrTextPrimitive2D> createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const = 0;
@@ -111,7 +111,7 @@ namespace drawinglayer::primitive2d
basegfx::B2DHomMatrix maObjectTransform;
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrContourTextPrimitive2D(
@@ -148,7 +148,7 @@ namespace drawinglayer::primitive2d
attribute::SdrFormTextAttribute maSdrFormTextAttribute;
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrPathTextPrimitive2D(
@@ -191,7 +191,7 @@ namespace drawinglayer::primitive2d
bool mbWordWrap : 1; // for CustomShapes text layout
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrBlockTextPrimitive2D(
@@ -237,7 +237,7 @@ namespace drawinglayer::primitive2d
bool mbFixedCellHeight : 1;
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrStretchTextPrimitive2D(
@@ -272,7 +272,7 @@ namespace drawinglayer::primitive2d
bool mbWordWrap : 1; // for CustomShapes text layout
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrAutoFitTextPrimitive2D(
@@ -306,7 +306,7 @@ namespace drawinglayer::primitive2d
::basegfx::B2DHomMatrix maTextRangeTransform; // text range transformation from unit range ([0.0 .. 1.0]) to text range
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const override;
public:
SdrChainedTextPrimitive2D(
diff --git a/svx/qa/unit/svdraw.cxx2 b/svx/qa/unit/svdraw.cxx2
new file mode 100644
index 000000000000..bb087b057894
--- /dev/null
+++ b/svx/qa/unit/svdraw.cxx2
@@ -0,0 +1,160 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <test/bootstrapfixture.hxx>
+#include <unotest/macros_test.hxx>
+#include <test/xmltesttools.hxx>
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <com/sun/star/frame/Desktop.hpp>
+#include <com/sun/star/text/XTextRange.hpp>
+
+#include <drawinglayer/tools/primitive2dxmldump.hxx>
+#include <rtl/ustring.hxx>
+#include <svx/sdr/contact/displayinfo.hxx>
+#include <svx/sdr/contact/viewcontact.hxx>
+#include <svx/sdr/contact/viewobjectcontact.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/unopage.hxx>
+#include <vcl/virdev.hxx>
+#include <sdr/contact/objectcontactofobjlistpainter.hxx>
+
+#include <svx/svdmodel.hxx>
+#include <svx/svdorect.hxx>
+#include <svx/svdview.hxx>
+#include <tools/gen.hxx>
+
+#include <svx/xlnstwit.hxx>
+#include <svx/xlineit0.hxx>
+#include <svl/itempool.hxx>
+
+
+using namespace ::com::sun::star;
+
+namespace
+{
+/// Tests for svx/source/svdraw/ code.
+class SvdrawTest : public test::BootstrapFixture, public unotest::MacrosTest, public XmlTestTools
+{
+protected:
+ uno::Reference<lang::XComponent> mxComponent;
+
+public:
+ virtual void setUp() override
+ {
+ test::BootstrapFixture::setUp();
+ mxDesktop.set(frame::Desktop::create(m_xContext));
+ }
+
+ virtual void tearDown() override
+ {
+ if (mxComponent.is())
+ {
+ mxComponent->dispose();
+ }
+ test::BootstrapFixture::tearDown();
+ }
+ uno::Reference<lang::XComponent>& getComponent() { return mxComponent; }
+};
+
+CPPUNIT_TEST_FIXTURE(SvdrawTest, testSemiTransparentText)
+{
+ // Create a new Draw document with a rectangle.
+ getComponent() = loadFromDesktop("private:factory/sdraw");
+ uno::Reference<lang::XMultiServiceFactory> xFactory(getComponent(), uno::UNO_QUERY);
+ uno::Reference<drawing::XShape> xShape(
+ xFactory->createInstance("com.sun.star.drawing.RectangleShape"), uno::UNO_QUERY);
+ xShape->setSize(awt::Size(10000, 10000));
+ xShape->setPosition(awt::Point(1000, 1000));
+
+ uno::Reference<drawing::XDrawPagesSupplier> xDrawPagesSupplier(getComponent(), uno::UNO_QUERY);
+ uno::Reference<drawing::XDrawPage> xDrawPage(xDrawPagesSupplier->getDrawPages()->getByIndex(0),
+ uno::UNO_QUERY);
+ xDrawPage->add(xShape);
+
+ // Add semi-transparent text on the rectangle.
+ uno::Reference<text::XTextRange> xShapeText(xShape, uno::UNO_QUERY);
+ xShapeText->getText()->setString("hello");
+
+ uno::Reference<beans::XPropertySet> xShapeProperties(xShape, uno::UNO_QUERY);
+ xShapeProperties->setPropertyValue("CharColor", uno::makeAny(COL_RED));
+ sal_Int16 nTransparence = 75;
+ xShapeProperties->setPropertyValue("CharTransparence", uno::makeAny(nTransparence));
+
+ // Generates drawinglayer primitives for the page.
+ auto pDrawPage = dynamic_cast<SvxDrawPage*>(xDrawPage.get());
+ CPPUNIT_ASSERT(pDrawPage);
+ SdrPage* pSdrPage = pDrawPage->GetSdrPage();
+ ScopedVclPtrInstance<VirtualDevice> aVirtualDevice;
+ sdr::contact::ObjectContactOfObjListPainter aObjectContact(*aVirtualDevice,
+ { pSdrPage->GetObj(0) }, nullptr);
+ const sdr::contact::ViewObjectContact& rDrawPageVOContact
+ = pSdrPage->GetViewContact().GetViewObjectContact(aObjectContact);
+ sdr::contact::DisplayInfo aDisplayInfo;
+ drawinglayer::primitive2d::Primitive2DContainer xPrimitiveSequence
+ = rDrawPageVOContact.getPrimitive2DSequenceHierarchy(aDisplayInfo);
+
+ // Make sure the text is semi-transparent.
+ drawinglayer::Primitive2dXmlDump aDumper;
+ xmlDocUniquePtr pDocument = aDumper.dumpAndParse(xPrimitiveSequence);
+
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 1
+ // - Actual : 0
+ // - XPath '//unifiedtransparence' number of nodes is incorrect
+ // i.e. the text was just plain red, not semi-transparent.
+ double fTransparence = getXPath(pDocument, "//unifiedtransparence", "transparence").toDouble();
+ CPPUNIT_ASSERT_EQUAL(nTransparence,
+ static_cast<sal_Int16>(basegfx::fround(fTransparence * 100)));
+}
+
+CPPUNIT_TEST_FIXTURE(SvdrawTest, testNew)
+{
+ std::unique_ptr<SdrModel> pModel(new SdrModel(nullptr, nullptr, true));
+ pModel->GetItemPool().FreezeIdRanges();
+
+ SdrPage* pPage = new SdrPage(*pModel, false);
+ pPage->SetSize(Size(1000,1000));
+ pModel->InsertPage(pPage, 0);
+
+ tools::Rectangle aSize(Point(), Size(100, 100));
+ auto* pRectangle = new SdrRectObj(*pModel, aSize);
+ pPage->NbcInsertObject(pRectangle);
+ pRectangle->SetMergedItem(XLineStyleItem(drawing::LineStyle_SOLID));
+ pRectangle->SetMergedItem(XLineStartWidthItem(200));
+
+ ScopedVclPtrInstance<VirtualDevice> aVirtualDevice;
+ aVirtualDevice->SetOutputSize(Size(2000,2000));
+
+ std::unique_ptr<SdrView> pView(new SdrView(*pModel, aVirtualDevice));
+ pView->hideMarkHandles();
+ pView->ShowSdrPage(pPage);
+
+ sdr::contact::ObjectContactOfObjListPainter aObjectContact(*aVirtualDevice, { pPage->GetObj(0) }, nullptr);
+ const sdr::contact::ViewObjectContact& rDrawPageVOContact = pPage->GetViewContact().GetViewObjectContact(aObjectContact);
+
+ sdr::contact::DisplayInfo aDisplayInfo;
+ drawinglayer::primitive2d::Primitive2DContainer xPrimitiveSequence = rDrawPageVOContact.getPrimitive2DSequenceHierarchy(aDisplayInfo);
+ drawinglayer::Primitive2dXmlDump aDumper;
+
+ aDumper.dump(xPrimitiveSequence, "/home/quikee/Temp/primitives.xml");
+
+ pPage->RemoveObject(0);
+
+ SdrObject* pObject(pRectangle);
+ SdrObject::Free(pObject);
+
+ CPPUNIT_ASSERT(false);
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/sdr/contact/viewobjectcontactofgroup.cxx b/svx/source/sdr/contact/viewobjectcontactofgroup.cxx
index a6198992a544..f41179e43f13 100644
--- a/svx/source/sdr/contact/viewobjectcontactofgroup.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofgroup.cxx
@@ -23,7 +23,8 @@
#include <svx/sdr/contact/objectcontact.hxx>
#include <svx/sdr/contact/viewcontact.hxx>
#include <svx/svdobj.hxx>
-
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <drawinglayer/geometry/viewinformation2d.hxx>
using namespace com::sun::star;
@@ -67,7 +68,8 @@ namespace sdr::contact
{
// get ranges
const drawinglayer::geometry::ViewInformation2D& rViewInformation2D(GetObjectContact().getViewInformation2D());
- const ::basegfx::B2DRange aObjectRange(xRetval.getB2DRange(rViewInformation2D));
+ 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/viewobjectcontactofunocontrol.cxx b/svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx
index 4d14e9359864..e1bf2ee3276f 100644
--- a/svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx
@@ -56,6 +56,7 @@
#include <basegfx/matrix/b2dhommatrixtools.hxx>
#include <drawinglayer/primitive2d/controlprimitive2d.hxx>
+
/*
Form controls (more precise: UNO Controls) in the drawing layer are ... prone to breakage, since they have some
@@ -790,19 +791,15 @@ namespace sdr::contact {
protected:
virtual void
get2DDecomposition(
- ::drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor,
- const ::drawinglayer::geometry::ViewInformation2D& rViewInformation
- ) const override;
+ drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor,
+ drawinglayer::primitive2d::VisitingParameters const & rParameters) const override;
virtual void create2DDecomposition(
- ::drawinglayer::primitive2d::Primitive2DContainer& rContainer,
- const ::drawinglayer::geometry::ViewInformation2D& rViewInformation
- ) const override;
+ drawinglayer::primitive2d::Primitive2DContainer& rContainer,
+ drawinglayer::primitive2d::VisitingParameters const & rParameters) const override;
virtual ::basegfx::B2DRange
- getB2DRange(
- const ::drawinglayer::geometry::ViewInformation2D& rViewInformation
- ) const override;
+ getB2DRange(drawinglayer::primitive2d::VisitingParameters const & rParameters) const override;
public:
explicit LazyControlCreationPrimitive2D( const ::rtl::Reference< ViewObjectContactOfUnoControl_Impl >& _pVOCImpl )
@@ -1508,7 +1505,7 @@ namespace sdr::contact {
}
- ::basegfx::B2DRange LazyControlCreationPrimitive2D::getB2DRange( const ::drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/ ) const
+ ::basegfx::B2DRange LazyControlCreationPrimitive2D::getB2DRange(drawinglayer::primitive2d::VisitingParameters const& /*rParameters*/) const
{
::basegfx::B2DRange aRange( 0.0, 0.0, 1.0, 1.0 );
aRange.transform( m_aTransformation );
@@ -1516,21 +1513,25 @@ namespace sdr::contact {
}
- void LazyControlCreationPrimitive2D::get2DDecomposition( ::drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor, const ::drawinglayer::geometry::ViewInformation2D& _rViewInformation ) const
+ void LazyControlCreationPrimitive2D::get2DDecomposition(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor,
+ drawinglayer::primitive2d::VisitingParameters const& rParameters) const
{
#if OSL_DEBUG_LEVEL > 0
::basegfx::B2DVector aScale, aTranslate;
double fRotate, fShearX;
- _rViewInformation.getObjectToViewTransformation().decompose( aScale, aTranslate, fRotate, fShearX );
+ rParameters.getViewInformation().getObjectToViewTransformation().decompose( aScale, aTranslate, fRotate, fShearX );
#endif
if ( m_pVOCImpl->hasControl() )
- impl_positionAndZoomControl( _rViewInformation );
- BufferedDecompositionPrimitive2D::get2DDecomposition( rVisitor, _rViewInformation );
+ impl_positionAndZoomControl(rParameters.getViewInformation());
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
- void LazyControlCreationPrimitive2D::create2DDecomposition( ::drawinglayer::primitive2d::Primitive2DContainer& rContainer, const ::drawinglayer::geometry::ViewInformation2D& _rViewInformation ) const
+ void LazyControlCreationPrimitive2D::create2DDecomposition(drawinglayer::primitive2d::Primitive2DContainer& rContainer,
+ drawinglayer::primitive2d::VisitingParameters const& rParameters) const
{
+ auto const & _rViewInformation = rParameters.getViewInformation();
+
#if OSL_DEBUG_LEVEL > 0
::basegfx::B2DVector aScale, aTranslate;
double fRotate, fShearX;
diff --git a/svx/source/sdr/overlay/overlaytools.cxx b/svx/source/sdr/overlay/overlaytools.cxx
index 6d77add6652c..8536201cb553 100644
--- a/svx/source/sdr/overlay/overlaytools.cxx
+++ b/svx/source/sdr/overlay/overlaytools.cxx
@@ -55,7 +55,7 @@ OverlayStaticRectanglePrimitive::OverlayStaticRectanglePrimitive(
, mfRotation(fRotation)
{}
-void OverlayStaticRectanglePrimitive::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+void OverlayStaticRectanglePrimitive::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
Primitive2DContainer aPrimitive2DSequence;
const double fHalfWidth = maSize.getX() * getDiscreteUnit() / 2.0;
@@ -143,7 +143,7 @@ sal_uInt32 OverlayStaticRectanglePrimitive::getPrimitive2DID() const
mfRotation(fRotation)
{}
- void OverlayBitmapExPrimitive::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void OverlayBitmapExPrimitive::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
const Size aBitmapSize(getBitmapEx().GetSizePixel());
@@ -225,7 +225,7 @@ sal_uInt32 OverlayStaticRectanglePrimitive::getPrimitive2DID() const
mfDiscreteDashLength(fDiscreteDashLength)
{}
- void OverlayCrosshairPrimitive::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void OverlayCrosshairPrimitive::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
// use the prepared Viewport information accessible using getViewport()
@@ -294,7 +294,7 @@ sal_uInt32 OverlayStaticRectanglePrimitive::getPrimitive2DID() const
mfRotation(fRotation)
{}
- void OverlayRectanglePrimitive::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void OverlayRectanglePrimitive::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
Primitive2DContainer aRetval;
basegfx::B2DRange aInnerRange(getObjectRange());
@@ -422,7 +422,7 @@ sal_uInt32 OverlayStaticRectanglePrimitive::getPrimitive2DID() const
mfDiscreteDashLength(fDiscreteDashLength)
{}
- void OverlayHelplineStripedPrimitive::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const
+ void OverlayHelplineStripedPrimitive::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
// use the prepared Viewport information accessible using getViewport()
@@ -465,7 +465,7 @@ sal_uInt32 OverlayStaticRectanglePrimitive::getPrimitive2DID() const
default: // case HELPLINESTYLE_POINT :
{
- const double fDiscreteUnit((rViewInformation.getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 0.0)).getLength());
+ const double fDiscreteUnit((rParameters.getViewInformation().getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 0.0)).getLength());
basegfx::B2DPolygon aLineA, aLineB;
aLineA.append(basegfx::B2DPoint(getBasePosition().getX(), getBasePosition().getY() - fDiscreteUnit));
@@ -528,7 +528,7 @@ sal_uInt32 OverlayStaticRectanglePrimitive::getPrimitive2DID() const
mfDiscreteDashLength(fDiscreteDashLength)
{}
- void OverlayRollingRectanglePrimitive::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void OverlayRollingRectanglePrimitive::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
// use the prepared Viewport information accessible using getViewport()
diff --git a/svx/source/sdr/primitive2d/sdrcaptionprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrcaptionprimitive2d.cxx
index 2b5b424b426d..e2a62be8dbf1 100644
--- a/svx/source/sdr/primitive2d/sdrcaptionprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrcaptionprimitive2d.cxx
@@ -30,7 +30,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void SdrCaptionPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*aViewInformation*/) const
+ void SdrCaptionPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
Primitive2DContainer aRetval;
diff --git a/svx/source/sdr/primitive2d/sdrconnectorprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrconnectorprimitive2d.cxx
index 315640e8f2d7..fb36f5b2de58 100644
--- a/svx/source/sdr/primitive2d/sdrconnectorprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrconnectorprimitive2d.cxx
@@ -30,7 +30,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void SdrConnectorPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*aViewInformation*/) const
+ void SdrConnectorPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
Primitive2DContainer aRetval;
diff --git a/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
index 0781f2329d84..590c570078da 100644
--- a/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
@@ -31,7 +31,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void SdrCustomShapePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*aViewInformation*/) const
+ void SdrCustomShapePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
Primitive2DContainer aRetval(getSubPrimitives());
diff --git a/svx/source/sdr/primitive2d/sdrellipseprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrellipseprimitive2d.cxx
index a49f52c73091..196b96c4cdd7 100644
--- a/svx/source/sdr/primitive2d/sdrellipseprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrellipseprimitive2d.cxx
@@ -32,7 +32,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void SdrEllipsePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*aViewInformation*/) const
+ void SdrEllipsePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
Primitive2DContainer aRetval;
@@ -138,7 +138,7 @@ namespace drawinglayer::primitive2d
- void SdrEllipseSegmentPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*aViewInformation*/) const
+ void SdrEllipseSegmentPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
Primitive2DContainer aRetval;
diff --git a/svx/source/sdr/primitive2d/sdrframeborderprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrframeborderprimitive2d.cxx
index cd20f177a9f0..2dbaaca84598 100644
--- a/svx/source/sdr/primitive2d/sdrframeborderprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrframeborderprimitive2d.cxx
@@ -769,7 +769,7 @@ namespace drawinglayer::primitive2d
void SdrFrameBorderPrimitive2D::create2DDecomposition(
Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& /*aViewInformation*/) const
+ VisitingParameters const& /*rParameters*/) const
{
if(!getFrameBorders())
{
@@ -888,12 +888,12 @@ namespace drawinglayer::primitive2d
void SdrFrameBorderPrimitive2D::get2DDecomposition(
Primitive2DDecompositionVisitor& rVisitor,
- const geometry::ViewInformation2D& rViewInformation) const
+ VisitingParameters const& rParameters) const
{
if(doForceToSingleDiscreteUnit())
{
// Get the current DiscreteUnit, look at X and Y and use the maximum
- const basegfx::B2DVector aDiscreteVector(rViewInformation.getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 1.0));
+ const basegfx::B2DVector aDiscreteVector(rParameters.getViewInformation().getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 1.0));
double fDiscreteUnit(std::min(fabs(aDiscreteVector.getX()), fabs(aDiscreteVector.getY())));
if(fDiscreteUnit <= mfMinimalNonZeroBorderWidth)
@@ -919,7 +919,7 @@ namespace drawinglayer::primitive2d
// call parent. This will call back ::create2DDecomposition above
// where mfMinimalNonZeroBorderWidthUsedForDecompose will be used
// when doForceToSingleDiscreteUnit() is true
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
// provide unique ID
diff --git a/svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx
index 564970251bb7..0bd318d60b6c 100644
--- a/svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx
@@ -27,7 +27,7 @@
namespace drawinglayer::primitive2d
{
void SdrGrafPrimitive2D::create2DDecomposition(
- Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*aViewInformation*/) const
+ Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
Primitive2DContainer aRetval;
diff --git a/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx
index 7a5f3f96ad73..9d03c21591c6 100644
--- a/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx
@@ -78,7 +78,7 @@ namespace drawinglayer::primitive2d
aLineStartEnd);
}
- void SdrMeasurePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const
+ void SdrMeasurePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const& rParameters) const
{
Primitive2DContainer aRetval;
rtl::Reference<SdrBlockTextPrimitive2D> xBlockText;
@@ -129,7 +129,7 @@ namespace drawinglayer::primitive2d
false,
false);
- aTextRange = xBlockText->getB2DRange(aViewInformation);
+ aTextRange = xBlockText->getB2DRange(rParameters);
}
// prepare line attribute and result
diff --git a/svx/source/sdr/primitive2d/sdrole2primitive2d.cxx b/svx/source/sdr/primitive2d/sdrole2primitive2d.cxx
index 8cb5d1445273..8c2ac40ccb90 100644
--- a/svx/source/sdr/primitive2d/sdrole2primitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrole2primitive2d.cxx
@@ -65,7 +65,7 @@ namespace drawinglayer::primitive2d
return false;
}
- void SdrOle2Primitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& /*aViewInformation*/) const
+ void SdrOle2Primitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & /*rParameters*/) const
{
// to take care of getSdrLFSTAttribute() later, the same as in SdrGrafPrimitive2D::create2DDecomposition
// should happen. For the moment we only need the OLE itself
diff --git a/svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx
index 528cce8fae59..26f17d0c5138 100644
--- a/svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx
@@ -31,7 +31,7 @@
namespace drawinglayer::primitive2d
{
- void SdrOleContentPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*aViewInformation*/) const
+ void SdrOleContentPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
const SdrOle2Obj* pSource = mpSdrOle2Obj.get();
bool bScaleContent(false);
@@ -161,7 +161,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange SdrOleContentPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange SdrOleContentPrimitive2D::getB2DRange(VisitingParameters const & /*rParameters*/) const
{
basegfx::B2DRange aRange(0.0, 0.0, 1.0, 1.0);
aRange.transform(getObjectTransform());
diff --git a/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx
index cf22caa52020..e8e7eea41b37 100644
--- a/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx
@@ -28,7 +28,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void SdrPathPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*aViewInformation*/) const
+ void SdrPathPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
Primitive2DContainer aRetval;
diff --git a/svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx
index 3323f5c07f73..b5b05700f723 100644
--- a/svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx
@@ -31,7 +31,7 @@ using namespace com::sun::star;
namespace drawinglayer::primitive2d
{
- void SdrRectanglePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*aViewInformation*/) const
+ void SdrRectanglePrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & /*rParameters*/) const
{
Primitive2DContainer aRetval;
diff --git a/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx
index 778eeeac2170..2c8f469f27b9 100644
--- a/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrtextprimitive2d.cxx
@@ -136,7 +136,7 @@ namespace drawinglayer::primitive2d
return false;
}
- void SdrTextPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void SdrTextPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const & rParameters) const
{
uno::Reference< drawing::XDrawPage > xCurrentlyVisualizingPage;
bool bCurrentlyVisualizingPageIsSet(false);
@@ -153,7 +153,7 @@ namespace drawinglayer::primitive2d
if(mbContainsPageField || mbContainsPageCountField || mbContainsOtherFields)
{
// get visualized page and remember
- xCurrentlyVisualizingPage = rViewInformation.getVisualizedPage();
+ xCurrentlyVisualizingPage = rParameters.getViewInformation().getVisualizedPage();
bCurrentlyVisualizingPageIsSet = true;
if(xCurrentlyVisualizingPage != mxLastVisualizingPage)
@@ -207,7 +207,7 @@ namespace drawinglayer::primitive2d
{
if(!bCurrentlyVisualizingPageIsSet && mbContainsPageField)
{
- xCurrentlyVisualizingPage = rViewInformation.getVisualizedPage();
+ xCurrentlyVisualizingPage = rParameters.getViewInformation().getVisualizedPage();
}
if(!nCurrentlyValidPageNumber && mbContainsPageField)
@@ -233,16 +233,16 @@ namespace drawinglayer::primitive2d
}
// call parent
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
- void SdrContourTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const
+ void SdrContourTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
Primitive2DContainer aRetval;
- getSdrText()->GetObject().impDecomposeContourTextPrimitive(aRetval, *this, aViewInformation);
+ getSdrText()->GetObject().impDecomposeContourTextPrimitive(aRetval, *this, rParameters.getViewInformation());
encapsulateWithTextHierarchyBlockPrimitive2D(rContainer, aRetval);
}
@@ -288,10 +288,10 @@ namespace drawinglayer::primitive2d
- void SdrPathTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const
+ void SdrPathTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
Primitive2DContainer aRetval;
- getSdrText()->GetObject().impDecomposePathTextPrimitive(aRetval, *this, aViewInformation);
+ getSdrText()->GetObject().impDecomposePathTextPrimitive(aRetval, *this, rParameters.getViewInformation());
encapsulateWithTextHierarchyBlockPrimitive2D(rContainer, aRetval);
}
@@ -340,10 +340,10 @@ namespace drawinglayer::primitive2d
- void SdrBlockTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const
+ void SdrBlockTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
Primitive2DContainer aRetval;
- getSdrText()->GetObject().impDecomposeBlockTextPrimitive(aRetval, *this, aViewInformation);
+ getSdrText()->GetObject().impDecomposeBlockTextPrimitive(aRetval, *this, rParameters.getViewInformation());
encapsulateWithTextHierarchyBlockPrimitive2D(rContainer, aRetval);
}
@@ -409,10 +409,10 @@ namespace drawinglayer::primitive2d
- void SdrAutoFitTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const
+ void SdrAutoFitTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
Primitive2DContainer aRetval;
- getSdrText()->GetObject().impDecomposeAutoFitTextPrimitive(aRetval, *this, aViewInformation);
+ getSdrText()->GetObject().impDecomposeAutoFitTextPrimitive(aRetval, *this, rParameters.getViewInformation());
encapsulateWithTextHierarchyBlockPrimitive2D(rContainer, aRetval);
}
@@ -463,10 +463,10 @@ namespace drawinglayer::primitive2d
maTextRangeTransform(rTextRangeTransform)
{ }
- void SdrChainedTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const
+ void SdrChainedTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
Primitive2DContainer aRetval;
- getSdrText()->GetObject().impDecomposeChainedTextPrimitive(aRetval, *this, aViewInformation);
+ getSdrText()->GetObject().impDecomposeChainedTextPrimitive(aRetval, *this, rParameters.getViewInformation());
encapsulateWithTextHierarchyBlockPrimitive2D(rContainer, aRetval);
}
@@ -495,10 +495,10 @@ namespace drawinglayer::primitive2d
}
- void SdrStretchTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const
+ void SdrStretchTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const & rParameters) const
{
Primitive2DContainer aRetval;
- getSdrText()->GetObject().impDecomposeStretchTextPrimitive(aRetval, *this, aViewInformation);
+ getSdrText()->GetObject().impDecomposeStretchTextPrimitive(aRetval, *this, rParameters.getViewInformation());
encapsulateWithTextHierarchyBlockPrimitive2D(rContainer, aRetval);
}
diff --git a/svx/source/svdraw/charthelper.cxx b/svx/source/svdraw/charthelper.cxx
index 764abf0d3ec9..9d5d7fbbdf69 100644
--- a/svx/source/svdraw/charthelper.cxx
+++ b/svx/source/svdraw/charthelper.cxx
@@ -19,6 +19,8 @@
#include <svx/charthelper.hxx>
#include <tools/diagnose_ex.h>
+#include <drawinglayer/geometry/viewinformation2d.hxx>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
#include <com/sun/star/embed/XEmbeddedObject.hpp>
#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/util/XUpdatable2.hpp>
@@ -26,7 +28,6 @@
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <comphelper/processfactory.hxx>
#include <com/sun/star/graphic/PrimitiveFactory2D.hpp>
-#include <drawinglayer/geometry/viewinformation2d.hxx>
#include <com/sun/star/chart2/XChartDocument.hpp>
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/LineStyle.hpp>
@@ -102,8 +103,8 @@ drawinglayer::primitive2d::Primitive2DContainer ChartHelper::tryToGetChartConten
if(!aRetval.empty())
{
const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
-
- rRange = aRetval.getB2DRange(aViewInformation2D);
+ const drawinglayer::primitive2d::VisitingParameters aParameter(aViewInformation2D);
+ rRange = aRetval.getB2DRange(aParameter);
}
return aRetval;
diff --git a/svx/source/svdraw/svdpdf.cxx2 b/svx/source/svdraw/svdpdf.cxx2
new file mode 100644
index 000000000000..34c26ae3d191
--- /dev/null
+++ b/svx/source/svdraw/svdpdf.cxx2
@@ -0,0 +1,1177 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include "svdpdf.hxx"
+
+#include <config_features.h>
+
+#if HAVE_FEATURE_PDFIUM
+#include <fpdfview.h>
+#include <fpdf_edit.h>
+#include <fpdf_text.h>
+
+#include <vcl/graph.hxx>
+#include <vcl/vectorgraphicdata.hxx>
+
+#include <math.h>
+#include <editeng/eeitem.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <editeng/wghtitem.hxx>
+#include <editeng/postitem.hxx>
+#include <editeng/udlnitem.hxx>
+#include <editeng/crossedoutitem.hxx>
+#include <editeng/shdditem.hxx>
+#include <svx/xlnclit.hxx>
+#include <svx/xlncapit.hxx>
+#include <svx/xlnwtit.hxx>
+#include <svx/xflclit.hxx>
+#include <editeng/fontitem.hxx>
+#include <editeng/wrlmitem.hxx>
+#include <editeng/contouritem.hxx>
+#include <editeng/colritem.hxx>
+#include <vcl/metric.hxx>
+#include <editeng/charscaleitem.hxx>
+#include <svx/sdtditm.hxx>
+#include <svx/sdtagitm.hxx>
+#include <svx/sdtfsitm.hxx>
+#include <svx/svdmodel.hxx>
+#include <svx/svdpage.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdorect.hxx>
+#include <svx/svdograf.hxx>
+#include <svx/svdopath.hxx>
+#include <svx/svdetc.hxx>
+#include <svl/itemset.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <tools/helpers.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <svx/xlinjoit.hxx>
+#include <svx/xlndsit.hxx>
+#include <basegfx/polygon/b2dpolygonclipper.hxx>
+#include <svx/xbtmpit.hxx>
+#include <svx/xfillit0.hxx>
+#include <svx/xflbmtit.hxx>
+#include <svx/xflbstit.hxx>
+#include <svx/xlineit0.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <svx/svditer.hxx>
+#include <svx/svdogrp.hxx>
+#include <vcl/dibtools.hxx>
+#include <sal/log.hxx>
+
+namespace
+{
+
+double sqrt2(double a, double b) { return sqrt(a * a + b * b); }
+
+struct FPDFBitmapDeleter
+{
+ void operator()(FPDF_BITMAP bitmap) { FPDFBitmap_Destroy(bitmap); }
+};
+
+}
+
+using namespace com::sun::star;
+
+ImpSdrPdfImport::ImpSdrPdfImport(SdrModel& rModel, SdrLayerID nLay, const tools::Rectangle& rRect,
+ Graphic const& rGraphic)
+ : maTmpList()
+ , mpVD(VclPtr<VirtualDevice>::Create())
+ , maScaleRect(rRect)
+ , mnMapScalingOfs(0)
+ , mpModel(&rModel)
+ , mnLayer(nLay)
+ , maOldLineColor()
+ , mnLineWidth(0)
+ , maDash(css::drawing::DashStyle_RECT, 0, 0, 0, 0, 0)
+ , mbMov(false)
+ , mbSize(false)
+ , maOfs(0, 0)
+ , mfScaleX(1.0)
+ , mfScaleY(1.0)
+ , maScaleX(1.0)
+ , maScaleY(1.0)
+ , mbFntDirty(true)
+ , mbLastObjWasPolyWithoutLine(false)
+ , mbNoLine(false)
+ , mbNoFill(false)
+ , maClip()
+ , mpPdfDocument(nullptr)
+ , mnPageCount(0)
+ , mdPageWidthPts(0)
+ , mdPageHeightPts(0)
+{
+ mpVD->EnableOutput(false);
+ mpVD->SetLineColor();
+ mpVD->SetFillColor();
+ maOldLineColor.SetRed(mpVD->GetLineColor().GetRed() + 1);
+ mpLineAttr = std::make_unique<SfxItemSet>(rModel.GetItemPool(),
+ svl::Items<XATTR_LINE_FIRST, XATTR_LINE_LAST>{});
+ mpFillAttr = std::make_unique<SfxItemSet>(rModel.GetItemPool(),
+ svl::Items<XATTR_FILL_FIRST, XATTR_FILL_LAST>{});
+ mpTextAttr = std::make_unique<SfxItemSet>(rModel.GetItemPool(),
+ svl::Items<EE_ITEMS_START, EE_ITEMS_END>{});
+ checkClip();
+
+ FPDF_LIBRARY_CONFIG aConfig;
+ aConfig.version = 2;
+ aConfig.m_pUserFontPaths = nullptr;
+ aConfig.m_pIsolate = nullptr;
+ aConfig.m_v8EmbedderSlot = 0;
+ FPDF_InitLibraryWithConfig(&aConfig);
+
+ // Load the buffer using pdfium.
+ auto const& rVectorGraphicData = rGraphic.getVectorGraphicData();
+ mpPdfDocument = FPDF_LoadMemDocument(
+ rVectorGraphicData->getVectorGraphicDataArray().getConstArray(),
+ rVectorGraphicData->getVectorGraphicDataArrayLength(), /*password=*/nullptr);
+ if (!mpPdfDocument)
+ {
+ //TODO: Handle failure to load.
+ switch (FPDF_GetLastError())
+ {
+ case FPDF_ERR_SUCCESS:
+ break;
+ case FPDF_ERR_UNKNOWN:
+ break;
+ case FPDF_ERR_FILE:
+ break;
+ case FPDF_ERR_FORMAT:
+ break;
+ case FPDF_ERR_PASSWORD:
+ break;
+ case FPDF_ERR_SECURITY:
+ break;
+ case FPDF_ERR_PAGE:
+ break;
+ default:
+ break;
+ }
+
+ return;
+ }
+
+ mnPageCount = FPDF_GetPageCount(mpPdfDocument);
+}
+
+ImpSdrPdfImport::~ImpSdrPdfImport()
+{
+ FPDF_CloseDocument(mpPdfDocument);
+ FPDF_DestroyLibrary();
+}
+
+void ImpSdrPdfImport::DoObjects(SvdProgressInfo* pProgrInfo, sal_uInt32* pActionsToReport,
+ int nPageIndex)
+{
+ const int nPageCount = FPDF_GetPageCount(mpPdfDocument);
+ if (nPageCount > 0 && nPageIndex >= 0 && nPageIndex < nPageCount)
+ {
+ // Render next page.
+ FPDF_PAGE pPdfPage = FPDF_LoadPage(mpPdfDocument, nPageIndex);
+ if (pPdfPage == nullptr)
+ return;
+
+ const double dPageWidth = FPDF_GetPageWidth(pPdfPage);
+ const double dPageHeight = FPDF_GetPageHeight(pPdfPage);
+ SetupPageScale(dPageWidth, dPageHeight);
+
+ // Load the page text to extract it when we get text elements.
+ FPDF_TEXTPAGE pTextPage = FPDFText_LoadPage(pPdfPage);
+
+ const int nPageObjectCount = FPDFPage_CountObjects(pPdfPage);
+ if (pProgrInfo)
+ pProgrInfo->SetActionCount(nPageObjectCount);
+
+ for (int nPageObjectIndex = 0; nPageObjectIndex < nPageObjectCount; ++nPageObjectIndex)
+ {
+ FPDF_PAGEOBJECT pPageObject = FPDFPage_GetObject(pPdfPage, nPageObjectIndex);
+ ImportPdfObject(pPageObject, pTextPage, nPageObjectIndex);
+ if (pProgrInfo && pActionsToReport)
+ {
+ (*pActionsToReport)++;
+
+ if (*pActionsToReport >= 16)
+ {
+ if (!pProgrInfo->ReportActions(*pActionsToReport))
+ break;
+
+ *pActionsToReport = 0;
+ }
+ }
+ }
+
+ FPDFText_ClosePage(pTextPage);
+ FPDF_ClosePage(pPdfPage);
+ }
+}
+
+void ImpSdrPdfImport::SetupPageScale(const double dPageWidth, const double dPageHeight)
+{
+ mfScaleX = mfScaleY = 1.0;
+
+ // Store the page dimensions in Points.
+ mdPageWidthPts = dPageWidth;
+ mdPageHeightPts = dPageHeight;
+
+ Size aPageSize(convertPointToMm100(dPageWidth),
+ convertPointToMm100(dPageHeight));
+
+ if (aPageSize.Width() && aPageSize.Height() && (!maScaleRect.IsEmpty()))
+ {
+ maOfs = maScaleRect.TopLeft();
+
+ if (aPageSize.Width() != (maScaleRect.GetWidth() - 1))
+ {
+ mfScaleX = static_cast<double>(maScaleRect.GetWidth() - 1)
+ / static_cast<double>(aPageSize.Width());
+ }
+
+ if (aPageSize.Height() != (maScaleRect.GetHeight() - 1))
+ {
+ mfScaleY = static_cast<double>(maScaleRect.GetHeight() - 1)
+ / static_cast<double>(aPageSize.Height());
+ }
+ }
+
+ mbMov = maOfs.X() != 0 || maOfs.Y() != 0;
+ mbSize = false;
+ maScaleX = Fraction(1, 1);
+ maScaleY = Fraction(1, 1);
+
+ if (aPageSize.Width() != (maScaleRect.GetWidth() - 1))
+ {
+ maScaleX = Fraction(maScaleRect.GetWidth() - 1, aPageSize.Width());
+ mbSize = true;
+ }
+
+ if (aPageSize.Height() != (maScaleRect.GetHeight() - 1))
+ {
+ maScaleY = Fraction(maScaleRect.GetHeight() - 1, aPageSize.Height());
+ mbSize = true;
+ }
+}
+
+size_t ImpSdrPdfImport::DoImport(SdrObjList& rOL, size_t nInsPos, int nPageNumber,
+ SvdProgressInfo* pProgrInfo)
+{
+ sal_uInt32 nActionsToReport(0);
+
+ // execute
+ DoObjects(pProgrInfo, &nActionsToReport, nPageNumber);
+
+ if (pProgrInfo)
+ {
+ pProgrInfo->ReportActions(nActionsToReport);
+ nActionsToReport = 0;
+ }
+
+ // MapMode scaling
+ MapScaling();
+
+ // To calculate the progress meter, we use GetActionSize()*3.
+ // However, maTmpList has a lower entry count limit than GetActionSize(),
+ // so the actions that were assumed were too much have to be re-added.
+ // nActionsToReport = (rMtf.GetActionSize() - maTmpList.size()) * 2;
+
+ // announce all currently unannounced rescales
+ if (pProgrInfo)
+ {
+ pProgrInfo->ReportRescales(nActionsToReport);
+ pProgrInfo->SetInsertCount(maTmpList.size());
+ }
+
+ nActionsToReport = 0;
+
+ // insert all objects cached in aTmpList now into rOL from nInsPos
+ nInsPos = std::min(nInsPos, rOL.GetObjCount());
+
+ for (SdrObject* pObj : maTmpList)
+ {
+ rOL.NbcInsertObject(pObj, nInsPos);
+ nInsPos++;
+
+ if (pProgrInfo)
+ {
+ nActionsToReport++;
+
+ if (nActionsToReport >= 32) // update all 32 actions
+ {
+ pProgrInfo->ReportInserts(nActionsToReport);
+ nActionsToReport = 0;
+ }
+ }
+ }
+
+ // report all remaining inserts for the last time
+ if (pProgrInfo)
+ {
+ pProgrInfo->ReportInserts(nActionsToReport);
+ }
+
+ return maTmpList.size();
+}
+
+void ImpSdrPdfImport::SetAttributes(SdrObject* pObj, bool bForceTextAttr)
+{
+ mbNoLine = false;
+ mbNoFill = false;
+ bool bLine(!bForceTextAttr);
+ bool bFill(!pObj || (pObj->IsClosedObj() && !bForceTextAttr));
+ bool bText(bForceTextAttr || (pObj && pObj->GetOutlinerParaObject()));
+
+ if (bLine)
+ {
+ if (mnLineWidth)
+ {
+ mpLineAttr->Put(XLineWidthItem(mnLineWidth));
+ }
+ else
+ {
+ mpLineAttr->Put(XLineWidthItem(0));
+ }
+
+ maOldLineColor = mpVD->GetLineColor();
+
+ if (mpVD->IsLineColor())
+ {
+ mpLineAttr->Put(XLineStyleItem(drawing::LineStyle_SOLID)); //TODO support dashed lines.
+ mpLineAttr->Put(XLineColorItem(OUString(), mpVD->GetLineColor()));
+ }
+ else
+ {
+ mpLineAttr->Put(XLineStyleItem(drawing::LineStyle_NONE));
+ }
+
+ mpLineAttr->Put(XLineJointItem(css::drawing::LineJoint_NONE));
+
+ // Add LineCap support
+ mpLineAttr->Put(XLineCapItem(gaLineCap));
+
+ if (((maDash.GetDots() && maDash.GetDotLen())
+ || (maDash.GetDashes() && maDash.GetDashLen()))
+ && maDash.GetDistance())
+ {
+ mpLineAttr->Put(XLineDashItem(OUString(), maDash));
+ }
+ else
+ {
+ mpLineAttr->Put(XLineDashItem(OUString(), XDash(css::drawing::DashStyle_RECT)));
+ }
+ }
+ else
+ {
+ mbNoLine = true;
+ }
+
+ if (bFill)
+ {
+ if (mpVD->IsFillColor())
+ {
+ mpFillAttr->Put(XFillStyleItem(drawing::FillStyle_SOLID));
+ mpFillAttr->Put(XFillColorItem(OUString(), mpVD->GetFillColor()));
+ }
+ else
+ {
+ mpFillAttr->Put(XFillStyleItem(drawing::FillStyle_NONE));
+ }
+ }
+ else
+ {
+ mbNoFill = true;
+ }
+
+ if (bText && mbFntDirty)
+ {
+ vcl::Font aFnt(mpVD->GetFont());
+
+ const sal_uInt32 nHeight(FRound(aFnt.GetFontSize().Height() /* * mfScaleY */));
+
+ mpTextAttr->Put(SvxFontItem(aFnt.GetFamilyType(), aFnt.GetFamilyName(), aFnt.GetStyleName(),
+ aFnt.GetPitch(), aFnt.GetCharSet(), EE_CHAR_FONTINFO));
+ mpTextAttr->Put(SvxFontItem(aFnt.GetFamilyType(), aFnt.GetFamilyName(), aFnt.GetStyleName(),
+ aFnt.GetPitch(), aFnt.GetCharSet(), EE_CHAR_FONTINFO_CJK));
+ mpTextAttr->Put(SvxFontItem(aFnt.GetFamilyType(), aFnt.GetFamilyName(), aFnt.GetStyleName(),
+ aFnt.GetPitch(), aFnt.GetCharSet(), EE_CHAR_FONTINFO_CTL));
+ mpTextAttr->Put(SvxPostureItem(aFnt.GetItalic(), EE_CHAR_ITALIC));
+ mpTextAttr->Put(SvxWeightItem(aFnt.GetWeight(), EE_CHAR_WEIGHT));
+ mpTextAttr->Put(SvxFontHeightItem(nHeight, 100, EE_CHAR_FONTHEIGHT));
+ mpTextAttr->Put(SvxFontHeightItem(nHeight, 100, EE_CHAR_FONTHEIGHT_CJK));
+ mpTextAttr->Put(SvxFontHeightItem(nHeight, 100, EE_CHAR_FONTHEIGHT_CTL));
+ mpTextAttr->Put(SvxCharScaleWidthItem(100, EE_CHAR_FONTWIDTH));
+ mpTextAttr->Put(SvxUnderlineItem(aFnt.GetUnderline(), EE_CHAR_UNDERLINE));
+ mpTextAttr->Put(SvxOverlineItem(aFnt.GetOverline(), EE_CHAR_OVERLINE));
+ mpTextAttr->Put(SvxCrossedOutItem(aFnt.GetStrikeout(), EE_CHAR_STRIKEOUT));
+ mpTextAttr->Put(SvxShadowedItem(aFnt.IsShadow(), EE_CHAR_SHADOW));
+
+ // #i118485# Setting this item leads to problems (written #i118498# for this)
+ // mpTextAttr->Put(SvxAutoKernItem(aFnt.IsKerning(), EE_CHAR_KERNING));
+
+ mpTextAttr->Put(SvxWordLineModeItem(aFnt.IsWordLineMode(), EE_CHAR_WLM));
+ mpTextAttr->Put(SvxContourItem(aFnt.IsOutline(), EE_CHAR_OUTLINE));
+ mpTextAttr->Put(SvxColorItem(mpVD->GetTextColor(), EE_CHAR_COLOR));
+ //... svxfont textitem svditext
+ mbFntDirty = false;
+ }
+
+ if (pObj)
+ {
+ pObj->SetLayer(mnLayer);
+
+ if (bLine)
+ {
+ pObj->SetMergedItemSet(*mpLineAttr);
+ }
+
+ if (bFill)
+ {
+ pObj->SetMergedItemSet(*mpFillAttr);
+ }
+
+ if (bText)
+ {
+ pObj->SetMergedItemSet(*mpTextAttr);
+ pObj->SetMergedItem(SdrTextHorzAdjustItem(SDRTEXTHORZADJUST_LEFT));
+ pObj->SetMergedItem(makeSdrTextAutoGrowHeightItem(false));
+ pObj->SetMergedItem(makeSdrTextAutoGrowWidthItem(false));
+ }
+ }
+}
+
+void ImpSdrPdfImport::InsertObj(SdrObject* pObj, bool bScale)
+{
+ if (bScale && !maScaleRect.IsEmpty())
+ {
+ if (mbSize)
+ {
+ pObj->NbcResize(Point(), maScaleX, maScaleY);
+ }
+
+ if (mbMov)
+ {
+ pObj->NbcMove(Size(maOfs.X(), maOfs.Y()));
+ }
+ }
+
+ if (isClip())
+ {
+ const basegfx::B2DPolyPolygon aPoly(pObj->TakeXorPoly());
+ const basegfx::B2DRange aOldRange(aPoly.getB2DRange());
+ const SdrLayerID aOldLayer(pObj->GetLayer());
+ const SfxItemSet aOldItemSet(pObj->GetMergedItemSet());
+ const SdrGrafObj* pSdrGrafObj = dynamic_cast<SdrGrafObj*>(pObj);
+ const SdrTextObj* pSdrTextObj = dynamic_cast<SdrTextObj*>(pObj);
+
+ if (pSdrTextObj && pSdrTextObj->HasText())
+ {
+ // all text objects are created from ImportText and have no line or fill attributes, so
+ // it is okay to concentrate on the text itself
+ while (true)
+ {
+ const basegfx::B2DPolyPolygon aTextContour(pSdrTextObj->TakeContour());
+ const basegfx::B2DRange aTextRange(aTextContour.getB2DRange());
+ const basegfx::B2DRange aClipRange(maClip.getB2DRange());
+
+ // no overlap -> completely outside
+ if (!aClipRange.overlaps(aTextRange))
+ {
+ SdrObject::Free(pObj);
+ break;
+ }
+
+ // when the clip is a rectangle fast check for inside is possible
+ if (basegfx::utils::isRectangle(maClip) && aClipRange.isInside(aTextRange))
+ {
+ // completely inside ClipRect
+ break;
+ }
+
+ // here text needs to be clipped; to do so, convert to SdrObjects with polygons
+ // and add these recursively. Delete original object, do not add in this run
+ SdrObjectUniquePtr pConverted = pSdrTextObj->ConvertToPolyObj(true, true);
+ SdrObject::Free(pObj);
+
+ if (pConverted)
+ {
+ // recursively add created conversion; per definition this shall not
+ // contain further SdrTextObjs. Visit only non-group objects
+ SdrObjListIter aIter(*pConverted, SdrIterMode::DeepNoGroups);
+
+ // work with clones; the created conversion may contain group objects
+ // and when working with the original objects the loop itself could
+ // break and the cleanup later would be pretty complicated (only delete group
+ // objects, are these empty, ...?)
+ while (aIter.IsMore())
+ {
+ SdrObject* pCandidate = aIter.Next();
+ OSL_ENSURE(pCandidate && dynamic_cast<SdrObjGroup*>(pCandidate) == nullptr,
+ "SdrObjListIter with SdrIterMode::DeepNoGroups error (!)");
+ SdrObject* pNewClone(
+ pCandidate->CloneSdrObject(pCandidate->getSdrModelFromSdrObject()));
+
+ if (pNewClone)
+ {
+ InsertObj(pNewClone, false);
+ }
+ else
+ {
+ OSL_ENSURE(false, "SdrObject::Clone() failed (!)");
+ }
+ }
+ }
+
+ break;
+ }
+ }
+ else
+ {
+ BitmapEx aBitmapEx;
+
+ if (pSdrGrafObj)
+ {
+ aBitmapEx = pSdrGrafObj->GetGraphic().GetBitmapEx();
+ }
+
+ SdrObject::Free(pObj);
+
+ if (!aOldRange.isEmpty())
+ {
+ // clip against ClipRegion
+ const basegfx::B2DPolyPolygon aNewPoly(basegfx::utils::clipPolyPolygonOnPolyPolygon(
+ aPoly, maClip, true, !aPoly.isClosed()));
+ const basegfx::B2DRange aNewRange(aNewPoly.getB2DRange());
+
+ if (!aNewRange.isEmpty())
+ {
+ pObj = new SdrPathObj(*mpModel, aNewPoly.isClosed() ? OBJ_POLY : OBJ_PLIN,
+ aNewPoly);
+
+ pObj->SetLayer(aOldLayer);
+ pObj->SetMergedItemSet(aOldItemSet);
+
+ if (!!aBitmapEx)
+ {
+ // aNewRange is inside of aOldRange and defines which part of aBitmapEx is used
+ const double fScaleX(aBitmapEx.GetSizePixel().Width()
+ / (aOldRange.getWidth() ? aOldRange.getWidth() : 1.0));
+ const double fScaleY(
+ aBitmapEx.GetSizePixel().Height()
+ / (aOldRange.getHeight() ? aOldRange.getHeight() : 1.0));
+ basegfx::B2DRange aPixel(aNewRange);
+ basegfx::B2DHomMatrix aTrans;
+
+ aTrans.translate(-aOldRange.getMinX(), -aOldRange.getMinY());
+ aTrans.scale(fScaleX, fScaleY);
+ aPixel.transform(aTrans);
+
+ const Size aOrigSizePixel(aBitmapEx.GetSizePixel());
+ const Point aClipTopLeft(
+ basegfx::fround(floor(std::max(0.0, aPixel.getMinX()))),
+ basegfx::fround(floor(std::max(0.0, aPixel.getMinY()))));
+ const Size aClipSize(
+ basegfx::fround(ceil(std::min(
+ static_cast<double>(aOrigSizePixel.Width()), aPixel.getWidth()))),
+ basegfx::fround(
+ ceil(std::min(static_cast<double>(aOrigSizePixel.Height()),
+ aPixel.getHeight()))));
+ const BitmapEx aClippedBitmap(aBitmapEx, aClipTopLeft, aClipSize);
+
+ pObj->SetMergedItem(XFillStyleItem(drawing::FillStyle_BITMAP));
+ pObj->SetMergedItem(XFillBitmapItem(OUString(), Graphic(aClippedBitmap)));
+ pObj->SetMergedItem(XFillBmpTileItem(false));
+ pObj->SetMergedItem(XFillBmpStretchItem(true));
+ }
+ }
+ }
+ }
+ }
+
+ if (pObj)
+ {
+ // #i111954# check object for visibility
+ // used are SdrPathObj, SdrRectObj, SdrCircObj, SdrGrafObj
+ bool bVisible(false);
+
+ if (pObj->HasLineStyle())
+ {
+ bVisible = true;
+ }
+
+ if (!bVisible && pObj->HasFillStyle())
+ {
+ bVisible = true;
+ }
+
+ if (!bVisible)
+ {
+ SdrTextObj* pTextObj = dynamic_cast<SdrTextObj*>(pObj);
+
+ if (pTextObj && pTextObj->HasText())
+ {
+ bVisible = true;
+ }
+ }
+
+ if (!bVisible)
+ {
+ SdrGrafObj* pGrafObj = dynamic_cast<SdrGrafObj*>(pObj);
+
+ if (pGrafObj)
+ {
+ // this may be refined to check if the graphic really is visible. It
+ // is here to ensure that graphic objects without fill, line and text
+ // get created
+ bVisible = true;
+ }
+ }
+
+ if (!bVisible)
+ {
+ SdrObject::Free(pObj);
+ }
+ else
+ {
+ maTmpList.push_back(pObj);
+
+ if (dynamic_cast<SdrPathObj*>(pObj))
+ {
+ const bool bClosed(pObj->IsClosedObj());
+
+ mbLastObjWasPolyWithoutLine = mbNoLine && bClosed;
+ }
+ else
+ {
+ mbLastObjWasPolyWithoutLine = false;
+ }
+ }
+ }
+}
+
+bool ImpSdrPdfImport::CheckLastPolyLineAndFillMerge(const basegfx::B2DPolyPolygon& rPolyPolygon)
+{
+ // #i73407# reformulation to use new B2DPolygon classes
+ if (mbLastObjWasPolyWithoutLine)
+ {
+ SdrObject* pTmpObj = !maTmpList.empty() ? maTmpList[maTmpList.size() - 1] : nullptr;
+ SdrPathObj* pLastPoly = dynamic_cast<SdrPathObj*>(pTmpObj);
+
+ if (pLastPoly)
+ {
+ if (pLastPoly->GetPathPoly() == rPolyPolygon)
+ {
+ SetAttributes(nullptr);
+
+ if (!mbNoLine && mbNoFill)
+ {
+ pLastPoly->SetMergedItemSet(*mpLineAttr);
+
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+}
+
+void ImpSdrPdfImport::checkClip()
+{
+ if (mpVD->IsClipRegion())
+ {
+ maClip = mpVD->GetClipRegion().GetAsB2DPolyPolygon();
+
+ if (isClip())
+ {
+ const basegfx::B2DHomMatrix aTransform(basegfx::utils::createScaleTranslateB2DHomMatrix(
+ mfScaleX, mfScaleY, maOfs.X(), maOfs.Y()));
+
+ maClip.transform(aTransform);
+ }
+ }
+}
+
+bool ImpSdrPdfImport::isClip() const { return !maClip.getB2DRange().isEmpty(); }
+void ImpSdrPdfImport::ImportPdfObject(FPDF_PAGEOBJECT pPageObject, FPDF_TEXTPAGE pTextPage,
+ int nPageObjectIndex)
+{
+ if (pPageObject == nullptr)
+ return;
+
+ const int nPageObjectType = FPDFPageObj_GetType(pPageObject);
+ switch (nPageObjectType)
+ {
+ case FPDF_PAGEOBJ_TEXT:
+ ImportText(pPageObject, pTextPage, nPageObjectIndex);
+ break;
+ case FPDF_PAGEOBJ_PATH:
+ ImportPath(pPageObject, nPageObjectIndex);
+ break;
+ case FPDF_PAGEOBJ_IMAGE:
+ ImportImage(pPageObject, nPageObjectIndex);
+ break;
+ case FPDF_PAGEOBJ_SHADING:
+ SAL_WARN("sd.filter", "Got page object SHADING: " << nPageObjectIndex);
+ break;
+ case FPDF_PAGEOBJ_FORM:
+ ImportForm(pPageObject, pTextPage, nPageObjectIndex);
+ break;
+ default:
+ SAL_WARN("sd.filter", "Unknown PDF page object #" << nPageObjectIndex
+ << " of type: " << nPageObjectType);
+ break;
+ }
+}
+
+void ImpSdrPdfImport::ImportForm(FPDF_PAGEOBJECT pPageObject, FPDF_TEXTPAGE pTextPage,
+ int /*nPageObjectIndex*/)
+{
+ // Get the form matrix to perform correct translation/scaling of the form sub-objects.
+ const basegfx::B2DHomMatrix aOldMatrix = maCurrentMatrix;
+
+ FS_MATRIX matrix;
+ FPDFFormObj_GetMatrix(pPageObject, &matrix);
+ maCurrentMatrix
+ = basegfx::B2DHomMatrix::abcdef(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
+
+ const int nCount = FPDFFormObj_CountObjects(pPageObject);
+ for (int nIndex = 0; nIndex < nCount; ++nIndex)
+ {
+ FPDF_PAGEOBJECT pFormObject = FPDFFormObj_GetObject(pPageObject, nIndex);
+ ImportPdfObject(pFormObject, pTextPage, -1);
+ }
+
+ // Restore the old one.
+ maCurrentMatrix = aOldMatrix;
+}
+
+void ImpSdrPdfImport::ImportText(FPDF_PAGEOBJECT pPageObject, FPDF_TEXTPAGE pTextPage,
+ int /*nPageObjectIndex*/)
+{
+ float left;
+ float bottom;
+ float right;
+ float top;
+ if (!FPDFPageObj_GetBounds(pPageObject, &left, &bottom, &right, &top))
+ {
+ SAL_WARN("sd.filter", "FAILED to get TEXT bounds");
+ }
+
+ if (left == right || top == bottom)
+ return;
+
+ FS_MATRIX matrix;
+ FPDFTextObj_GetMatrix(pPageObject, &matrix);
+ basegfx::B2DHomMatrix aTextMatrix(maCurrentMatrix);
+ basegfx::B2DRange aTextRect(left, top, right, bottom);
+ aTextRect *= aTextMatrix;
+ const tools::Rectangle aRect = PointsToLogic(aTextRect.getMinX(), aTextRect.getMaxX(),
+ aTextRect.getMinY(), aTextRect.getMaxY());
+
+ const int nBytes = FPDFTextObj_GetText(pPageObject, pTextPage, nullptr, 0);
+ std::unique_ptr<sal_Unicode[]> pText(new sal_Unicode[nBytes]);
+
+ const int nActualBytes = FPDFTextObj_GetText(pPageObject, pTextPage, pText.get(), nBytes);
+ if (nActualBytes <= 0)
+ {
+ return;
+ }
+
+ // Let's rely on null-terminaton for the length of the string. We
+ // just know the number of bytes the string takes, but in OUString
+ // needs the number of charaters.
+ OUString sText(pText.get());
+
+ const double dFontSize = FPDFTextObj_GetFontSize(pPageObject);
+
+ double dFontSizeH = fabs(sqrt2(matrix.a, matrix.c) * dFontSize);
+ double dFontSizeV = fabs(sqrt2(matrix.b, matrix.d) * dFontSize);
+
+ dFontSizeH = convertPointToMm100(dFontSizeH);
+ dFontSizeV = convertPointToMm100(dFontSizeV);
+
+ const Size aFontSize(dFontSizeH, dFontSizeV);
+ vcl::Font aFnt = mpVD->GetFont();
+ if (aFontSize != aFnt.GetFontSize())
+ {
+ aFnt.SetFontSize(aFontSize);
+ mpVD->SetFont(aFnt);
+ mbFntDirty = true;
+ }
+
+ const int nFontName = 80 + 1;
+ std::unique_ptr<char[]> pFontName(new char[nFontName]); // + terminating null
+ char* pCharFontName = reinterpret_cast<char*>(pFontName.get());
+ int nFontNameChars = FPDFTextObj_GetFontName(pPageObject, pCharFontName, nFontName);
+ if (nFontName >= nFontNameChars)
+ {
+ OUString sFontName = OUString::createFromAscii(pFontName.get());
+ if (sFontName != aFnt.GetFamilyName())
+ {
+ aFnt.SetFamilyName(sFontName);
+ mpVD->SetFont(aFnt);
+ mbFntDirty = true;
+ }
+ }
+
+ int weightObj = FPDFTextObj_GetFontWeight(pPageObject);
+ double fsize = FPDFTextObj_GetFontSize(pPageObject);
+
+ printf ("weight %d - size %f\n", weightObj, fsize);
+
+ Color aTextColor(COL_TRANSPARENT);
+ bool bFill = false;
+ bool bUse = true;
+ switch (FPDFTextObj_GetTextRenderMode(pPageObject))
+ {
+ case FPDF_TEXTRENDERMODE_FILL:
+ case FPDF_TEXTRENDERMODE_FILL_CLIP:
+ case FPDF_TEXTRENDERMODE_FILL_STROKE:
+ case FPDF_TEXTRENDERMODE_FILL_STROKE_CLIP:
+ bFill = true;
+ break;
+ case FPDF_TEXTRENDERMODE_STROKE:
+ case FPDF_TEXTRENDERMODE_STROKE_CLIP:
+ case FPDF_TEXTRENDERMODE_UNKNOWN:
+ break;
+ case FPDF_TEXTRENDERMODE_INVISIBLE:
+ case FPDF_TEXTRENDERMODE_CLIP:
+ bUse = false;
+ break;
+ }
+ if (bUse)
+ {
+ unsigned int nR, nG, nB, nA;
+ bool bRet = bFill ? FPDFPageObj_GetFillColor(pPageObject, &nR, &nG, &nB, &nA)
+ : FPDFPageObj_GetStrokeColor(pPageObject, &nR, &nG, &nB, &nA);
+ if (bRet)
+ aTextColor = Color(nR, nG, nB);
+ }
+
+ if (aTextColor != mpVD->GetTextColor())
+ {
+ mpVD->SetTextColor(aTextColor);
+ mbFntDirty = true;
+ }
+
+ InsertTextObject(aRect.TopLeft(), aRect.GetSize(), sText);
+}
+
+void ImpSdrPdfImport::InsertTextObject(const Point& rPos, const Size& rSize, const OUString& rStr)
+{
+ // calc text box size, add 5% to make it fit safely
+
+ FontMetric aFontMetric(mpVD->GetFontMetric());
+ vcl::Font aFont(mpVD->GetFont());
+ FontAlign eAlignment(aFont.GetAlignment());
+
+ // sal_Int32 nTextWidth = static_cast<sal_Int32>(mpVD->GetTextWidth(rStr) * mfScaleX);
+ sal_Int32 nTextHeight = static_cast<sal_Int32>(mpVD->GetTextHeight() * mfScaleY);
+
+ Point aPosition(FRound(rPos.X() * mfScaleX + maOfs.X()),
+ FRound(rPos.Y() * mfScaleY + maOfs.Y()));
+ Size aSize(FRound(rSize.Width() * mfScaleX), FRound(rSize.Height() * mfScaleY));
+
+ if (eAlignment == ALIGN_BASELINE)
+ aPosition.AdjustY(-FRound(aFontMetric.GetAscent() * mfScaleY));
+ else if (eAlignment == ALIGN_BOTTOM)
+ aPosition.AdjustY(-nTextHeight);
+
+ tools::Rectangle aTextRect(aPosition, aSize);
+ SdrRectObj* pText = new SdrRectObj(*mpModel, OBJ_TEXT, aTextRect);
+
+ pText->SetMergedItem(makeSdrTextUpperDistItem(0));
+ pText->SetMergedItem(makeSdrTextLowerDistItem(0));
+ pText->SetMergedItem(makeSdrTextRightDistItem(0));
+ pText->SetMergedItem(makeSdrTextLeftDistItem(0));
+
+ /*if (aFont.GetAverageFontWidth())
+ {*/
+
+ pText->ClearMergedItem(SDRATTR_TEXT_AUTOGROWWIDTH);
+ pText->SetMergedItem(makeSdrTextAutoGrowHeightItem(false));
+ pText->SetMergedItem(makeSdrTextAutoGrowWidthItem(false));
+
+ // don't let the margins eat the space needed for the text
+ //pText->SetMergedItem(SdrTextFitToSizeTypeItem(drawing::TextFitToSizeType_ALLLINES));
+ /*}
+ else
+ {
+ pText->SetMergedItem(makeSdrTextAutoGrowWidthItem(true));
+ }*/
+
+ pText->SetLayer(mnLayer);
+ pText->NbcSetText(rStr);
+ printf ("- '%s'\n", rStr.toUtf8().getStr());
+ SetAttributes(pText, true);
+ pText->SetSnapRect(aTextRect);
+
+ if (!aFont.IsTransparent())
+ {
+ SfxItemSet aAttr(*mpFillAttr->GetPool(), svl::Items<XATTR_FILL_FIRST, XATTR_FILL_LAST>{});
+ aAttr.Put(XFillStyleItem(drawing::FillStyle_SOLID));
+ aAttr.Put(XFillColorItem(OUString(), aFont.GetFillColor()));
+ pText->SetMergedItemSet(aAttr);
+ }
+ sal_uInt32 nAngle = aFont.GetOrientation();
+ if (nAngle)
+ {
+ nAngle *= 10;
+ double a = nAngle * F_PI18000;
+ double nSin = sin(a);
+ double nCos = cos(a);
+ pText->NbcRotate(aPosition, nAngle, nSin, nCos);
+ }
+ InsertObj(pText, false);
+}
+
+void ImpSdrPdfImport::MapScaling()
+{
+ const size_t nCount(maTmpList.size());
+ const MapMode& rMap = mpVD->GetMapMode();
+ Point aMapOrg(rMap.GetOrigin());
+ bool bMov2(aMapOrg.X() != 0 || aMapOrg.Y() != 0);
+
+ if (bMov2)
+ {
+ for (size_t i = mnMapScalingOfs; i < nCount; i++)
+ {
+ SdrObject* pObj = maTmpList[i];
+
+ pObj->NbcMove(Size(aMapOrg.X(), aMapOrg.Y()));
+ }
+ }
+
+ mnMapScalingOfs = nCount;
+}
+
+void ImpSdrPdfImport::ImportImage(FPDF_PAGEOBJECT pPageObject, int /*nPageObjectIndex*/)
+{
+ std::unique_ptr<std::remove_pointer<FPDF_BITMAP>::type, FPDFBitmapDeleter> bitmap(
+ FPDFImageObj_GetBitmap(pPageObject));
+ if (!bitmap)
+ {
+ SAL_WARN("sd.filter", "Failed to get IMAGE");
+ return;
+ }
+
+ const int format = FPDFBitmap_GetFormat(bitmap.get());
+ if (format == FPDFBitmap_Unknown)
+ {
+ SAL_WARN("sd.filter", "Failed to get IMAGE format");
+ return;
+ }
+
+ const unsigned char* pBuf
+ = static_cast<const unsigned char*>(FPDFBitmap_GetBuffer(bitmap.get()));
+ const int nWidth = FPDFBitmap_GetWidth(bitmap.get());
+ const int nHeight = FPDFBitmap_GetHeight(bitmap.get());
+ const int nStride = FPDFBitmap_GetStride(bitmap.get());
+ BitmapEx aBitmap(Size(nWidth, nHeight), 24);
+
+ switch (format)
+ {
+ case FPDFBitmap_BGR:
+ ReadRawDIB(aBitmap, pBuf, ScanlineFormat::N24BitTcBgr, nHeight, nStride);
+ break;
+ case FPDFBitmap_BGRx:
+ ReadRawDIB(aBitmap, pBuf, ScanlineFormat::N32BitTcRgba, nHeight, nStride);
+ break;
+ case FPDFBitmap_BGRA:
+ ReadRawDIB(aBitmap, pBuf, ScanlineFormat::N32BitTcBgra, nHeight, nStride);
+ break;
+ default:
+ SAL_WARN("sd.filter", "Got IMAGE width: " << nWidth << ", height: " << nHeight
+ << ", stride: " << nStride
+ << ", format: " << format);
+ break;
+ }
+
+ float left;
+ float bottom;
+ float right;
+ float top;
+ if (!FPDFPageObj_GetBounds(pPageObject, &left, &bottom, &right, &top))
+ {
+ SAL_WARN("sd.filter", "FAILED to get image bounds");
+ }
+
+ tools::Rectangle aRect = PointsToLogic(left, right, top, bottom);
+ aRect.AdjustRight(1);
+ aRect.AdjustBottom(1);
+
+ SdrGrafObj* pGraf = new SdrGrafObj(*mpModel, Graphic(aBitmap), aRect);
+
+ // This action is not creating line and fill, set directly, do not use SetAttributes(..)
+ pGraf->SetMergedItem(XLineStyleItem(drawing::LineStyle_NONE));
+ pGraf->SetMergedItem(XFillStyleItem(drawing::FillStyle_NONE));
+ InsertObj(pGraf);
+}
+
+void ImpSdrPdfImport::ImportPath(FPDF_PAGEOBJECT pPageObject, int /*nPageObjectIndex*/)
+{
+ FS_MATRIX matrix;
+ FPDFPath_GetMatrix(pPageObject, &matrix);
+
+ auto aPathMatrix
+ = basegfx::B2DHomMatrix::abcdef(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
+ aPathMatrix *= maCurrentMatrix;
+
+ basegfx::B2DPolyPolygon aPolyPoly;
+ basegfx::B2DPolygon aPoly;
+ std::vector<basegfx::B2DPoint> aBezier;
+
+ const int nSegments = FPDFPath_CountSegments(pPageObject);
+ for (int nSegmentIndex = 0; nSegmentIndex < nSegments; ++nSegmentIndex)
+ {
+ FPDF_PATHSEGMENT pPathSegment = FPDFPath_GetPathSegment(pPageObject, nSegmentIndex);
+ if (pPathSegment != nullptr)
+ {
+ float fx, fy;
+ if (!FPDFPathSegment_GetPoint(pPathSegment, &fx, &fy))
+ {
+ SAL_WARN("sd.filter", "Failed to get PDF path segment point");
+ continue;
+ }
+
+ basegfx::B2DPoint aB2DPoint(fx, fy);
+ aB2DPoint *= aPathMatrix;
+
+ const bool bClose = FPDFPathSegment_GetClose(pPathSegment);
+ if (bClose)
+ aPoly.setClosed(bClose); // TODO: Review
+
+ Point aPoint = PointsToLogic(aB2DPoint.getX(), aB2DPoint.getY());
+ aB2DPoint.setX(aPoint.X());
+ aB2DPoint.setY(aPoint.Y());
+
+ const int nSegmentType = FPDFPathSegment_GetType(pPathSegment);
+ switch (nSegmentType)
+ {
+ case FPDF_SEGMENT_LINETO:
+ aPoly.append(aB2DPoint);
+ break;
+
+ case FPDF_SEGMENT_BEZIERTO:
+ aBezier.emplace_back(aB2DPoint.getX(), aB2DPoint.getY());
+ if (aBezier.size() == 3)
+ {
+ aPoly.appendBezierSegment(aBezier[0], aBezier[1], aBezier[2]);
+ aBezier.clear();
+ }
+ break;
+
+ case FPDF_SEGMENT_MOVETO:
+ // New Poly.
+ if (aPoly.count() > 0)
+ {
+ aPolyPoly.append(aPoly, 1);
+ aPoly.clear();
+ }
+
+ aPoly.append(aB2DPoint);
+ break;
+
+ case FPDF_SEGMENT_UNKNOWN:
+ default:
+ SAL_WARN("sd.filter", "Unknown path segment type in PDF: " << nSegmentType);
+ break;
+ }
+ }
+ }
+
+ if (aBezier.size() == 3)
+ {
+ aPoly.appendBezierSegment(aBezier[0], aBezier[1], aBezier[2]);
+ aBezier.clear();
+ }
+
+ if (aPoly.count() > 0)
+ {
+ aPolyPoly.append(aPoly, 1);
+ aPoly.clear();
+ }
+
+ const basegfx::B2DHomMatrix aTransform(
+ basegfx::utils::createScaleTranslateB2DHomMatrix(mfScaleX, mfScaleY, maOfs.X(), maOfs.Y()));
+ aPolyPoly.transform(aTransform);
+
+ float fWidth = 1;
+ FPDFPageObj_GetStrokeWidth(pPageObject, &fWidth);
+ const double dWidth = 0.5 * fabs(sqrt2(aPathMatrix.a(), aPathMatrix.c()) * fWidth);
+ mnLineWidth = convertPointToMm100(dWidth);
+
+ int nFillMode = FPDF_FILLMODE_ALTERNATE;
+ FPDF_BOOL bStroke = 1; // Assume we have to draw, unless told otherwise.
+ if (FPDFPath_GetDrawMode(pPageObject, &nFillMode, &bStroke))
+ {
+ if (nFillMode == FPDF_FILLMODE_ALTERNATE)
+ mpVD->SetDrawMode(DrawModeFlags::Default);
+ else if (nFillMode == FPDF_FILLMODE_WINDING)
+ mpVD->SetDrawMode(DrawModeFlags::Default);
+ else
+ mpVD->SetDrawMode(DrawModeFlags::NoFill);
+ }
+
+ unsigned int nR;
+ unsigned int nG;
+ unsigned int nB;
+ unsigned int nA;
+ FPDFPageObj_GetFillColor(pPageObject, &nR, &nG, &nB, &nA);
+ mpVD->SetFillColor(Color(nR, nG, nB));
+
+ if (bStroke)
+ {
+ FPDFPageObj_GetStrokeColor(pPageObject, &nR, &nG, &nB, &nA);
+ mpVD->SetLineColor(Color(nR, nG, nB));
+ }
+ else
+ mpVD->SetLineColor(COL_TRANSPARENT);
+
+ if (!mbLastObjWasPolyWithoutLine || !CheckLastPolyLineAndFillMerge(aPolyPoly))
+ {
+ SdrPathObj* pPath = new SdrPathObj(*mpModel, OBJ_POLY, aPolyPoly);
+ SetAttributes(pPath);
+ InsertObj(pPath, false);
+ }
+}
+
+Point ImpSdrPdfImport::PointsToLogic(double x, double y) const
+{
+ y = correctVertOrigin(y);
+
+ Point aPos(convertPointToMm100(x), convertPointToMm100(y));
+ return aPos;
+}
+
+tools::Rectangle ImpSdrPdfImport::PointsToLogic(double left, double right, double top,
+ double bottom) const
+{
+ top = correctVertOrigin(top);
+ bottom = correctVertOrigin(bottom);
+
+ Point aPos(convertPointToMm100(left), convertPointToMm100(top));
+ Size aSize(convertPointToMm100(right - left), convertPointToMm100(bottom - top));
+
+ return tools::Rectangle(aPos, aSize);
+}
+
+#endif // HAVE_FEATURE_PDFIUM
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/table/viewcontactoftableobj.cxx b/svx/source/table/viewcontactoftableobj.cxx
index 554bbe245a51..82d559b8e359 100644
--- a/svx/source/table/viewcontactoftableobj.cxx
+++ b/svx/source/table/viewcontactoftableobj.cxx
@@ -61,7 +61,7 @@ namespace drawinglayer::primitive2d
protected:
// local decomposition.
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const& rParameters) const override;
public:
SdrCellPrimitive2D(
@@ -86,7 +86,7 @@ namespace drawinglayer::primitive2d
}
- void SdrCellPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*aViewInformation*/) const
+ void SdrCellPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
// prepare unit polygon
const basegfx::B2DPolyPolygon aUnitPolyPolygon(basegfx::utils::createUnitPolygon());
diff --git a/sw/source/core/draw/dflyobj.cxx b/sw/source/core/draw/dflyobj.cxx
index fcb598966280..48b0b8c346ee 100644
--- a/sw/source/core/draw/dflyobj.cxx
+++ b/sw/source/core/draw/dflyobj.cxx
@@ -157,7 +157,7 @@ namespace drawinglayer::primitive2d
protected:
/// method which is to be used to implement the local decomposition of a 2D primitive
- virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const& rParameters) const override;
public:
SwVirtFlyDrawObjPrimitive(
@@ -171,10 +171,10 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
// override to allow callbacks to wrap_DoPaintObject
- virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual void get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const& rParameters) const override;
// data read access
const SwVirtFlyDrawObj& getSwVirtFlyDrawObj() const { return mrSwVirtFlyDrawObj; }
@@ -189,7 +189,7 @@ namespace drawinglayer::primitive2d
namespace drawinglayer::primitive2d
{
- void SwVirtFlyDrawObjPrimitive::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const
+ void SwVirtFlyDrawObjPrimitive::create2DDecomposition(Primitive2DContainer& rContainer, VisitingParameters const& /*rParameters*/) const
{
if(getOuterRange().isEmpty())
return;
@@ -219,22 +219,22 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange SwVirtFlyDrawObjPrimitive::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange SwVirtFlyDrawObjPrimitive::getB2DRange(VisitingParameters const& /*rParameters*/) const
{
return getOuterRange();
}
- void SwVirtFlyDrawObjPrimitive::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, const geometry::ViewInformation2D& rViewInformation) const
+ void SwVirtFlyDrawObjPrimitive::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor, VisitingParameters const& rParameters) const
{
// This is the callback to keep the FlyFrame painting in SW alive as long as it
// is not changed to primitives. This is the method which will be called by the processors
// when they do not know this primitive (and they do not). Inside wrap_DoPaintObject
// there needs to be a test that paint is only done during SW repaints (see there).
// Using this mechanism guarantees the correct Z-Order of the VirtualObject-based FlyFrames.
- getSwVirtFlyDrawObj().wrap_DoPaintObject(rViewInformation);
+ getSwVirtFlyDrawObj().wrap_DoPaintObject(rParameters.getViewInformation());
// call parent
- BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
+ BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rParameters);
}
// provide unique ID
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index 0cf9c7fc7b26..d3850ca2e2cb 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -4624,7 +4624,7 @@ namespace drawinglayer::primitive2d
/// local decomposition.
virtual void create2DDecomposition(
Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
+ VisitingParameters const& rParameters) const override;
public:
/// constructor
@@ -4646,7 +4646,7 @@ namespace drawinglayer::primitive2d
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
/// get range
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+ virtual basegfx::B2DRange getB2DRange(VisitingParameters const& rParameters) const override;
/// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
@@ -4656,7 +4656,7 @@ namespace drawinglayer::primitive2d
void SwBorderRectanglePrimitive2D::create2DDecomposition(
Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& /*rViewInformation*/) const
+ VisitingParameters const& /*rParameters*/) const
{
basegfx::B2DPoint aTopLeft(getB2DHomMatrix() * basegfx::B2DPoint(0.0, 0.0));
basegfx::B2DPoint aTopRight(getB2DHomMatrix() * basegfx::B2DPoint(1.0, 0.0));
@@ -4836,7 +4836,7 @@ namespace drawinglayer::primitive2d
return false;
}
- basegfx::B2DRange SwBorderRectanglePrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ basegfx::B2DRange SwBorderRectanglePrimitive2D::getB2DRange(VisitingParameters const& /*rParameters*/) const
{
basegfx::B2DRange aRetval(0.0, 0.0, 1.0, 1.0);
diff --git a/sw/source/uibase/docvw/AnchorOverlayObject.cxx b/sw/source/uibase/docvw/AnchorOverlayObject.cxx
index 804628cc0b7b..6f18656bdc22 100644
--- a/sw/source/uibase/docvw/AnchorOverlayObject.cxx
+++ b/sw/source/uibase/docvw/AnchorOverlayObject.cxx
@@ -54,7 +54,7 @@ private:
protected:
virtual void create2DDecomposition(
drawinglayer::primitive2d::Primitive2DContainer& rContainer,
- const drawinglayer::geometry::ViewInformation2D& rViewInformation) const override;
+ drawinglayer::primitive2d::VisitingParameters const& rParameters) const override;
public:
AnchorPrimitive( const basegfx::B2DPolygon& rTriangle,
@@ -88,7 +88,7 @@ public:
void AnchorPrimitive::create2DDecomposition(
drawinglayer::primitive2d::Primitive2DContainer& rContainer,
- const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const
+ drawinglayer::primitive2d::VisitingParameters const& /*rParameters*/) const
{
if ( AnchorState::Tri == maAnchorState ||
AnchorState::All == maAnchorState )
diff --git a/sw/source/uibase/docvw/ShadowOverlayObject.cxx b/sw/source/uibase/docvw/ShadowOverlayObject.cxx
index 0e51635aecde..733f98581d7b 100644
--- a/sw/source/uibase/docvw/ShadowOverlayObject.cxx
+++ b/sw/source/uibase/docvw/ShadowOverlayObject.cxx
@@ -48,7 +48,7 @@ private:
protected:
virtual void create2DDecomposition(
drawinglayer::primitive2d::Primitive2DContainer& rContainer,
- const drawinglayer::geometry::ViewInformation2D& rViewInformation) const override;
+ drawinglayer::primitive2d::VisitingParameters const& rParameters) const override;
public:
ShadowPrimitive(
@@ -73,7 +73,7 @@ public:
void ShadowPrimitive::create2DDecomposition(
drawinglayer::primitive2d::Primitive2DContainer& rContainer,
- const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const
+ drawinglayer::primitive2d::VisitingParameters const& /*rParameters*/) const
{
// get logic sizes in object coordinate system
basegfx::B2DRange aRange(maBasePosition);