diff options
author | Armin Le Grand (allotropia) <armin.le.grand.extern@allotropia.de> | 2022-09-07 13:20:56 +0200 |
---|---|---|
committer | Armin Le Grand <Armin.Le.Grand@me.com> | 2022-09-08 13:33:58 +0200 |
commit | 707b0c328a282d993fa33b618083d20b6c521de6 (patch) | |
tree | f73397fe8c30bb9e21997dcd7232da1e210cecba /include | |
parent | 7d9c03fb354af184f35e257f319a70ef3481703a (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.hxx | 34 |
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 |