diff options
author | Bartosz Kosiorek <gang65@poczta.onet.pl> | 2017-11-25 09:51:58 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-11-30 13:45:16 +0100 |
commit | 5930033f050e933a134a1ff11974b8601d8a7f9a (patch) | |
tree | b56be3b5409ab66f982ccabfbb42fb3d0177be75 | |
parent | f259310a8b9508104e6a0c801bb5b71d38ca4551 (diff) |
tdf#113271 Fix order of color's attributes import.
The order of import color is very important in case of more than one color attributes was provided.
This order (theme -> rgb -> indexed -> auto) is not documented
and was gathered experimentally based on MS Excel 2013.
Information about <fonts>:
https://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.fonts(v=office.14).aspx
Information about font:
https://msdn.microsoft.com/en-us/library/ff531892(v=office.12).aspx
https://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.font(v=office.14).aspx
More information about color class:
https://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.color(v=office.14).aspx
https://msdn.microsoft.com/en-us/library/ff532831(v=office.12).aspx
Example:
With indexed auto, colour, rgb and them,
<color auto="1" theme="1" rgb="FFFFFF" indexed="62" />
The priority is as follows:
1. theme
2. rgb
3. indexed
4. auto
Change-Id: I7bb5ab7d7b7a52091f0130fd6f21bac44eca7408
Reviewed-on: https://gerrit.libreoffice.org/45281
Reviewed-by: Eike Rathke <erack@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | sc/source/filter/oox/stylesbuffer.cxx | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sc/source/filter/oox/stylesbuffer.cxx b/sc/source/filter/oox/stylesbuffer.cxx index 7a33511ee449..15f1093b03a6 100644 --- a/sc/source/filter/oox/stylesbuffer.cxx +++ b/sc/source/filter/oox/stylesbuffer.cxx @@ -266,14 +266,16 @@ void Color::setIndexed( sal_Int32 nPaletteIdx, double fTint ) void Color::importColor( const AttributeList& rAttribs ) { - if( rAttribs.getBool( XML_auto, false ) ) - setAuto(); + // tdf#113271 The order of import color is very important in case of more than one color attributes was provided. + // This order (theme -> rgb -> indexed -> auto) is not documented and was gathered experimentally based on MS Excel 2013. + if( rAttribs.hasAttribute( XML_theme ) ) + setTheme( rAttribs.getInteger( XML_theme, -1 ), rAttribs.getDouble( XML_tint, 0.0 ) ); else if( rAttribs.hasAttribute( XML_rgb ) ) setRgb( rAttribs.getIntegerHex( XML_rgb, API_RGB_TRANSPARENT ), rAttribs.getDouble( XML_tint, 0.0 ) ); - else if( rAttribs.hasAttribute( XML_theme ) ) - setTheme( rAttribs.getInteger( XML_theme, -1 ), rAttribs.getDouble( XML_tint, 0.0 ) ); else if( rAttribs.hasAttribute( XML_indexed ) ) setIndexed( rAttribs.getInteger( XML_indexed, -1 ), rAttribs.getDouble( XML_tint, 0.0 ) ); + else if( rAttribs.getBool( XML_auto, false ) ) + setAuto(); else { OSL_FAIL( "Color::importColor - unknown color type" ); |