summaryrefslogtreecommitdiff
path: root/include/drawinglayer
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2020-04-02 14:23:08 +0200
committerTomaž Vajngerl <quikee@gmail.com>2020-04-03 17:31:55 +0200
commitab5ef15366b473db1068cc5a9e402c4f4f2e6fcd (patch)
treec3fd8b42daa20bbe3fdfa13115bab9d2bb2c5bcc /include/drawinglayer
parent60797d61e4d8641a4177089b204c1af8c8a3b594 (diff)
split up polypolygonprimitive2d.hxx into separate files
This patch splits the polypolygonprimitive2d.hxx into: - PolyPolygonColorPrimitive2D.hxx - PolyPolygonGradientPrimitive2D.hxx - PolyPolygonGraphicPrimitive2D.hxx - PolyPolygonHairlinePrimitive2D.hxx - PolyPolygonHatchPrimitive2D.hxx - PolyPolygonMarkerPrimitive2D.hxx - PolyPolygonSelectionPrimitive2D.hxx - PolyPolygonStrokePrimitive2D.hxx ... and fixes the include files and pre-compiled headers Change-Id: I23982e0c81e8992f69e14cbac8e86858266b9999 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91603 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'include/drawinglayer')
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx67
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonGradientPrimitive2D.hxx76
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonGraphicPrimitive2D.hxx73
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonHairlinePrimitive2D.hxx79
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonHatchPrimitive2D.hxx83
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonMarkerPrimitive2D.hxx88
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonSelectionPrimitive2D.hxx85
-rw-r--r--include/drawinglayer/primitive2d/PolyPolygonStrokePrimitive2D.hxx87
-rw-r--r--include/drawinglayer/primitive2d/polypolygonprimitive2d.hxx415
9 files changed, 638 insertions, 415 deletions
diff --git a/include/drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx
new file mode 100644
index 000000000000..8bb4000d12b8
--- /dev/null
+++ b/include/drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx
@@ -0,0 +1,67 @@
+/* -*- 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 .
+ */
+
+#pragma once
+
+#include <drawinglayer/drawinglayerdllapi.h>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/color/bcolor.hxx>
+
+namespace drawinglayer::primitive2d
+{
+/** PolyPolygonColorPrimitive2D class
+
+ This primitive defines a tools::PolyPolygon filled with a single color.
+ This is one of the non-decomposable primitives, so a renderer
+ should process it.
+ */
+class DRAWINGLAYER_DLLPUBLIC PolyPolygonColorPrimitive2D final : public BasePrimitive2D
+{
+private:
+ /// the tools::PolyPolygon geometry
+ basegfx::B2DPolyPolygon maPolyPolygon;
+
+ /// the polygon fill color
+ basegfx::BColor maBColor;
+
+public:
+ /// constructor
+ PolyPolygonColorPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const basegfx::BColor& rBColor);
+
+ /// data read access
+ const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
+ const basegfx::BColor& getBColor() const { return maBColor; }
+
+ /// compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ /// get range
+ virtual basegfx::B2DRange
+ getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+
+ /// provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+};
+
+} // end of namespace primitive2d::drawinglayer
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/drawinglayer/primitive2d/PolyPolygonGradientPrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonGradientPrimitive2D.hxx
new file mode 100644
index 000000000000..3b20921b5ccb
--- /dev/null
+++ b/include/drawinglayer/primitive2d/PolyPolygonGradientPrimitive2D.hxx
@@ -0,0 +1,76 @@
+/* -*- 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 .
+ */
+
+#pragma once
+
+#include <drawinglayer/drawinglayerdllapi.h>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+
+namespace drawinglayer::primitive2d
+{
+/** PolyPolygonColorPrimitive2D class
+
+ This primitive defines a tools::PolyPolygon filled with a gradient. The
+ decomosition will create a MaskPrimitive2D containing a
+ FillGradientPrimitive2D.
+ */
+class DRAWINGLAYER_DLLPUBLIC PolyPolygonGradientPrimitive2D final
+ : public BufferedDecompositionPrimitive2D
+{
+private:
+ /// the tools::PolyPolygon geometry
+ basegfx::B2DPolyPolygon maPolyPolygon;
+
+ /// the definition range
+ basegfx::B2DRange maDefinitionRange;
+
+ /// the gradient definition
+ attribute::FillGradientAttribute maFillGradient;
+
+ /// local decomposition.
+ virtual void
+ create2DDecomposition(Primitive2DContainer& rContainer,
+ const geometry::ViewInformation2D& rViewInformation) const override;
+
+public:
+ /// constructors. The one without definition range will use output range as definition range
+ PolyPolygonGradientPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const attribute::FillGradientAttribute& rFillGradient);
+ PolyPolygonGradientPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const basegfx::B2DRange& rDefinitionRange,
+ const attribute::FillGradientAttribute& rFillGradient);
+
+ /// data read access
+ const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
+ const basegfx::B2DRange& getDefinitionRange() const { return maDefinitionRange; }
+ const attribute::FillGradientAttribute& getFillGradient() const { return maFillGradient; }
+
+ /// compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ /// provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+};
+
+} // end of namespace primitive2d::drawinglayer
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/drawinglayer/primitive2d/PolyPolygonGraphicPrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonGraphicPrimitive2D.hxx
new file mode 100644
index 000000000000..0b3910936dd5
--- /dev/null
+++ b/include/drawinglayer/primitive2d/PolyPolygonGraphicPrimitive2D.hxx
@@ -0,0 +1,73 @@
+/* -*- 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 .
+ */
+
+#pragma once
+
+#include <drawinglayer/drawinglayerdllapi.h>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <drawinglayer/attribute/fillgraphicattribute.hxx>
+
+namespace drawinglayer::primitive2d
+{
+/** PolyPolygonGraphicPrimitive2D class
+
+ This primitive defines a tools::PolyPolygon filled with bitmap data
+ (including transparence). The decomosition will create a MaskPrimitive2D
+ containing a FillGraphicPrimitive2D.
+ */
+class DRAWINGLAYER_DLLPUBLIC PolyPolygonGraphicPrimitive2D final
+ : public BufferedDecompositionPrimitive2D
+{
+private:
+ /// the tools::PolyPolygon geometry
+ basegfx::B2DPolyPolygon maPolyPolygon;
+
+ /// the definition range
+ basegfx::B2DRange maDefinitionRange;
+
+ /// the bitmap fill definition (may include tiling)
+ attribute::FillGraphicAttribute maFillGraphic;
+
+ /// local decomposition.
+ virtual void
+ create2DDecomposition(Primitive2DContainer& rContainer,
+ const geometry::ViewInformation2D& rViewInformation) const override;
+
+public:
+ PolyPolygonGraphicPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const basegfx::B2DRange& rDefinitionRange,
+ const attribute::FillGraphicAttribute& rFillGraphic);
+
+ /// data read access
+ const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
+ const basegfx::B2DRange& getDefinitionRange() const { return maDefinitionRange; }
+ const attribute::FillGraphicAttribute& getFillGraphic() const { return maFillGraphic; }
+
+ /// compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ /// provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+};
+
+} // end of namespace primitive2d::drawinglayer
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/drawinglayer/primitive2d/PolyPolygonHairlinePrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonHairlinePrimitive2D.hxx
new file mode 100644
index 000000000000..482345140306
--- /dev/null
+++ b/include/drawinglayer/primitive2d/PolyPolygonHairlinePrimitive2D.hxx
@@ -0,0 +1,79 @@
+/* -*- 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 .
+ */
+
+#pragma once
+
+#include <drawinglayer/drawinglayerdllapi.h>
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <drawinglayer/attribute/fillgraphicattribute.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <drawinglayer/attribute/lineattribute.hxx>
+#include <drawinglayer/attribute/strokeattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+#include <drawinglayer/attribute/fillhatchattribute.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <basegfx/color/bcolor.hxx>
+
+namespace drawinglayer::primitive2d
+{
+/** PolyPolygonHairlinePrimitive2D class
+
+ This primitive defines a multi-PolygonHairlinePrimitive2D and is
+ just for convenience. The definition is not different from the single
+ defined PolygonHairlinePrimitive2Ds.
+ */
+class DRAWINGLAYER_DLLPUBLIC PolyPolygonHairlinePrimitive2D final
+ : public BufferedDecompositionPrimitive2D
+{
+private:
+ /// the hairline geometry
+ basegfx::B2DPolyPolygon maPolyPolygon;
+
+ /// the hairline color
+ basegfx::BColor maBColor;
+
+ /// local decomposition.
+ virtual void
+ create2DDecomposition(Primitive2DContainer& rContainer,
+ const geometry::ViewInformation2D& rViewInformation) const override;
+
+public:
+ /// constructor
+ PolyPolygonHairlinePrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const basegfx::BColor& rBColor);
+
+ /// data read access
+ const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
+ const basegfx::BColor& getBColor() const { return maBColor; }
+
+ /// compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ /// get range
+ virtual basegfx::B2DRange
+ getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+
+ /// provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+};
+
+} // end of namespace primitive2d::drawinglayer
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/drawinglayer/primitive2d/PolyPolygonHatchPrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonHatchPrimitive2D.hxx
new file mode 100644
index 000000000000..4078c87858f3
--- /dev/null
+++ b/include/drawinglayer/primitive2d/PolyPolygonHatchPrimitive2D.hxx
@@ -0,0 +1,83 @@
+/* -*- 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 .
+ */
+
+#pragma once
+
+#include <drawinglayer/drawinglayerdllapi.h>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/color/bcolor.hxx>
+#include <drawinglayer/attribute/fillhatchattribute.hxx>
+
+namespace drawinglayer::primitive2d
+{
+/** PolyPolygonHatchPrimitive2D class
+
+ This primitive defines a tools::PolyPolygon filled with a hatch. The
+ decomosition will create a MaskPrimitive2D containing a
+ FillHatchPrimitive2D.
+ */
+class DRAWINGLAYER_DLLPUBLIC PolyPolygonHatchPrimitive2D final
+ : public BufferedDecompositionPrimitive2D
+{
+private:
+ /// the tools::PolyPolygon geometry
+ basegfx::B2DPolyPolygon maPolyPolygon;
+
+ /// the definition range
+ basegfx::B2DRange maDefinitionRange;
+
+ /// the hatch background color (if used)
+ basegfx::BColor maBackgroundColor;
+
+ /// the hatch definition
+ attribute::FillHatchAttribute maFillHatch;
+
+ /// local decomposition.
+ virtual void
+ create2DDecomposition(Primitive2DContainer& rContainer,
+ const geometry::ViewInformation2D& rViewInformation) const override;
+
+public:
+ /// constructors. The one without definition range will use output range as definition range
+ PolyPolygonHatchPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const basegfx::BColor& rBackgroundColor,
+ const attribute::FillHatchAttribute& rFillHatch);
+ PolyPolygonHatchPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const basegfx::B2DRange& rDefinitionRange,
+ const basegfx::BColor& rBackgroundColor,
+ const attribute::FillHatchAttribute& rFillHatch);
+
+ /// data read access
+ const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
+ const basegfx::B2DRange& getDefinitionRange() const { return maDefinitionRange; }
+ const basegfx::BColor& getBackgroundColor() const { return maBackgroundColor; }
+ const attribute::FillHatchAttribute& getFillHatch() const { return maFillHatch; }
+
+ /// compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ /// provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+};
+
+} // end of namespace primitive2d::drawinglayer
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/drawinglayer/primitive2d/PolyPolygonMarkerPrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonMarkerPrimitive2D.hxx
new file mode 100644
index 000000000000..dabd673ab1fa
--- /dev/null
+++ b/include/drawinglayer/primitive2d/PolyPolygonMarkerPrimitive2D.hxx
@@ -0,0 +1,88 @@
+/* -*- 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 .
+ */
+
+#pragma once
+
+#include <drawinglayer/drawinglayerdllapi.h>
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <drawinglayer/attribute/fillgraphicattribute.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <drawinglayer/attribute/lineattribute.hxx>
+#include <drawinglayer/attribute/strokeattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+#include <drawinglayer/attribute/fillhatchattribute.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <basegfx/color/bcolor.hxx>
+
+namespace drawinglayer::primitive2d
+{
+// PolyPolygonMarkerPrimitive2D class
+
+/** PolyPolygonMarkerPrimitive2D class
+
+ This primitive defines a multi-PolygonMarkerPrimitive2D and is
+ just for convenience. The definition is not different from the single
+ defined PolygonMarkerPrimitive2Ds.
+ */
+class DRAWINGLAYER_DLLPUBLIC PolyPolygonMarkerPrimitive2D final
+ : public BufferedDecompositionPrimitive2D
+{
+private:
+ /// the marker hairline geometry
+ basegfx::B2DPolyPolygon maPolyPolygon;
+
+ /// the two colors
+ basegfx::BColor maRGBColorA;
+ basegfx::BColor maRGBColorB;
+
+ /// the dash distance in 'pixels'
+ double mfDiscreteDashLength;
+
+ /// local decomposition.
+ virtual void
+ create2DDecomposition(Primitive2DContainer& rContainer,
+ const geometry::ViewInformation2D& rViewInformation) const override;
+
+public:
+ /// constructor
+ PolyPolygonMarkerPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const basegfx::BColor& rRGBColorA,
+ const basegfx::BColor& rRGBColorB, double fDiscreteDashLength);
+
+ // data read access
+ const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
+ const basegfx::BColor& getRGBColorA() const { return maRGBColorA; }
+ const basegfx::BColor& getRGBColorB() const { return maRGBColorB; }
+ double getDiscreteDashLength() const { return mfDiscreteDashLength; }
+
+ /// compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ /// get range
+ virtual basegfx::B2DRange
+ getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+
+ /// provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+};
+
+} // end of namespace primitive2d::drawinglayer
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/drawinglayer/primitive2d/PolyPolygonSelectionPrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonSelectionPrimitive2D.hxx
new file mode 100644
index 000000000000..d88d7f66fc9f
--- /dev/null
+++ b/include/drawinglayer/primitive2d/PolyPolygonSelectionPrimitive2D.hxx
@@ -0,0 +1,85 @@
+/* -*- 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 .
+ */
+
+#pragma once
+
+#include <drawinglayer/drawinglayerdllapi.h>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/color/bcolor.hxx>
+
+namespace drawinglayer::primitive2d
+{
+/** PolyPolygonSelectionPrimitive2D class
+
+ This primitive defines a tools::PolyPolygon which gets filled with a defined color
+ and a defined transparence, but also gets extended ('grown') by the given
+ discrete size (thus being a view-dependent primitive)
+ */
+class DRAWINGLAYER_DLLPUBLIC PolyPolygonSelectionPrimitive2D final
+ : public DiscreteMetricDependentPrimitive2D
+{
+private:
+ /// the tools::PolyPolygon geometry
+ basegfx::B2DPolyPolygon maPolyPolygon;
+
+ /// the color
+ basegfx::BColor maColor;
+
+ /// the transparence [0.0 .. 1.0]
+ double mfTransparence;
+
+ /// the discrete grow size ('pixels'), only positive values allowed
+ double mfDiscreteGrow;
+
+ /// draw polygons filled when fill is set
+ bool mbFill : 1;
+
+ /// local decomposition.
+ virtual void
+ create2DDecomposition(Primitive2DContainer& rContainer,
+ const geometry::ViewInformation2D& rViewInformation) const override;
+
+public:
+ /// constructor
+ PolyPolygonSelectionPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const basegfx::BColor& rColor, double fTransparence,
+ double fDiscreteGrow, bool bFill);
+
+ /// data read access
+ const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
+ const basegfx::BColor& getColor() const { return maColor; }
+ double getTransparence() const { return mfTransparence; }
+ double getDiscreteGrow() const { return mfDiscreteGrow; }
+ bool getFill() const { return mbFill; }
+
+ /// compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ /// get range
+ virtual basegfx::B2DRange
+ getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+
+ /// provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+};
+} // end of namespace primitive2d::drawinglayer
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/drawinglayer/primitive2d/PolyPolygonStrokePrimitive2D.hxx b/include/drawinglayer/primitive2d/PolyPolygonStrokePrimitive2D.hxx
new file mode 100644
index 000000000000..8463c80783e1
--- /dev/null
+++ b/include/drawinglayer/primitive2d/PolyPolygonStrokePrimitive2D.hxx
@@ -0,0 +1,87 @@
+/* -*- 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 .
+ */
+
+#pragma once
+
+#include <drawinglayer/drawinglayerdllapi.h>
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+#include <drawinglayer/attribute/fillgraphicattribute.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <drawinglayer/attribute/lineattribute.hxx>
+#include <drawinglayer/attribute/strokeattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+#include <drawinglayer/attribute/fillhatchattribute.hxx>
+#include <drawinglayer/primitive2d/primitivetools2d.hxx>
+#include <basegfx/color/bcolor.hxx>
+
+namespace drawinglayer::primitive2d
+{
+/** PolyPolygonStrokePrimitive2D class
+
+ This primitive defines a multi-PolygonStrokePrimitive2D and is
+ just for convenience. The definition is not different from the single
+ defined PolygonStrokePrimitive2Ds.
+ */
+class DRAWINGLAYER_DLLPUBLIC PolyPolygonStrokePrimitive2D final
+ : public BufferedDecompositionPrimitive2D
+{
+private:
+ /// the line geometry
+ basegfx::B2DPolyPolygon maPolyPolygon;
+
+ /// the line attributes like width, join and color
+ attribute::LineAttribute maLineAttribute;
+
+ /// the line stroking (if used)
+ attribute::StrokeAttribute maStrokeAttribute;
+
+ /// local decomposition.
+ virtual void
+ create2DDecomposition(Primitive2DContainer& rContainer,
+ const geometry::ViewInformation2D& rViewInformation) const override;
+
+public:
+ /// constructor
+ PolyPolygonStrokePrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const attribute::LineAttribute& rLineAttribute,
+ const attribute::StrokeAttribute& rStrokeAttribute);
+
+ PolyPolygonStrokePrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const attribute::LineAttribute& rLineAttribute);
+
+ /// data read access
+ const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
+ const attribute::LineAttribute& getLineAttribute() const { return maLineAttribute; }
+ const attribute::StrokeAttribute& getStrokeAttribute() const { return maStrokeAttribute; }
+
+ /// compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
+
+ /// get range
+ virtual basegfx::B2DRange
+ getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
+
+ /// provide unique ID
+ virtual sal_uInt32 getPrimitive2DID() const override;
+};
+
+} // end of namespace primitive2d::drawinglayer
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/drawinglayer/primitive2d/polypolygonprimitive2d.hxx b/include/drawinglayer/primitive2d/polypolygonprimitive2d.hxx
deleted file mode 100644
index bb3637aad394..000000000000
--- a/include/drawinglayer/primitive2d/polypolygonprimitive2d.hxx
+++ /dev/null
@@ -1,415 +0,0 @@
-/* -*- 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 .
- */
-
-#pragma once
-
-#include <drawinglayer/drawinglayerdllapi.h>
-
-#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/attribute/fillgraphicattribute.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <drawinglayer/attribute/lineattribute.hxx>
-#include <drawinglayer/attribute/strokeattribute.hxx>
-#include <drawinglayer/attribute/fillgradientattribute.hxx>
-#include <drawinglayer/attribute/fillhatchattribute.hxx>
-#include <drawinglayer/primitive2d/primitivetools2d.hxx>
-#include <basegfx/color/bcolor.hxx>
-
-namespace drawinglayer::primitive2d
-{
-// PolyPolygonHairlinePrimitive2D class
-
-/** PolyPolygonHairlinePrimitive2D class
-
- This primitive defines a multi-PolygonHairlinePrimitive2D and is
- just for convenience. The definition is not different from the single
- defined PolygonHairlinePrimitive2Ds.
- */
-class DRAWINGLAYER_DLLPUBLIC PolyPolygonHairlinePrimitive2D final
- : public BufferedDecompositionPrimitive2D
-{
-private:
- /// the hairline geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the hairline color
- basegfx::BColor maBColor;
-
- /// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
-
-public:
- /// constructor
- PolyPolygonHairlinePrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::BColor& rBColor);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const basegfx::BColor& getBColor() const { return maBColor; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
-
- /// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
-
- /// provide unique ID
- virtual sal_uInt32 getPrimitive2DID() const override;
-};
-
-// PolyPolygonMarkerPrimitive2D class
-
-/** PolyPolygonMarkerPrimitive2D class
-
- This primitive defines a multi-PolygonMarkerPrimitive2D and is
- just for convenience. The definition is not different from the single
- defined PolygonMarkerPrimitive2Ds.
- */
-class DRAWINGLAYER_DLLPUBLIC PolyPolygonMarkerPrimitive2D final
- : public BufferedDecompositionPrimitive2D
-{
-private:
- /// the marker hairline geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the two colors
- basegfx::BColor maRGBColorA;
- basegfx::BColor maRGBColorB;
-
- /// the dash distance in 'pixels'
- double mfDiscreteDashLength;
-
- /// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
-
-public:
- /// constructor
- PolyPolygonMarkerPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::BColor& rRGBColorA,
- const basegfx::BColor& rRGBColorB, double fDiscreteDashLength);
-
- // data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const basegfx::BColor& getRGBColorA() const { return maRGBColorA; }
- const basegfx::BColor& getRGBColorB() const { return maRGBColorB; }
- double getDiscreteDashLength() const { return mfDiscreteDashLength; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
-
- /// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
-
- /// provide unique ID
- virtual sal_uInt32 getPrimitive2DID() const override;
-};
-
-// PolyPolygonStrokePrimitive2D class
-
-/** PolyPolygonStrokePrimitive2D class
-
- This primitive defines a multi-PolygonStrokePrimitive2D and is
- just for convenience. The definition is not different from the single
- defined PolygonStrokePrimitive2Ds.
- */
-class DRAWINGLAYER_DLLPUBLIC PolyPolygonStrokePrimitive2D final
- : public BufferedDecompositionPrimitive2D
-{
-private:
- /// the line geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the line attributes like width, join and color
- attribute::LineAttribute maLineAttribute;
-
- /// the line stroking (if used)
- attribute::StrokeAttribute maStrokeAttribute;
-
- /// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
-
-public:
- /// constructor
- PolyPolygonStrokePrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::LineAttribute& rLineAttribute,
- const attribute::StrokeAttribute& rStrokeAttribute);
-
- PolyPolygonStrokePrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::LineAttribute& rLineAttribute);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const attribute::LineAttribute& getLineAttribute() const { return maLineAttribute; }
- const attribute::StrokeAttribute& getStrokeAttribute() const { return maStrokeAttribute; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
-
- /// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
-
- /// provide unique ID
- virtual sal_uInt32 getPrimitive2DID() const override;
-};
-
-// PolyPolygonColorPrimitive2D class
-
-/** PolyPolygonColorPrimitive2D class
-
- This primitive defines a tools::PolyPolygon filled with a single color.
- This is one of the non-decomposable primitives, so a renderer
- should process it.
- */
-class DRAWINGLAYER_DLLPUBLIC PolyPolygonColorPrimitive2D final : public BasePrimitive2D
-{
-private:
- /// the tools::PolyPolygon geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the polygon fill color
- basegfx::BColor maBColor;
-
-public:
- /// constructor
- PolyPolygonColorPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::BColor& rBColor);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const basegfx::BColor& getBColor() const { return maBColor; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
-
- /// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
-
- /// provide unique ID
- virtual sal_uInt32 getPrimitive2DID() const override;
-};
-
-// PolyPolygonGradientPrimitive2D class
-
-/** PolyPolygonColorPrimitive2D class
-
- This primitive defines a tools::PolyPolygon filled with a gradient. The
- decomosition will create a MaskPrimitive2D containing a
- FillGradientPrimitive2D.
- */
-class DRAWINGLAYER_DLLPUBLIC PolyPolygonGradientPrimitive2D final
- : public BufferedDecompositionPrimitive2D
-{
-private:
- /// the tools::PolyPolygon geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the definition range
- basegfx::B2DRange maDefinitionRange;
-
- /// the gradient definition
- attribute::FillGradientAttribute maFillGradient;
-
- /// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
-
-public:
- /// constructors. The one without definition range will use output range as definition range
- PolyPolygonGradientPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
- const attribute::FillGradientAttribute& rFillGradient);
- PolyPolygonGradientPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::B2DRange& rDefinitionRange,
- const attribute::FillGradientAttribute& rFillGradient);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const basegfx::B2DRange& getDefinitionRange() const { return maDefinitionRange; }
- const attribute::FillGradientAttribute& getFillGradient() const { return maFillGradient; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
-
- /// provide unique ID
- virtual sal_uInt32 getPrimitive2DID() const override;
-};
-
-// PolyPolygonHatchPrimitive2D class
-
-/** PolyPolygonHatchPrimitive2D class
-
- This primitive defines a tools::PolyPolygon filled with a hatch. The
- decomosition will create a MaskPrimitive2D containing a
- FillHatchPrimitive2D.
- */
-class DRAWINGLAYER_DLLPUBLIC PolyPolygonHatchPrimitive2D final
- : public BufferedDecompositionPrimitive2D
-{
-private:
- /// the tools::PolyPolygon geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the definition range
- basegfx::B2DRange maDefinitionRange;
-
- /// the hatch background color (if used)
- basegfx::BColor maBackgroundColor;
-
- /// the hatch definition
- attribute::FillHatchAttribute maFillHatch;
-
- /// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
-
-public:
- /// constructors. The one without definition range will use output range as definition range
- PolyPolygonHatchPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::BColor& rBackgroundColor,
- const attribute::FillHatchAttribute& rFillHatch);
- PolyPolygonHatchPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::B2DRange& rDefinitionRange,
- const basegfx::BColor& rBackgroundColor,
- const attribute::FillHatchAttribute& rFillHatch);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const basegfx::B2DRange& getDefinitionRange() const { return maDefinitionRange; }
- const basegfx::BColor& getBackgroundColor() const { return maBackgroundColor; }
- const attribute::FillHatchAttribute& getFillHatch() const { return maFillHatch; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
-
- /// provide unique ID
- virtual sal_uInt32 getPrimitive2DID() const override;
-};
-
-// PolyPolygonGraphicPrimitive2D class
-
-/** PolyPolygonGraphicPrimitive2D class
-
- This primitive defines a tools::PolyPolygon filled with bitmap data
- (including transparence). The decomosition will create a MaskPrimitive2D
- containing a FillGraphicPrimitive2D.
- */
-class DRAWINGLAYER_DLLPUBLIC PolyPolygonGraphicPrimitive2D final
- : public BufferedDecompositionPrimitive2D
-{
-private:
- /// the tools::PolyPolygon geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the definition range
- basegfx::B2DRange maDefinitionRange;
-
- /// the bitmap fill definition (may include tiling)
- attribute::FillGraphicAttribute maFillGraphic;
-
- /// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
-
-public:
- PolyPolygonGraphicPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::B2DRange& rDefinitionRange,
- const attribute::FillGraphicAttribute& rFillGraphic);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const basegfx::B2DRange& getDefinitionRange() const { return maDefinitionRange; }
- const attribute::FillGraphicAttribute& getFillGraphic() const { return maFillGraphic; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
-
- /// provide unique ID
- virtual sal_uInt32 getPrimitive2DID() const override;
-};
-
-// PolyPolygonSelectionPrimitive2D class
-
-/** PolyPolygonSelectionPrimitive2D class
-
- This primitive defines a tools::PolyPolygon which gets filled with a defined color
- and a defined transparence, but also gets extended ('grown') by the given
- discrete size (thus being a view-dependent primitive)
- */
-class DRAWINGLAYER_DLLPUBLIC PolyPolygonSelectionPrimitive2D final
- : public DiscreteMetricDependentPrimitive2D
-{
-private:
- /// the tools::PolyPolygon geometry
- basegfx::B2DPolyPolygon maPolyPolygon;
-
- /// the color
- basegfx::BColor maColor;
-
- /// the transparence [0.0 .. 1.0]
- double mfTransparence;
-
- /// the discrete grow size ('pixels'), only positive values allowed
- double mfDiscreteGrow;
-
- /// draw polygons filled when fill is set
- bool mbFill : 1;
-
- /// local decomposition.
- virtual void
- create2DDecomposition(Primitive2DContainer& rContainer,
- const geometry::ViewInformation2D& rViewInformation) const override;
-
-public:
- /// constructor
- PolyPolygonSelectionPrimitive2D(const basegfx::B2DPolyPolygon& rPolyPolygon,
- const basegfx::BColor& rColor, double fTransparence,
- double fDiscreteGrow, bool bFill);
-
- /// data read access
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- const basegfx::BColor& getColor() const { return maColor; }
- double getTransparence() const { return mfTransparence; }
- double getDiscreteGrow() const { return mfDiscreteGrow; }
- bool getFill() const { return mbFill; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const override;
-
- /// get range
- virtual basegfx::B2DRange
- getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override;
-
- /// provide unique ID
- virtual sal_uInt32 getPrimitive2DID() const override;
-};
-} // end of namespace primitive2d::drawinglayer
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */