summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2023-07-30 08:52:44 +0200
committerMike Kaganski <mike.kaganski@collabora.com>2023-08-28 12:41:43 +0200
commit99537f0459ae4143447e122ef1b3aae5a9dbe785 (patch)
treef1be83b0a8f4e0ca73e3fd852834a72d557af98f /oox
parent8c472dcd2bd56cb5cb0e404eccd0b147590be243 (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/+/156106 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Mike Kaganski <mike.kaganski@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 ac130d90350c..f7c96ea1498b 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 cb0929c4fc00..1a9e39f3832d 100644
--- a/oox/source/drawingml/color.cxx
+++ b/oox/source/drawingml/color.cxx
@@ -823,9 +823,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: */