summaryrefslogtreecommitdiff
path: root/xmloff/source/draw
diff options
context:
space:
mode:
Diffstat (limited to 'xmloff/source/draw')
-rw-r--r--xmloff/source/draw/xexptran.cxx15
-rw-r--r--xmloff/source/draw/ximp3dobject.cxx3
-rw-r--r--xmloff/source/draw/ximpshap.cxx6
3 files changed, 16 insertions, 8 deletions
diff --git a/xmloff/source/draw/xexptran.cxx b/xmloff/source/draw/xexptran.cxx
index 603298419319..80a61ac33a27 100644
--- a/xmloff/source/draw/xexptran.cxx
+++ b/xmloff/source/draw/xexptran.cxx
@@ -2121,7 +2121,7 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
const SdXMLImExViewBox& rViewBox,
const awt::Point& rObjectPos,
const awt::Size& rObjectSize,
- const SvXMLUnitConverter& /*rConv*/)
+ const SvXMLImport& rImport)
: msString( rNew ),
mrViewBox( rViewBox ),
mbIsClosed( false ),
@@ -2130,9 +2130,20 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew,
mnLastY( 0L ),
maPoly()
{
+ bool bWrongPositionAfterZ( false );
+ sal_Int32 nUPD( 0 );
+ sal_Int32 nBuildId( 0 );
+ if ( rImport.getBuildIds( nUPD, nBuildId ) &&
+ ( ( nUPD == 641 ) || ( nUPD == 645 ) || ( nUPD == 680 ) || ( nUPD == 300 ) ||
+ ( nUPD == 310 ) || ( nUPD == 320 ) || ( nUPD == 330 ) || ( nUPD == 340 ) ||
+ ( nUPD == 350 && nBuildId < 202 ) ) )
+ {
+ bWrongPositionAfterZ = true;
+ }
+
// convert string to polygon
basegfx::B2DPolyPolygon aPoly;
- basegfx::tools::importFromSvgD(aPoly,msString);
+ basegfx::tools::importFromSvgD(aPoly,msString,bWrongPositionAfterZ);
mbIsCurve = aPoly.areControlPointsUsed();
mbIsClosed = aPoly.isClosed();
diff --git a/xmloff/source/draw/ximp3dobject.cxx b/xmloff/source/draw/ximp3dobject.cxx
index 1d84030851e2..eacf1df1b1eb 100644
--- a/xmloff/source/draw/ximp3dobject.cxx
+++ b/xmloff/source/draw/ximp3dobject.cxx
@@ -399,8 +399,7 @@ void SdXML3DPolygonBasedShapeContext::StartElement(const uno::Reference< xml::sa
SdXMLImExViewBox aViewBox(maViewBox, GetImport().GetMM100UnitConverter());
awt::Point aMinPoint(aViewBox.GetX(), aViewBox.GetY());
awt::Size aMaxSize(aViewBox.GetWidth(), aViewBox.GetHeight());
- SdXMLImExSvgDElement aPoints(maPoints, aViewBox,
- aMinPoint, aMaxSize, GetImport().GetMM100UnitConverter());
+ SdXMLImExSvgDElement aPoints(maPoints, aViewBox, aMinPoint, aMaxSize, GetImport());
// convert to double sequences
drawing::PointSequenceSequence& xPoSeSe =
diff --git a/xmloff/source/draw/ximpshap.cxx b/xmloff/source/draw/ximpshap.cxx
index 6d2192ac6e3a..ef5d5e69ca96 100644
--- a/xmloff/source/draw/ximpshap.cxx
+++ b/xmloff/source/draw/ximpshap.cxx
@@ -1420,8 +1420,7 @@ void SdXMLPathShapeContext::StartElement(const uno::Reference< xml::sax::XAttrib
{
aSize = maSize;
}
- SdXMLImExSvgDElement aPoints(maD, aViewBox,
- aPosition, aSize, GetImport().GetMM100UnitConverter());
+ SdXMLImExSvgDElement aPoints(maD, aViewBox, aPosition, aSize, GetImport());
const char* pService;
// now create shape
@@ -1860,8 +1859,7 @@ void SdXMLConnectorShapeContext::processAttribute( sal_uInt16 nPrefix, const ::r
awt::Point aPoint( 0, 0 );
awt::Size aSize( 1, 1 );
- SdXMLImExSvgDElement aPoints( rValue, aViewBox,
- aPoint, aSize, GetImport().GetMM100UnitConverter() );
+ SdXMLImExSvgDElement aPoints( rValue, aViewBox, aPoint, aSize, GetImport() );
if ( aPoints.IsCurve() )
{