From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- include/svx/ColorSets.hxx | 122 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 include/svx/ColorSets.hxx (limited to 'include/svx/ColorSets.hxx') diff --git a/include/svx/ColorSets.hxx b/include/svx/ColorSets.hxx new file mode 100644 index 000000000..eace8ca26 --- /dev/null +++ b/include/svx/ColorSets.hxx @@ -0,0 +1,122 @@ +/* -*- 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/. + * + */ + +#ifndef INCLUDED_SVX_COLORSETS_HXX +#define INCLUDED_SVX_COLORSETS_HXX + +#include + +#include +#include +#include +#include + +typedef struct _xmlTextWriter* xmlTextWriterPtr; +class SdrPage; + +namespace svx +{ + +class ColorSet +{ + OUString maColorSetName; + std::vector maColors; +public: + ColorSet(OUString const & aName); + + void add(sal_uInt32 nIndex, ::Color aColorData) + { + maColors[nIndex] = aColorData; + } + + const OUString& getName() const + { + return maColorSetName; + } + const Color& getColor(sal_uInt32 nIndex) const + { + return maColors[nIndex]; + } + + void dumpAsXml(xmlTextWriterPtr pWriter) const; +}; + +class SVXCORE_DLLPUBLIC ColorSets +{ + std::vector maColorSets; +public: + ColorSets(); + ~ColorSets(); + + void init(); + const std::vector& getColorSets() const + { + return maColorSets; + } + + const ColorSet& getColorSet(sal_uInt32 nIndex) + { + return maColorSets[nIndex]; + } + + const ColorSet& getColorSet(std::u16string_view rName); +}; + +/// Offsets into the color list of a theme. +enum class ThemeColorType +{ + DK1 = 0, + LT1 = 1, + DK2 = 2, + LT2 = 3, + ACCENT1 = 4, + ACCENT2 = 5, + ACCENT3 = 6, + ACCENT4 = 7, + ACCENT5 = 8, + ACCENT6 = 9, + HLINK = 10, + FOLHLINK = 11, +}; + +/// A named theme has a named color set. +class SVXCORE_DLLPUBLIC Theme +{ + OUString maName; + std::unique_ptr mpColorSet; + +public: + Theme(OUString const& rName); + ~Theme(); + + void SetColorSet(std::unique_ptr pColorSet); + ColorSet* GetColorSet(); + + void SetName(const OUString& rName); + const OUString& GetName() const; + + void dumpAsXml(xmlTextWriterPtr pWriter) const; + + void ToAny(css::uno::Any& rVal) const; + + static std::unique_ptr FromAny(const css::uno::Any& rVal); + + void UpdateSdrPage(const SdrPage* pPage); + + std::vector GetColors() const; + + Color GetColor(ThemeColorType eType) const; +}; + +} // end of namespace svx + +#endif // INCLUDED_SVX_COLORSETS_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3