summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorArmin Le Grand (allotropia) <armin.le.grand.extern@allotropia.de>2022-08-31 12:49:50 +0200
committerArmin Le Grand <Armin.Le.Grand@me.com>2022-09-01 12:39:27 +0200
commit08e62dfbc156ef79cd9fa98e54bfba043247af8f (patch)
treeb8b02da93d93ff5e69452c03f88fdbcf452f5088 /include
parent256086fc9b3a00181c7022294712226cd920b2e1 (diff)
Added BufferedDecompositionGroupPrimitive2D
...and adapted GlowPrimitive2D to it as a preparation to use similar to BufferedDecompositionPrimitive2D, but for primitives based on GroupPrimitive2D. Change-Id: Ia1f9a09d4db09238ebbf6ad1303a4cdbdb8baedf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139099 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
Diffstat (limited to 'include')
-rw-r--r--include/drawinglayer/primitive2d/BufferedDecompositionGroupPrimitive2D.hxx69
-rw-r--r--include/drawinglayer/primitive2d/glowprimitive2d.hxx23
2 files changed, 74 insertions, 18 deletions
diff --git a/include/drawinglayer/primitive2d/BufferedDecompositionGroupPrimitive2D.hxx b/include/drawinglayer/primitive2d/BufferedDecompositionGroupPrimitive2D.hxx
new file mode 100644
index 000000000000..b5446c703d2e
--- /dev/null
+++ b/include/drawinglayer/primitive2d/BufferedDecompositionGroupPrimitive2D.hxx
@@ -0,0 +1,69 @@
+/* -*- 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/groupprimitive2d.hxx>
+
+namespace drawinglayer::primitive2d
+{
+/** BufferedDecompositionGroupPrimitive2D class
+
+ Baseclass for all C++ implementations whiich are derived from GroupPrimitive2D
+ which want to buffer the decomposition result
+
+ For discussion please refer to BufferedDecompositionPrimitive2D, this is the same
+ but for GroupPrimitive2D which want to buffer their decomposition
+ */
+class DRAWINGLAYER_DLLPUBLIC BufferedDecompositionGroupPrimitive2D : public GroupPrimitive2D
+{
+private:
+ /// a sequence used for buffering the last create2DDecomposition() result
+ Primitive2DContainer maBuffered2DDecomposition;
+
+protected:
+ /// identical to BufferedDecompositionPrimitive2D, see there please
+ const Primitive2DContainer& getBuffered2DDecomposition() const
+ {
+ return maBuffered2DDecomposition;
+ }
+ void setBuffered2DDecomposition(Primitive2DContainer&& rNew)
+ {
+ maBuffered2DDecomposition = std::move(rNew);
+ }
+
+ /// method which is to be used to implement the local decomposition of a 2D group primitive.
+ virtual void
+ create2DDecomposition(Primitive2DContainer& rContainer,
+ const geometry::ViewInformation2D& rViewInformation) const = 0;
+
+public:
+ /// constructor/destructor. For GroupPrimitive2D we need the child parameter, too.
+ BufferedDecompositionGroupPrimitive2D(Primitive2DContainer&& aChildren);
+
+ /// identical to BufferedDecompositionPrimitive2D, see there please
+ virtual void
+ get2DDecomposition(Primitive2DDecompositionVisitor& rVisitor,
+ const geometry::ViewInformation2D& rViewInformation) const override;
+};
+
+} // end of namespace drawinglayer::primitive2d
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/drawinglayer/primitive2d/glowprimitive2d.hxx b/include/drawinglayer/primitive2d/glowprimitive2d.hxx
index 1fbc5f73652c..6a60c85ad6ae 100644
--- a/include/drawinglayer/primitive2d/glowprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/glowprimitive2d.hxx
@@ -22,16 +22,14 @@
#include <drawinglayer/drawinglayerdllapi.h>
#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
+#include <drawinglayer/primitive2d/BufferedDecompositionGroupPrimitive2D.hxx>
#include <tools/color.hxx>
namespace drawinglayer::primitive2d
{
-class DRAWINGLAYER_DLLPUBLIC GlowPrimitive2D final : public GroupPrimitive2D
+class DRAWINGLAYER_DLLPUBLIC GlowPrimitive2D final : public BufferedDecompositionGroupPrimitive2D
{
private:
- /// a sequence used for buffering the last create2DDecomposition() result
- Primitive2DContainer maBuffered2DDecomposition;
-
/// the Glow color to which all geometry is to be forced; includes alpha
Color maGlowColor;
@@ -49,21 +47,10 @@ private:
const geometry::ViewInformation2D& rViewInformation) const;
protected:
- /** access methods to maBuffered2DDecomposition, same as in
- * BufferedDecompositionPrimitive2D
- */
- const Primitive2DContainer& getBuffered2DDecomposition() const
- {
- return maBuffered2DDecomposition;
- }
- void setBuffered2DDecomposition(Primitive2DContainer&& rNew)
- {
- maBuffered2DDecomposition = std::move(rNew);
- }
-
/** 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;
+ virtual void
+ create2DDecomposition(Primitive2DContainer& rContainer,
+ const geometry::ViewInformation2D& rViewInformation) const override;
public:
/// constructor