summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorArmin Le Grand (allotropia) <armin.le.grand.extern@allotropia.de>2022-09-07 13:20:56 +0200
committerArmin Le Grand <Armin.Le.Grand@me.com>2022-09-08 13:33:58 +0200
commit707b0c328a282d993fa33b618083d20b6c521de6 (patch)
treef73397fe8c30bb9e21997dcd7232da1e210cecba /include
parent7d9c03fb354af184f35e257f319a70ef3481703a (diff)
Rework of SoftEdgePrimitive2D
This is pretty much the same for SoftEdgePrimitive2D as the change for GlowPrimitive2D, so for more comments please refer to commit c2d1458723c66c2fd717a112f89f773226adc841 Added suggested change of DoSaveForVisualControl mechanism Change-Id: I28901e7a0b6e1823000d2aa6a335ce2fd80e6ce3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139585 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
Diffstat (limited to 'include')
-rw-r--r--include/drawinglayer/primitive2d/softedgeprimitive2d.hxx34
1 files changed, 29 insertions, 5 deletions
diff --git a/include/drawinglayer/primitive2d/softedgeprimitive2d.hxx b/include/drawinglayer/primitive2d/softedgeprimitive2d.hxx
index 90ada61f7b2e..4a49444560c5 100644
--- a/include/drawinglayer/primitive2d/softedgeprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/softedgeprimitive2d.hxx
@@ -20,30 +20,54 @@
#pragma once
#include <drawinglayer/drawinglayerdllapi.h>
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
+#include <drawinglayer/primitive2d/BufferedDecompositionGroupPrimitive2D.hxx>
namespace drawinglayer::primitive2d
{
-class DRAWINGLAYER_DLLPUBLIC SoftEdgePrimitive2D final : public GroupPrimitive2D
+class DRAWINGLAYER_DLLPUBLIC SoftEdgePrimitive2D final
+ : public BufferedDecompositionGroupPrimitive2D
{
private:
/// Soft edge size, in logical units (100ths of mm)
double mfRadius;
- mutable bool mbInMaskGeneration = false;
+
+ /// last used DiscreteSoftRadius and ClippedRange
+ double mfLastDiscreteSoftRadius;
+ basegfx::B2DRange maLastClippedRange;
+
+ /// helpers
+ bool prepareValuesAndcheckValidity(basegfx::B2DRange& rSoftRange,
+ basegfx::B2DRange& rClippedRange,
+ basegfx::B2DVector& rDiscreteSoftSize,
+ double& rfDiscreteSoftRadius,
+ const geometry::ViewInformation2D& rViewInformation) const;
+
+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;
public:
+ /// constructor
SoftEdgePrimitive2D(double fRadius, Primitive2DContainer&& aChildren);
+ /// data read access
double getRadius() const { return mfRadius; }
- void setMaskGeneration(bool bVal = true) const { mbInMaskGeneration = bVal; }
-
+ /// compare operator
virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+ /// get range
+ virtual basegfx::B2DRange
+ getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+
+ /// The default implementation will return an empty sequence
virtual void
get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
const geometry::ViewInformation2D& rViewInformation) const override;
+ /// provide unique ID
virtual sal_uInt32 getPrimitive2DID() const override;
};
} // end of namespace drawinglayer::primitive2d