From 20945a9a4de6684010fd5b3603595e6da543807d Mon Sep 17 00:00:00 2001 From: Kohei Yoshida Date: Wed, 31 Jan 2018 21:27:44 -0500 Subject: Correctly import solid fill color. In orcus, a solid fill type uses the foreground color only and ignores the background color. Also, let's not use the alpha component as it would cause the color to not get rendered at all. Some patches are applied against liborcus in order to adjust the ODF styles import code for this change. These changes will be incorporated in 0.13.3. Change-Id: I9e8c243cc6a7f366de2393e7b7ecf77366f5f9ea Reviewed-on: https://gerrit.libreoffice.org/49071 Reviewed-by: Kohei Yoshida Tested-by: Kohei Yoshida --- ...-of-0-means-fully-transparent.-I-m-sure-2.patch | 50 ++++++++++++++++++++++ ...osed-to-use-the-foreground-color-for-soli.patch | 49 +++++++++++++++++++++ external/liborcus/UnpackedTarball_liborcus.mk | 2 + sc/source/filter/orcus/interface.cxx | 15 ++++--- 4 files changed, 111 insertions(+), 5 deletions(-) create mode 100644 external/liborcus/0001-Alpha-value-of-0-means-fully-transparent.-I-m-sure-2.patch create mode 100644 external/liborcus/0002-We-are-supposed-to-use-the-foreground-color-for-soli.patch diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx index e40a71b..4cfd844 100644 --- a/sc/source/filter/orcus/interface.cxx +++ b/sc/source/filter/orcus/interface.cxx @@ -1148,7 +1148,8 @@ void ScOrcusStyles::fill::applyToItemSet(SfxItemSet& rSet) const return; } - rSet.Put(SvxBrushItem(maBgColor, ATTR_BACKGROUND)); + if (maPattern.equalsIgnoreAsciiCase("solid")) + rSet.Put(SvxBrushItem(maFgColor, ATTR_BACKGROUND)); } ScOrcusStyles::protection::protection(): @@ -1574,15 +1575,19 @@ void ScOrcusStyles::set_fill_pattern_type(const char* s, size_t n) maCurrentFill.mbHasFillAttr = true; } -void ScOrcusStyles::set_fill_fg_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) +void ScOrcusStyles::set_fill_fg_color( + orcus::spreadsheet::color_elem_t /*alpha*/, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) { - maCurrentFill.maFgColor = Color(alpha, red, green, blue); + // Ignore the alpha element for now. + maCurrentFill.maFgColor = Color(red, green, blue); maCurrentFill.mbHasFillAttr = true; } -void ScOrcusStyles::set_fill_bg_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) +void ScOrcusStyles::set_fill_bg_color( + orcus::spreadsheet::color_elem_t /*alpha*/, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) { - maCurrentFill.maBgColor = Color(alpha, red, green, blue); + // Ignore the alpha element for now. + maCurrentFill.maBgColor = Color(red, green, blue); maCurrentFill.mbHasFillAttr = true; } -- cgit v1.1