diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/drawinglayer/primitive2d/CommonTypes.hxx | 31 | ||||
-rw-r--r-- | include/drawinglayer/primitive2d/Primitive2DContainer.hxx | 92 | ||||
-rw-r--r-- | include/drawinglayer/primitive2d/Primitive2DVisitor.hxx | 41 | ||||
-rw-r--r-- | include/drawinglayer/primitive2d/Tools.hxx | 47 | ||||
-rw-r--r-- | include/drawinglayer/primitive2d/baseprimitive2d.hxx | 87 |
5 files changed, 214 insertions, 84 deletions
diff --git a/include/drawinglayer/primitive2d/CommonTypes.hxx b/include/drawinglayer/primitive2d/CommonTypes.hxx new file mode 100644 index 000000000000..a7ef629fc98f --- /dev/null +++ b/include/drawinglayer/primitive2d/CommonTypes.hxx @@ -0,0 +1,31 @@ +/* -*- 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 <com/sun/star/graphic/XPrimitive2D.hpp> + +namespace drawinglayer::primitive2d +{ +typedef css::uno::Reference<css::graphic::XPrimitive2D> Primitive2DReference; +typedef css::uno::Sequence<Primitive2DReference> Primitive2DSequence; + +} // end of namespace drawinglayer::primitive2d + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/drawinglayer/primitive2d/Primitive2DContainer.hxx b/include/drawinglayer/primitive2d/Primitive2DContainer.hxx new file mode 100644 index 000000000000..4b852f340a14 --- /dev/null +++ b/include/drawinglayer/primitive2d/Primitive2DContainer.hxx @@ -0,0 +1,92 @@ +/* -*- 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/CommonTypes.hxx> +#include <drawinglayer/primitive2d/Primitive2DVisitor.hxx> + +#include <basegfx/range/b2drange.hxx> +#include <deque> + +namespace drawinglayer::geometry +{ +class ViewInformation2D; +} + +namespace drawinglayer::primitive2d +{ +class SAL_WARN_UNUSED DRAWINGLAYER_DLLPUBLIC Primitive2DContainer + : public std::deque<Primitive2DReference>, + public Primitive2DDecompositionVisitor +{ +public: + explicit Primitive2DContainer() {} + explicit Primitive2DContainer(size_type count) + : deque(count) + { + } + virtual ~Primitive2DContainer() override; + Primitive2DContainer(const Primitive2DContainer& other) + : deque(other) + { + } + Primitive2DContainer(Primitive2DContainer&& other) noexcept + : deque(std::move(other)) + { + } + Primitive2DContainer(const std::deque<Primitive2DReference>& other) + : deque(other) + { + } + Primitive2DContainer(std::initializer_list<Primitive2DReference> init) + : deque(init) + { + } + template <class Iter> + Primitive2DContainer(Iter first, Iter last) + : deque(first, last) + { + } + + virtual void append(const Primitive2DReference&) override; + virtual void append(const Primitive2DContainer& rSource) override; + virtual void append(Primitive2DContainer&& rSource) override; + void append(const Primitive2DSequence& rSource); + Primitive2DContainer& operator=(const Primitive2DContainer& r) + { + deque::operator=(r); + return *this; + } + Primitive2DContainer& operator=(Primitive2DContainer&& r) noexcept + { + deque::operator=(std::move(r)); + return *this; + } + bool operator==(const Primitive2DContainer& rB) const; + bool operator!=(const Primitive2DContainer& rB) const { return !operator==(rB); } + basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& aViewInformation) const; + Primitive2DContainer maybeInvert(bool bInvert = false) const; +}; + +} // end of namespace drawinglayer::primitive2d + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/drawinglayer/primitive2d/Primitive2DVisitor.hxx b/include/drawinglayer/primitive2d/Primitive2DVisitor.hxx new file mode 100644 index 000000000000..dfe04b32a320 --- /dev/null +++ b/include/drawinglayer/primitive2d/Primitive2DVisitor.hxx @@ -0,0 +1,41 @@ +/* -*- 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/CommonTypes.hxx> + +namespace drawinglayer::primitive2d +{ +class Primitive2DContainer; + +// Visitor class for walking a tree of Primitive2DReference +class DRAWINGLAYER_DLLPUBLIC Primitive2DDecompositionVisitor +{ +public: + virtual void append(const Primitive2DReference&) = 0; + virtual void append(const Primitive2DContainer&) = 0; + virtual void append(Primitive2DContainer&&) = 0; + virtual ~Primitive2DDecompositionVisitor() {} +}; + +} // end of namespace drawinglayer::primitive2d + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/drawinglayer/primitive2d/Tools.hxx b/include/drawinglayer/primitive2d/Tools.hxx new file mode 100644 index 000000000000..fbb6f5717c01 --- /dev/null +++ b/include/drawinglayer/primitive2d/Tools.hxx @@ -0,0 +1,47 @@ +/* -*- 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/CommonTypes.hxx> +#include <basegfx/range/b2drange.hxx> + +namespace drawinglayer::geometry +{ +class ViewInformation2D; +} + +namespace drawinglayer::primitive2d +{ +/// get B2DRange from a given Primitive2DReference +basegfx::B2DRange DRAWINGLAYER_DLLPUBLIC getB2DRangeFromPrimitive2DReference( + const Primitive2DReference& rCandidate, const geometry::ViewInformation2D& aViewInformation); + +/** compare two Primitive2DReferences for equality, including trying to get implementations (BasePrimitive2D) + and using compare operator + */ +bool DRAWINGLAYER_DLLPUBLIC arePrimitive2DReferencesEqual(const Primitive2DReference& rA, + const Primitive2DReference& rB); + +OUString DRAWINGLAYER_DLLPUBLIC idToString(sal_uInt32 nId); + +} // end of namespace drawinglayer::primitive2d + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/drawinglayer/primitive2d/baseprimitive2d.hxx b/include/drawinglayer/primitive2d/baseprimitive2d.hxx index dfe196e2e608..5ac8fc31e1f7 100644 --- a/include/drawinglayer/primitive2d/baseprimitive2d.hxx +++ b/include/drawinglayer/primitive2d/baseprimitive2d.hxx @@ -23,11 +23,11 @@ #include <drawinglayer/drawinglayerdllapi.h> #include <cppuhelper/compbase.hxx> -#include <com/sun/star/graphic/XPrimitive2D.hpp> +#include <drawinglayer/primitive2d/CommonTypes.hxx> +#include <drawinglayer/primitive2d/Primitive2DContainer.hxx> #include <com/sun/star/util/XAccounting.hpp> #include <cppuhelper/basemutex.hxx> #include <basegfx/range/b2drange.hxx> -#include <deque> /** defines for DeclPrimitive2DIDBlock and ImplPrimitive2DIDBlock Added to be able to simply change identification stuff later, e.g. add @@ -47,75 +47,8 @@ class ViewInformation2D; namespace drawinglayer::primitive2d { -/// typedefs for basePrimitive2DImplBase, Primitive2DSequence and Primitive2DReference typedef cppu::WeakComponentImplHelper<css::graphic::XPrimitive2D, css::util::XAccounting> BasePrimitive2DImplBase; -typedef css::uno::Reference<css::graphic::XPrimitive2D> Primitive2DReference; -typedef css::uno::Sequence<Primitive2DReference> Primitive2DSequence; - -class Primitive2DContainer; -// Visitor class for walking a tree of Primitive2DReference in BasePrimitive2D::get2DDecomposition -class DRAWINGLAYER_DLLPUBLIC Primitive2DDecompositionVisitor -{ -public: - virtual void append(const Primitive2DReference&) = 0; - virtual void append(const Primitive2DContainer&) = 0; - virtual void append(Primitive2DContainer&&) = 0; - virtual ~Primitive2DDecompositionVisitor(); -}; - -class SAL_WARN_UNUSED DRAWINGLAYER_DLLPUBLIC Primitive2DContainer - : public std::deque<Primitive2DReference>, - public Primitive2DDecompositionVisitor -{ -public: - explicit Primitive2DContainer() {} - explicit Primitive2DContainer(size_type count) - : deque(count) - { - } - virtual ~Primitive2DContainer() override; - Primitive2DContainer(const Primitive2DContainer& other) - : deque(other) - { - } - Primitive2DContainer(Primitive2DContainer&& other) noexcept - : deque(std::move(other)) - { - } - Primitive2DContainer(const std::deque<Primitive2DReference>& other) - : deque(other) - { - } - Primitive2DContainer(std::initializer_list<Primitive2DReference> init) - : deque(init) - { - } - template <class Iter> - Primitive2DContainer(Iter first, Iter last) - : deque(first, last) - { - } - - virtual void append(const Primitive2DReference&) override; - virtual void append(const Primitive2DContainer& rSource) override; - virtual void append(Primitive2DContainer&& rSource) override; - void append(const Primitive2DSequence& rSource); - Primitive2DContainer& operator=(const Primitive2DContainer& r) - { - deque::operator=(r); - return *this; - } - Primitive2DContainer& operator=(Primitive2DContainer&& r) noexcept - { - deque::operator=(std::move(r)); - return *this; - } - bool operator==(const Primitive2DContainer& rB) const; - bool operator!=(const Primitive2DContainer& rB) const { return !operator==(rB); } - basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& aViewInformation) const; - Primitive2DContainer maybeInvert(bool bInvert = false) const; -}; /** BasePrimitive2D class @@ -189,7 +122,7 @@ public: the parameter ViewInformation2D is the same as the last one. This is usually the case for view-independent primitives which are defined by not using ViewInformation2D in their get2DDecomposition/getB2DRange implementations. - */ +*/ class DRAWINGLAYER_DLLPUBLIC BasePrimitive2D : protected cppu::BaseMutex, public BasePrimitive2DImplBase { @@ -311,20 +244,6 @@ public: const geometry::ViewInformation2D& rViewInformation) const override; }; -// tooling - -/// get B2DRange from a given Primitive2DReference -basegfx::B2DRange DRAWINGLAYER_DLLPUBLIC getB2DRangeFromPrimitive2DReference( - const Primitive2DReference& rCandidate, const geometry::ViewInformation2D& aViewInformation); - -/** compare two Primitive2DReferences for equality, including trying to get implementations (BasePrimitive2D) - and using compare operator - */ -bool DRAWINGLAYER_DLLPUBLIC arePrimitive2DReferencesEqual(const Primitive2DReference& rA, - const Primitive2DReference& rB); - -OUString DRAWINGLAYER_DLLPUBLIC idToString(sal_uInt32 nId); - } // end of namespace drawinglayer::primitive2d #endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_BASEPRIMITIVE2D_HXX |