summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorZolnai Tamás <tamas.zolnai@collabora.com>2014-02-20 11:48:35 +0100
committerZolnai Tamás <tamas.zolnai@collabora.com>2014-02-21 09:28:24 +0100
commit191f648ffd97b58f57afca65961e5dbcc2bbe724 (patch)
tree7be863909852730d385e3f0ede0522eea79a79ef /oox
parent1d512fb31c20e17426f0652234a1304ead2d8c8d (diff)
drawingML export: gradient fill defined by imported theme
Plus avoid writing out empty <a:gradFill></a:gradFill>. Change-Id: I50fa92b2cc30eedfe28a8c6af697d43d98a3aee8
Diffstat (limited to 'oox')
-rw-r--r--oox/source/drawingml/shape.cxx5
-rw-r--r--oox/source/export/drawingml.cxx16
2 files changed, 16 insertions, 5 deletions
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index b3020107a9ff..9066d44fac31 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -853,7 +853,10 @@ Reference< XShape > Shape::createAndInsert(
PUT_PROP( aGradientStops, i, OUString::number( i ), aGradientStop );
++aIt;
}
- putPropertyToGrabBag( "GradFillDefinition", Any( aGradientStops ) );
+ // If getFillProperties.moFillType is unused that means gradient is defined by a theme
+ // which is already saved into StyleFillRef property, so no need to save the explicit values too
+ if( getFillProperties().moFillType.has() )
+ putPropertyToGrabBag( "GradFillDefinition", Any( aGradientStops ) );
putPropertyToGrabBag( "OriginalGradFill", Any( aShapeProps[PROP_FillGradient] ) );
}
}
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 8ff54aa0fe27..e019ed68fbac 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -339,15 +339,23 @@ void DrawingML::WriteGradientFill( Reference< XPropertySet > rXPropSet )
aGrabBag[i].Value >>= aOriginalGradient;
}
- mpFS->startElementNS( XML_a, XML_gradFill, FSEND );
// check if an ooxml gradient had been imported and if the user has modified it
- if( aGradientStops.hasElements() && EqualGradients( aOriginalGradient, aGradient ) )
+ if( EqualGradients( aOriginalGradient, aGradient ) )
{
- WriteGrabBagGradientFill(aGradientStops, aGradient);
+ // If we have no gradient stops that means original gradient were defined by a theme.
+ if( aGradientStops.hasElements() )
+ {
+ mpFS->startElementNS( XML_a, XML_gradFill, FSEND );
+ WriteGrabBagGradientFill(aGradientStops, aGradient);
+ mpFS->endElementNS( XML_a, XML_gradFill );
+ }
}
else
+ {
+ mpFS->startElementNS( XML_a, XML_gradFill, FSEND );
WriteGradientFill(aGradient);
- mpFS->endElementNS( XML_a, XML_gradFill );
+ mpFS->endElementNS( XML_a, XML_gradFill );
+ }
}
}