diff options
Diffstat (limited to 'drawinglayer/source/primitive2d/PolyPolygonColorPrimitive2D.cxx')
-rw-r--r-- | drawinglayer/source/primitive2d/PolyPolygonColorPrimitive2D.cxx | 57 |
1 files changed, 53 insertions, 4 deletions
diff --git a/drawinglayer/source/primitive2d/PolyPolygonColorPrimitive2D.cxx b/drawinglayer/source/primitive2d/PolyPolygonColorPrimitive2D.cxx index aa48a965e692..6c7cf4bb365a 100644 --- a/drawinglayer/source/primitive2d/PolyPolygonColorPrimitive2D.cxx +++ b/drawinglayer/source/primitive2d/PolyPolygonColorPrimitive2D.cxx @@ -20,16 +20,17 @@ #include <drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx> #include <basegfx/polygon/b2dpolypolygontools.hxx> +#include <basegfx/polygon/b2dpolygontools.hxx> #include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx> +#include <utility> using namespace com::sun::star; namespace drawinglayer::primitive2d { -PolyPolygonColorPrimitive2D::PolyPolygonColorPrimitive2D( - const basegfx::B2DPolyPolygon& rPolyPolygon, const basegfx::BColor& rBColor) - : BasePrimitive2D() - , maPolyPolygon(rPolyPolygon) +PolyPolygonColorPrimitive2D::PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon aPolyPolygon, + const basegfx::BColor& rBColor) + : maPolyPolygon(std::move(aPolyPolygon)) , maBColor(rBColor) { } @@ -61,6 +62,54 @@ sal_uInt32 PolyPolygonColorPrimitive2D::getPrimitive2DID() const return PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D; } +FilledRectanglePrimitive2D::FilledRectanglePrimitive2D(const basegfx::B2DRange& rB2DRange, + const basegfx::BColor& rBColor) + : BasePrimitive2D() + , maB2DRange(rB2DRange) + , maBColor(rBColor) +{ +} + +bool FilledRectanglePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const +{ + if (BasePrimitive2D::operator==(rPrimitive)) + { + const FilledRectanglePrimitive2D& rCompare( + static_cast<const FilledRectanglePrimitive2D&>(rPrimitive)); + + return (getB2DRange() == rCompare.getB2DRange() && getBColor() == rCompare.getBColor()); + } + + return false; +} + +basegfx::B2DRange FilledRectanglePrimitive2D::getB2DRange( + const geometry::ViewInformation2D& /*rViewInformation*/) const +{ + return getB2DRange(); +} + +sal_uInt32 FilledRectanglePrimitive2D::getPrimitive2DID() const +{ + return PRIMITIVE2D_ID_FILLEDRECTANGLEPRIMITIVE2D; +} + +void FilledRectanglePrimitive2D::get2DDecomposition( + Primitive2DDecompositionVisitor& rVisitor, + const geometry::ViewInformation2D& /*rViewInformation*/) const +{ + if (getB2DRange().isEmpty()) + { + // no geometry, done + return; + } + + const basegfx::B2DPolygon aPolygon(basegfx::utils::createPolygonFromRect(getB2DRange())); + Primitive2DContainer aSequence + = { new PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aPolygon), getBColor()) }; + rVisitor.visit(aSequence); +} + } // end drawinglayer::primitive2d namespace /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |