Kaydet (Commit) 5930033f authored tarafından Bartosz Kosiorek's avatar Bartosz Kosiorek Kaydeden (comit) Caolán McNamara

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/45281Reviewed-by: 's avatarEike Rathke <erack@redhat.com>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst f259310a
...@@ -266,14 +266,16 @@ void Color::setIndexed( sal_Int32 nPaletteIdx, double fTint ) ...@@ -266,14 +266,16 @@ void Color::setIndexed( sal_Int32 nPaletteIdx, double fTint )
void Color::importColor( const AttributeList& rAttribs ) void Color::importColor( const AttributeList& rAttribs )
{ {
if( rAttribs.getBool( XML_auto, false ) ) // tdf#113271 The order of import color is very important in case of more than one color attributes was provided.
setAuto(); // 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 ) ) else if( rAttribs.hasAttribute( XML_rgb ) )
setRgb( rAttribs.getIntegerHex( XML_rgb, API_RGB_TRANSPARENT ), rAttribs.getDouble( XML_tint, 0.0 ) ); 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 ) ) else if( rAttribs.hasAttribute( XML_indexed ) )
setIndexed( rAttribs.getInteger( XML_indexed, -1 ), rAttribs.getDouble( XML_tint, 0.0 ) ); setIndexed( rAttribs.getInteger( XML_indexed, -1 ), rAttribs.getDouble( XML_tint, 0.0 ) );
else if( rAttribs.getBool( XML_auto, false ) )
setAuto();
else else
{ {
OSL_FAIL( "Color::importColor - unknown color type" ); OSL_FAIL( "Color::importColor - unknown color type" );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment