summaryrefslogtreecommitdiff
path: root/drawinglayer/source/primitive2d/glowprimitive2d.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'drawinglayer/source/primitive2d/glowprimitive2d.cxx')
-rw-r--r--drawinglayer/source/primitive2d/glowprimitive2d.cxx29
1 files changed, 8 insertions, 21 deletions
diff --git a/drawinglayer/source/primitive2d/glowprimitive2d.cxx b/drawinglayer/source/primitive2d/glowprimitive2d.cxx
index 0bce06d90a1d..d3c8539eddf8 100644
--- a/drawinglayer/source/primitive2d/glowprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/glowprimitive2d.cxx
@@ -37,8 +37,7 @@ namespace drawinglayer::primitive2d
{
GlowPrimitive2D::GlowPrimitive2D(const Color& rGlowColor, double fRadius,
Primitive2DContainer&& rChildren)
- : GroupPrimitive2D(std::move(rChildren))
- , maBuffered2DDecomposition()
+ : BufferedDecompositionGroupPrimitive2D(std::move(rChildren))
, maGlowColor(rGlowColor)
, mfGlowRadius(fRadius)
, mfLastDiscreteGlowRadius(0.0)
@@ -48,7 +47,7 @@ GlowPrimitive2D::GlowPrimitive2D(const Color& rGlowColor, double fRadius,
bool GlowPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
{
- if (BasePrimitive2D::operator==(rPrimitive))
+ if (BufferedDecompositionGroupPrimitive2D::operator==(rPrimitive))
{
const GlowPrimitive2D& rCompare = static_cast<const GlowPrimitive2D&>(rPrimitive);
@@ -239,10 +238,9 @@ void GlowPrimitive2D::create2DDecomposition(
}
}
-// Same as in BufferedDecompositionPrimitive2D, maybe we need a tooling class
-// like BufferedDecompositionGropupPrimitive2D if this is used more often
-// (AFAIR it's similar for ScenePrimitive2D which also does quite some re-use/
-// buffering checks to avoid too much re-creation)
+// Using tooling class BufferedDecompositionGroupPrimitive2D now, so
+// no more need to locally do the buffered get2DDecomposition here,
+// see BufferedDecompositionGroupPrimitive2D::get2DDecomposition
void GlowPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
const geometry::ViewInformation2D& rViewInformation) const
{
@@ -319,20 +317,9 @@ void GlowPrimitive2D::get2DDecomposition(Primitive2DDecompositionVisitor& rVisit
}
}
- if (getBuffered2DDecomposition().empty())
- {
- // refresh last used DiscreteGlowRadius and ClippedRange to new remembered values
- const_cast<GlowPrimitive2D*>(this)->mfLastDiscreteGlowRadius = fDiscreteGlowRadius;
- const_cast<GlowPrimitive2D*>(this)->maLastClippedRange = aClippedRange;
-
- // create decomposition
- Primitive2DContainer aNewSequence;
-
- create2DDecomposition(aNewSequence, rViewInformation);
- const_cast<GlowPrimitive2D*>(this)->setBuffered2DDecomposition(std::move(aNewSequence));
- }
-
- rVisitor.visit(getBuffered2DDecomposition());
+ // call parent, that will check for empty, call create2DDecomposition and
+ // set as decomposition
+ BufferedDecompositionGroupPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
}
basegfx::B2DRange