summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2013-01-18 15:22:36 +0100
committerMiklos Vajna <vmiklos@suse.cz>2013-01-18 15:24:17 +0100
commit2cacaf6ab0acf3188f43df02ef3fc87082e351b2 (patch)
tree7bf9f6f849dae873a321b81845ffea0eb6bbf11d /oox
parent01d059c13e39f4fba75e2152b4db6b0b746bca71 (diff)
oox::vml::ShadowModel: differentiate between not having it and having it off
Having it explicitly disabled was already handled, but apparently 01d059c13e39f4fba75e2152b4db6b0b746bca71 turned on shadows by default. Fix this. Change-Id: I1401a28b36a9b5aea302f9a19a6d02a29e6b358d
Diffstat (limited to 'oox')
-rw-r--r--oox/inc/oox/vml/vmlformatting.hxx5
-rw-r--r--oox/source/vml/vmlformatting.cxx7
-rw-r--r--oox/source/vml/vmlshapecontext.cxx3
3 files changed, 12 insertions, 3 deletions
diff --git a/oox/inc/oox/vml/vmlformatting.hxx b/oox/inc/oox/vml/vmlformatting.hxx
index 0d8db1678769..d6752551e80b 100644
--- a/oox/inc/oox/vml/vmlformatting.hxx
+++ b/oox/inc/oox/vml/vmlformatting.hxx
@@ -228,11 +228,14 @@ struct FillModel
/** The shadow model structure contains all shape shadow properties. */
struct ShadowModel
{
- OptValue<bool> moHasShadow; ///< Specifies whether to show a shadow.
+ bool mbHasShadow; ///< Is a v:shadow element seen?
+ OptValue<bool> moShadowOn; ///< Is the element turned on?
OptValue<OUString> moColor; ///< Specifies the color of the shadow.
OptValue<OUString> moOffset; ///< Specifies the shadow's offset from the shape's location.
OptValue<double> moOpacity; ///< Specifies the opacity of the shadow.
+ ShadowModel();
+
/** Writes the properties to the passed property map. */
void pushToPropMap(oox::drawingml::ShapePropertyMap& rPropMap, const GraphicHelper& rGraphicHelper) const;
};
diff --git a/oox/source/vml/vmlformatting.cxx b/oox/source/vml/vmlformatting.cxx
index 3113d57b4dd5..1af17a3886f7 100644
--- a/oox/source/vml/vmlformatting.cxx
+++ b/oox/source/vml/vmlformatting.cxx
@@ -714,9 +714,14 @@ void FillModel::pushToPropMap( ShapePropertyMap& rPropMap, const GraphicHelper&
// ============================================================================
+ShadowModel::ShadowModel()
+ : mbHasShadow(false)
+{
+}
+
void ShadowModel::pushToPropMap(ShapePropertyMap& rPropMap, const GraphicHelper& rGraphicHelper) const
{
- if (moHasShadow.has() && !moHasShadow.get())
+ if (!mbHasShadow || (moShadowOn.has() && !moShadowOn.get()))
return;
drawingml::Color aColor = ConversionHelper::decodeColor(rGraphicHelper, moColor, moOpacity, API_RGB_GRAY);
diff --git a/oox/source/vml/vmlshapecontext.cxx b/oox/source/vml/vmlshapecontext.cxx
index fc5ad9f44cb6..39ac32595a6d 100644
--- a/oox/source/vml/vmlshapecontext.cxx
+++ b/oox/source/vml/vmlshapecontext.cxx
@@ -335,7 +335,8 @@ ContextHandlerRef ShapeTypeContext::onCreateContext( sal_Int32 nElement, const A
break;
case VML_TOKEN( shadow ):
{
- mrTypeModel.maShadowModel.moHasShadow.assignIfUsed(lclDecodeBool(rAttribs, XML_on));
+ mrTypeModel.maShadowModel.mbHasShadow = true;
+ mrTypeModel.maShadowModel.moShadowOn.assignIfUsed(lclDecodeBool(rAttribs, XML_on));
mrTypeModel.maShadowModel.moColor.assignIfUsed(rAttribs.getString(XML_color));
mrTypeModel.maShadowModel.moOffset.assignIfUsed(rAttribs.getString(XML_offset));
mrTypeModel.maShadowModel.moOpacity = lclDecodePercent(rAttribs, XML_opacity, 1.0);