diff options
-rw-r--r-- | include/oox/vml/vmlshape.hxx | 4 | ||||
-rw-r--r-- | oox/source/vml/vmlshape.cxx | 19 | ||||
-rw-r--r-- | oox/source/vml/vmlshapecontext.cxx | 4 |
3 files changed, 27 insertions, 0 deletions
diff --git a/include/oox/vml/vmlshape.hxx b/include/oox/vml/vmlshape.hxx index 0312ec1a17c9..6ef480541cd3 100644 --- a/include/oox/vml/vmlshape.hxx +++ b/include/oox/vml/vmlshape.hxx @@ -97,6 +97,10 @@ struct OOX_DLLPUBLIC ShapeTypeModel OptValue< ::rtl::OUString > moWrapType; ///< How to wrap the text around the object OptValue< ::rtl::OUString > moWrapSide; ///< On which side to wrap the text around the object OUString maVTextAnchor; ///< How the text inside the shape is anchored vertically. + OUString maWrapDistanceLeft; ///< Distance from the left side of the shape to the text that wraps around it. + OUString maWrapDistanceRight; ///< Distance from the right side of the shape to the text that wraps around it. + OUString maWrapDistanceTop; ///< Distance from the top of the shape to the text that wraps around it. + OUString maWrapDistanceBottom; ///< Distance from the bottom of the shape to the text that wraps around it. explicit ShapeTypeModel(); diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx index 0c88d3fa372c..47d8ceb65727 100644 --- a/oox/source/vml/vmlshape.cxx +++ b/oox/source/vml/vmlshape.cxx @@ -522,6 +522,25 @@ Reference< XShape > SimpleShape::implConvertAndInsert( const Reference< XShapes Reference< XShape > xShape = mrDrawing.createAndInsertXShape( maService, rxShapes, aShapeRect ); convertShapeProperties( xShape ); + // Handle left/right/top/bottom wrap distance. + const GraphicHelper& rGraphicHelper = mrDrawing.getFilter().getGraphicHelper(); + sal_Int32 nWrapDistanceLeft = 0; + if (!maTypeModel.maWrapDistanceLeft.isEmpty()) + nWrapDistanceLeft = ConversionHelper::decodeMeasureToHmm(rGraphicHelper, maTypeModel.maWrapDistanceLeft, 0, true, true); + PropertySet(xShape).setAnyProperty(PROP_LeftMargin, uno::makeAny(nWrapDistanceLeft)); + sal_Int32 nWrapDistanceRight = 0; + if (!maTypeModel.maWrapDistanceRight.isEmpty()) + nWrapDistanceRight = ConversionHelper::decodeMeasureToHmm(rGraphicHelper, maTypeModel.maWrapDistanceRight, 0, true, true); + PropertySet(xShape).setAnyProperty(PROP_RightMargin, uno::makeAny(nWrapDistanceRight)); + sal_Int32 nWrapDistanceTop = 0; + if (!maTypeModel.maWrapDistanceTop.isEmpty()) + nWrapDistanceTop = ConversionHelper::decodeMeasureToHmm(rGraphicHelper, maTypeModel.maWrapDistanceTop, 0, false, true); + PropertySet(xShape).setAnyProperty(PROP_TopMargin, uno::makeAny(nWrapDistanceTop)); + sal_Int32 nWrapDistanceBottom = 0; + if (!maTypeModel.maWrapDistanceBottom.isEmpty()) + nWrapDistanceBottom = ConversionHelper::decodeMeasureToHmm(rGraphicHelper, maTypeModel.maWrapDistanceBottom, 0, false, true); + PropertySet(xShape).setAnyProperty(PROP_BottomMargin, uno::makeAny(nWrapDistanceBottom)); + if ( maService.equalsAscii( "com.sun.star.text.TextFrame" ) ) { PropertySet( xShape ).setAnyProperty( PROP_FrameIsAutomaticHeight, makeAny( maTypeModel.mbAutoHeight ) ); diff --git a/oox/source/vml/vmlshapecontext.cxx b/oox/source/vml/vmlshapecontext.cxx index 3c47c668cd39..48340d55c8f1 100644 --- a/oox/source/vml/vmlshapecontext.cxx +++ b/oox/source/vml/vmlshapecontext.cxx @@ -418,6 +418,10 @@ void ShapeTypeContext::setStyle( const OUString& rStyle ) mrTypeModel.mbVisible = !aValue.equalsAscii( "hidden" ); else if( aName == "mso-wrap-style" ) mrTypeModel.maWrapStyle = aValue; else if ( aName == "v-text-anchor" ) mrTypeModel.maVTextAnchor = aValue; + else if ( aName == "mso-wrap-distance-left" ) mrTypeModel.maWrapDistanceLeft = aValue; + else if ( aName == "mso-wrap-distance-right" ) mrTypeModel.maWrapDistanceRight = aValue; + else if ( aName == "mso-wrap-distance-top" ) mrTypeModel.maWrapDistanceTop = aValue; + else if ( aName == "mso-wrap-distance-bottom" ) mrTypeModel.maWrapDistanceBottom = aValue; } } } |