Kaydet (Commit) d8d078f4 authored tarafından Markus Mohrhard's avatar Markus Mohrhard

better databar negative color and axis color import

Should finally handle themed colors and tints. There seem to be a few
issue left that I need to understand.

Change-Id: Icdd0a2d26519eb1c4171d6888913ba2c6944a443
üst be62a97a
...@@ -224,15 +224,15 @@ struct ExCfRuleModel ...@@ -224,15 +224,15 @@ struct ExCfRuleModel
bool mbGradient; bool mbGradient;
OUString maAxisPosition; OUString maAxisPosition;
// AxisColor // AxisColor
sal_uInt32 mnAxisColor; ::Color mnAxisColor;
// NegativeFillColor // NegativeFillColor
sal_uInt32 mnNegativeColor; ::Color mnNegativeColor;
// Cfvo // Cfvo
bool mbIsLower; bool mbIsLower;
OUString maColorScaleType; OUString maColorScaleType;
}; };
class ExtCfRule class ExtCfRule : public WorksheetHelper
{ {
enum RuleType enum RuleType
{ {
...@@ -246,7 +246,8 @@ class ExtCfRule ...@@ -246,7 +246,8 @@ class ExtCfRule
RuleType mnRuleType; RuleType mnRuleType;
ScDataBarFormatData* mpTarget; ScDataBarFormatData* mpTarget;
public: public:
ExtCfRule(ScDataBarFormatData* pTarget = NULL ) : mnRuleType( ExtCfRule::UNKNOWN ), mpTarget(pTarget) {}
ExtCfRule(ScDataBarFormatData* pTarget, WorksheetHelper& rParent);
void finalizeImport(); void finalizeImport();
void importDataBar( const AttributeList& rAttribs ); void importDataBar( const AttributeList& rAttribs );
void importNegativeFillColor( const AttributeList& rAttribs ); void importNegativeFillColor( const AttributeList& rAttribs );
......
...@@ -171,9 +171,7 @@ namespace { ...@@ -171,9 +171,7 @@ namespace {
return ::Color(ornA, ornR, ornG, ornB); return ::Color(ornA, ornR, ornG, ornB);
} }
} ::Color importOOXColor(const AttributeList& rAttribs, ThemeBuffer& rThemeBuffer, GraphicHelper& rGraphicHelper)
void ColorScaleRule::importColor( const AttributeList& rAttribs )
{ {
sal_uInt32 nColor = 0; sal_uInt32 nColor = 0;
if( rAttribs.hasAttribute( XML_rgb ) ) if( rAttribs.hasAttribute( XML_rgb ) )
...@@ -181,7 +179,7 @@ void ColorScaleRule::importColor( const AttributeList& rAttribs ) ...@@ -181,7 +179,7 @@ void ColorScaleRule::importColor( const AttributeList& rAttribs )
else if( rAttribs.hasAttribute( XML_theme ) ) else if( rAttribs.hasAttribute( XML_theme ) )
{ {
sal_uInt32 nThemeIndex = rAttribs.getUnsigned( XML_theme, 0 ); sal_uInt32 nThemeIndex = rAttribs.getUnsigned( XML_theme, 0 );
nColor = getTheme().getColorByIndex( nThemeIndex ); nColor = rThemeBuffer.getColorByIndex( nThemeIndex );
} }
...@@ -192,12 +190,23 @@ void ColorScaleRule::importColor( const AttributeList& rAttribs ) ...@@ -192,12 +190,23 @@ void ColorScaleRule::importColor( const AttributeList& rAttribs )
oox::drawingml::Color aDMColor; oox::drawingml::Color aDMColor;
aDMColor.setSrgbClr(nColor); aDMColor.setSrgbClr(nColor);
aDMColor.addExcelTintTransformation(nTint); aDMColor.addExcelTintTransformation(nTint);
nColor = aDMColor.getColor(getBaseFilter().getGraphicHelper()); nColor = aDMColor.getColor(rGraphicHelper);
aColor = ::Color(nColor); aColor = ::Color(nColor);
} }
else else
aColor = ARgbToARgbComponents( nColor ); aColor = ARgbToARgbComponents( nColor );
return aColor;
}
}
void ColorScaleRule::importColor( const AttributeList& rAttribs )
{
ThemeBuffer& rThemeBuffer = getTheme();
GraphicHelper& rGraphicHelper = getBaseFilter().getGraphicHelper();
::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
if(mnCol >= maColorScaleRuleEntries.size()) if(mnCol >= maColorScaleRuleEntries.size())
maColorScaleRuleEntries.push_back(ColorScaleRuleModelEntry()); maColorScaleRuleEntries.push_back(ColorScaleRuleModelEntry());
...@@ -1075,7 +1084,7 @@ CondFormatRef CondFormatBuffer::importCondFormatting( SequenceInputStream& rStrm ...@@ -1075,7 +1084,7 @@ CondFormatRef CondFormatBuffer::importCondFormatting( SequenceInputStream& rStrm
ExtCfRuleRef CondFormatBuffer::createExtCfRule(ScDataBarFormatData* pTarget) ExtCfRuleRef CondFormatBuffer::createExtCfRule(ScDataBarFormatData* pTarget)
{ {
ExtCfRuleRef extRule( new ExtCfRule( pTarget ) ); ExtCfRuleRef extRule( new ExtCfRule( pTarget, *this ) );
maCfRules.push_back( extRule ); maCfRules.push_back( extRule );
return extRule; return extRule;
} }
...@@ -1124,6 +1133,13 @@ CondFormatRef CondFormatBuffer::createCondFormat() ...@@ -1124,6 +1133,13 @@ CondFormatRef CondFormatBuffer::createCondFormat()
return xCondFmt; return xCondFmt;
} }
ExtCfRule::ExtCfRule(ScDataBarFormatData* pTarget, WorksheetHelper& rParent):
WorksheetHelper(rParent),
mnRuleType( ExtCfRule::UNKNOWN ),
mpTarget(pTarget)
{
}
void ExtCfRule::finalizeImport() void ExtCfRule::finalizeImport()
{ {
switch ( mnRuleType ) switch ( mnRuleType )
...@@ -1143,13 +1159,13 @@ void ExtCfRule::finalizeImport() ...@@ -1143,13 +1159,13 @@ void ExtCfRule::finalizeImport()
case AXISCOLOR: case AXISCOLOR:
{ {
ScDataBarFormatData* pDataBar = mpTarget; ScDataBarFormatData* pDataBar = mpTarget;
pDataBar->maAxisColor = ARgbToARgbComponents(maModel.mnAxisColor); pDataBar->maAxisColor = maModel.mnAxisColor;
break; break;
} }
case NEGATIVEFILLCOLOR: case NEGATIVEFILLCOLOR:
{ {
ScDataBarFormatData* pDataBar = mpTarget; ScDataBarFormatData* pDataBar = mpTarget;
pDataBar->mpNegativeColor.reset( new ::Color( ARgbToARgbComponents(maModel.mnNegativeColor) ) ); pDataBar->mpNegativeColor.reset( new ::Color(maModel.mnNegativeColor) );
pDataBar->mbNeg = true; pDataBar->mbNeg = true;
break; break;
} }
...@@ -1193,14 +1209,20 @@ void ExtCfRule::importDataBar( const AttributeList& rAttribs ) ...@@ -1193,14 +1209,20 @@ void ExtCfRule::importDataBar( const AttributeList& rAttribs )
void ExtCfRule::importNegativeFillColor( const AttributeList& rAttribs ) void ExtCfRule::importNegativeFillColor( const AttributeList& rAttribs )
{ {
mnRuleType = NEGATIVEFILLCOLOR; mnRuleType = NEGATIVEFILLCOLOR;
maModel.mnNegativeColor = rAttribs.getUnsignedHex( XML_rgb, UNSIGNED_RGB_TRANSPARENT ); ThemeBuffer& rThemeBuffer = getTheme();
GraphicHelper& rGraphicHelper = getBaseFilter().getGraphicHelper();
::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
maModel.mnNegativeColor = aColor;
} }
void ExtCfRule::importAxisColor( const AttributeList& rAttribs ) void ExtCfRule::importAxisColor( const AttributeList& rAttribs )
{ {
mnRuleType = AXISCOLOR; mnRuleType = AXISCOLOR;
maModel.mnAxisColor = rAttribs.getUnsignedHex( XML_rgb, UNSIGNED_RGB_TRANSPARENT ); ThemeBuffer& rThemeBuffer = getTheme();
GraphicHelper& rGraphicHelper = getBaseFilter().getGraphicHelper();
::Color aColor = importOOXColor(rAttribs, rThemeBuffer, rGraphicHelper);
maModel.mnAxisColor = aColor;
} }
void ExtCfRule::importCfvo( const AttributeList& rAttribs ) void ExtCfRule::importCfvo( const AttributeList& rAttribs )
......
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