diff options
Diffstat (limited to 'oox')
-rw-r--r-- | oox/source/export/drawingml.cxx | 2 | ||||
-rw-r--r-- | oox/source/export/shapes.cxx | 20 |
2 files changed, 15 insertions, 7 deletions
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 459b4253c984..3db4c04a10bc 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1671,7 +1671,7 @@ void DrawingML::WritePolyPolygon( const PolyPolygon& rPolyPolygon ) XML_y, I64S( rPoly[j].Y() - aRect.Top() ), FSEND ); - if( ( flags == POLY_NORMAL || flags == POLY_SYMMTR ) && bBezier ) + if( ( flags == POLY_NORMAL || flags == POLY_SYMMTR || j == rPoly.GetSize() - 1) && bBezier ) { mpFS->endElementNS( XML_a, XML_cubicBezTo ); bBezier = sal_False; diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index e55c2f3c8f8a..90b7ffa7e268 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -353,14 +353,22 @@ ShapeExport& ShapeExport::WriteCustomShape( Reference< XShape > xShape ) // visual shape properties pFS->startElementNS( mnXmlNamespace, XML_spPr, FSEND ); WriteShapeTransformation( xShape, XML_a, bFlipH, bFlipV, false); - if( nAdjustmentValuesIndex != -1 ) + + if( sShapeType == "ooxml-non-primitive" ) // non-primitiv -> custom geometry { - sal_Int32 nAdjustmentsWhichNeedsToBeConverted = 0; - WritePresetShape( sPresetShape, eShapeType, bPredefinedHandlesUsed, - nAdjustmentsWhichNeedsToBeConverted, aGeometrySeq[ nAdjustmentValuesIndex ] ); + WritePolyPolygon( EscherPropertyContainer::GetPolyPolygon( xShape ) ); + } + else // preset geometry + { + if( nAdjustmentValuesIndex != -1 ) + { + sal_Int32 nAdjustmentsWhichNeedsToBeConverted = 0; + WritePresetShape( sPresetShape, eShapeType, bPredefinedHandlesUsed, + nAdjustmentsWhichNeedsToBeConverted, aGeometrySeq[ nAdjustmentValuesIndex ] ); + } + else + WritePresetShape( sPresetShape ); } - else - WritePresetShape( sPresetShape ); if( rXPropSet.is() ) { WriteFill( rXPropSet ); |