summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2023-07-30 08:52:44 +0200
committerMiklos Vajna <vmiklos@collabora.com>2023-08-04 12:01:39 +0200
commit2582b4569e0ea5686b3f970a93c198b3f1935f4e (patch)
tree73670f8ebfe48bc503b6debc8024c6f1137cc633 /oox
parent94b5e1fd70a76d10d20bd3859d808d256420180b (diff)
sc: theme color support for sparklines + ODF & OOXML import/export
This changes Sparkline colors to use complex colors instead and adds Sparkline theme color import and export support for ODF and OOXML. Change-Id: I58edd525d50f95199bd4fe7825afb51aaa7fc091 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155113 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit c8d8bf4282cbd04abacfa69ba2cc0fa4300e35e1) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155289 Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'oox')
-rw-r--r--oox/Library_oox.mk1
-rw-r--r--oox/source/drawingml/color.cxx7
-rw-r--r--oox/source/export/ColorExportUtils.cxx55
3 files changed, 62 insertions, 1 deletions
diff --git a/oox/Library_oox.mk b/oox/Library_oox.mk
index 3bf2d607918c..e37df6a393b9 100644
--- a/oox/Library_oox.mk
+++ b/oox/Library_oox.mk
@@ -228,6 +228,7 @@ $(eval $(call gb_Library_add_exception_objects,oox,\
oox/source/dump/oledumper \
oox/source/dump/pptxdumper \
oox/source/export/ColorPropertySet \
+ oox/source/export/ColorExportUtils \
oox/source/export/drawingml \
oox/source/export/DMLPresetShapeExport \
oox/source/export/shapes \
diff --git a/oox/source/drawingml/color.cxx b/oox/source/drawingml/color.cxx
index 1ed2e57b6242..e582d4e53c77 100644
--- a/oox/source/drawingml/color.cxx
+++ b/oox/source/drawingml/color.cxx
@@ -825,9 +825,14 @@ model::ComplexColor Color::createComplexColor(const GraphicHelper& /*rGraphicHel
auto eTheme = getThemeColorType();
aNewComplexColor.setSchemeColor(eTheme);
}
+ else if (meMode == COLOR_RGB)
+ {
+ ::Color aColor(ColorTransparency, lclRgbComponentsToRgb(mnC1, mnC2, mnC3));
+ aNewComplexColor = model::ComplexColor::RGB(aColor);
+ }
else
{
- // TODO
+ // TODO - Add other options
return aNewComplexColor;
}
diff --git a/oox/source/export/ColorExportUtils.cxx b/oox/source/export/ColorExportUtils.cxx
new file mode 100644
index 000000000000..2b9f7baabc53
--- /dev/null
+++ b/oox/source/export/ColorExportUtils.cxx
@@ -0,0 +1,55 @@
+/* -*- 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/.
+ */
+
+#include <sal/config.h>
+#include <array>
+#include <oox/export/ColorExportUtils.hxx>
+#include <docmodel/color/ComplexColor.hxx>
+
+namespace oox
+{
+double convertColorTransformsToTintOrShade(model::ComplexColor const& rComplexColor)
+{
+ sal_Int16 nLumMod = 10'000;
+ sal_Int16 nLumOff = 0;
+
+ for (auto const& rTransform : rComplexColor.getTransformations())
+ {
+ if (rTransform.meType == model::TransformationType::LumMod)
+ nLumMod = rTransform.mnValue;
+ if (rTransform.meType == model::TransformationType::LumOff)
+ nLumOff = rTransform.mnValue;
+ }
+
+ if (nLumMod == 10'000 && nLumOff == 0)
+ return 0.0;
+
+ double fTint = 0.0;
+
+ if (nLumOff > 0) // tint
+ fTint = double(nLumOff) / 10'000.0;
+ else
+ fTint = -double(10'000 - nLumMod) / 10'000.0;
+
+ return fTint;
+}
+
+sal_Int32 convertThemeColorTypeToExcelThemeNumber(model::ThemeColorType eType)
+{
+ if (eType == model::ThemeColorType::Unknown)
+ return -1;
+
+ static constexpr std::array<sal_Int32, 12> constThemeColorMapToXmlMap
+ = { 1, 0, 3, 2, 4, 5, 6, 7, 8, 9, 10, 11 };
+
+ return constThemeColorMapToXmlMap[sal_Int32(eType)];
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */