diff options
author | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2012-03-26 12:55:44 +0200 |
---|---|---|
committer | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2012-03-26 12:55:59 +0200 |
commit | 7a19798c73fd39d8d69ff6364f0696e68cdd1381 (patch) | |
tree | 683fa6cb8d20d69e3bd9c8bfa499ff8f93c16a39 /xmloff/source/draw | |
parent | a2ee8055e9c136923f0244fe289cac6377933c31 (diff) |
Compatibility option for incorrect relative moves after closePath (fdo#47406)
Diffstat (limited to 'xmloff/source/draw')
-rw-r--r-- | xmloff/source/draw/xexptran.cxx | 15 | ||||
-rw-r--r-- | xmloff/source/draw/ximp3dobject.cxx | 3 | ||||
-rw-r--r-- | xmloff/source/draw/ximpshap.cxx | 6 |
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() ) { |