diff options
author | Jacobo Aragunde Pérez <jaragunde@igalia.com> | 2014-05-09 12:01:46 +0200 |
---|---|---|
committer | Jacobo Aragunde Pérez <jaragunde@igalia.com> | 2014-05-09 14:11:38 +0200 |
commit | f6422b3dfcb00e451ef103127aace1856dc752a9 (patch) | |
tree | 135bd8dd5be8354897e125b73ba4f626d3794504 /oox/source/drawingml/shape3dproperties.cxx | |
parent | 6566c218afec3cd8c4d36094777bc30b1970e9e4 (diff) |
ooxml: Preserve shape 3d effects: top and bottom bevel
Shapes 3D effects can specify top and bottom bevels like in the
following example:
<a:sp3d z="488950" extrusionH="63500" contourW="50800">
<a:bevelT w="139700" h="88900" prst="cross"/>
<a:bevelB h="88900" prst="relaxedInset"/>
</a:sp3d>
This patch preserves the a:bevel* tags and their attributes using the
shape grab bag and modifies an existing unit test to add this check.
Change-Id: I4762111e4d2f75ba2fd3721a126aa324a28a853c
Diffstat (limited to 'oox/source/drawingml/shape3dproperties.cxx')
-rw-r--r-- | oox/source/drawingml/shape3dproperties.cxx | 61 |
1 files changed, 60 insertions, 1 deletions
diff --git a/oox/source/drawingml/shape3dproperties.cxx b/oox/source/drawingml/shape3dproperties.cxx index 7da8a0b4d9f1..28d907922b31 100644 --- a/oox/source/drawingml/shape3dproperties.cxx +++ b/oox/source/drawingml/shape3dproperties.cxx @@ -171,6 +171,27 @@ OUString Shape3DProperties::getLightRigDirName( sal_Int32 nElement ) return OUString(); } +OUString Shape3DProperties::getBevelPresetTypeString( sal_Int32 nType ) +{ + switch (nType) + { + case XML_relaxedInset: return OUString("relaxedInset"); + case XML_circle: return OUString("circle"); + case XML_slope: return OUString("slope"); + case XML_cross: return OUString("cross"); + case XML_angle: return OUString("angle"); + case XML_softRound: return OUString("softRound"); + case XML_convex: return OUString("convex"); + case XML_coolSlant: return OUString("coolSlant"); + case XML_divot: return OUString("divot"); + case XML_riblet: return OUString("riblet"); + case XML_hardEdge: return OUString("hardEdge"); + case XML_artDeco: return OUString("artDeco"); + } + SAL_WARN( "oox.drawingml", "Shape3DProperties::getBevelPresetTypeString - unexpected token" ); + return OUString(); +} + css::uno::Sequence< css::beans::PropertyValue > Shape3DProperties::getCameraAttributes() { css::uno::Sequence<css::beans::PropertyValue> aSeq(6); @@ -253,10 +274,36 @@ css::uno::Sequence< css::beans::PropertyValue > Shape3DProperties::getLightRigAt return aSeq; } -css::uno::Sequence< css::beans::PropertyValue > Shape3DProperties::getShape3DAttributes() +css::uno::Sequence< css::beans::PropertyValue > Shape3DProperties::getBevelAttributes( BevelProperties rProps ) { css::uno::Sequence<css::beans::PropertyValue> aSeq(3); sal_Int32 nSize = 0; + if( rProps.mnPreset.has() ) + { + aSeq[nSize].Name = "prst"; + aSeq[nSize].Value = css::uno::Any( getBevelPresetTypeString( rProps.mnPreset.use() ) ); + nSize++; + } + if( rProps.mnWidth.has() ) + { + aSeq[nSize].Name = "w"; + aSeq[nSize].Value = css::uno::Any( rProps.mnWidth.use() ); + nSize++; + } + if( rProps.mnHeight.has() ) + { + aSeq[nSize].Name = "h"; + aSeq[nSize].Value = css::uno::Any( rProps.mnHeight.use() ); + nSize++; + } + aSeq.realloc( nSize ); + return aSeq; +} + +css::uno::Sequence< css::beans::PropertyValue > Shape3DProperties::getShape3DAttributes() +{ + css::uno::Sequence<css::beans::PropertyValue> aSeq(5); + sal_Int32 nSize = 0; if( mnExtrusionH.has() ) { aSeq[nSize].Name = "extrusionH"; @@ -275,6 +322,18 @@ css::uno::Sequence< css::beans::PropertyValue > Shape3DProperties::getShape3DAtt aSeq[nSize].Value = css::uno::Any( mnShapeZ.use() ); nSize++; } + if( maTopBevelProperties.has() ) + { + aSeq[nSize].Name = "bevelT"; + aSeq[nSize].Value = css::uno::Any( getBevelAttributes( maTopBevelProperties.use() ) ); + nSize++; + } + if( maBottomBevelProperties.has() ) + { + aSeq[nSize].Name = "bevelB"; + aSeq[nSize].Value = css::uno::Any( getBevelAttributes( maBottomBevelProperties.use() ) ); + nSize++; + } aSeq.realloc( nSize ); return aSeq; } |