summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
Diffstat (limited to 'oox')
-rw-r--r--oox/source/export/drawingml.cxx2
-rw-r--r--oox/source/export/shapes.cxx20
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 );