filter/source/svg/svgwriter.cxx | 68 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 64 insertions(+), 4 deletions(-)
New commits: commit f8976c41dc847cc47abf127bed4e0dc58aa7f1b5 Author: Chr. Rossmanith <chrrossman...@gmx.de> Date: Fri Apr 10 21:58:43 2015 +0200 tdf#37650: further improvement of svg export continues work of 0a4e9138281bd0a4be59031357c1bf52134d007a when opening a <tspan> element check if <text> element has been opened already; if not open <text> element and close it immediately after writing the text Change-Id: I6e4cfdf9ba107ec9e65a99e7866f4a1075737d82 diff --git a/filter/source/svg/svgwriter.cxx b/filter/source/svg/svgwriter.cxx index 01d218b..5774dfd 100644 --- a/filter/source/svg/svgwriter.cxx +++ b/filter/source/svg/svgwriter.cxx @@ -3435,14 +3435,29 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf, if( mrExport.IsUsePositionedCharacters() ) { vcl::Font aFont = ImplSetCorrectFontHeight(); + bool bTextShapeStarted=false; + if( !maTextWriter.isTextShapeStarted() ) + { + bTextShapeStarted=true; + maTextWriter.startTextShape(); + } mpContext->SetFontAttr( aFont ); ImplWriteText( pA->GetPoint(), aText, NULL, 0 ); + if( bTextShapeStarted ) + maTextWriter.endTextShape(); } else { + bool bTextShapeStarted=false; + if( !maTextWriter.isTextShapeStarted() ) + { + bTextShapeStarted=true; + maTextWriter.startTextShape(); + } maTextWriter.writeTextPortion( pA->GetPoint(), aText ); + if( bTextShapeStarted ) + maTextWriter.endTextShape(); } - } } } @@ -3459,12 +3474,27 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf, if( mrExport.IsUsePositionedCharacters() ) { vcl::Font aFont = ImplSetCorrectFontHeight(); + bool bTextShapeStarted=false; + if( !maTextWriter.isTextShapeStarted() ) + { + bTextShapeStarted=true; + maTextWriter.startTextShape(); + } mpContext->SetFontAttr( aFont ); ImplWriteText( pA->GetRect().TopLeft(), pA->GetText(), NULL, 0 ); + if( bTextShapeStarted ) + maTextWriter.endTextShape(); } + + bool bTextShapeStarted=false; + if( !maTextWriter.isTextShapeStarted() ) { - maTextWriter.writeTextPortion( pA->GetRect().TopLeft(), pA->GetText() ); + bTextShapeStarted=true; + maTextWriter.startTextShape(); } + maTextWriter.writeTextPortion( pA->GetRect().TopLeft(), pA->GetText() ); + if( bTextShapeStarted ) + maTextWriter.endTextShape(); } } } @@ -3483,12 +3513,28 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf, if( mrExport.IsUsePositionedCharacters() ) { vcl::Font aFont = ImplSetCorrectFontHeight(); + bool bTextShapeStarted=false; + if( !maTextWriter.isTextShapeStarted() ) + { + bTextShapeStarted=true; + maTextWriter.startTextShape(); + } mpContext->SetFontAttr( aFont ); ImplWriteText( pA->GetPoint(), aText, pA->GetDXArray(), 0 ); + if( bTextShapeStarted ) + maTextWriter.endTextShape(); } else { + bool bTextShapeStarted=false; + if( !maTextWriter.isTextShapeStarted() ) + { + bTextShapeStarted=true; + maTextWriter.startTextShape(); + } maTextWriter.writeTextPortion( pA->GetPoint(), aText ); + if( bTextShapeStarted ) + maTextWriter.endTextShape(); } } } @@ -3508,14 +3554,28 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf, if( mrExport.IsUsePositionedCharacters() ) { vcl::Font aFont = ImplSetCorrectFontHeight(); + bool bTextShapeStarted=false; + if( !maTextWriter.isTextShapeStarted() ) + { + bTextShapeStarted=true; + maTextWriter.startTextShape(); + } mpContext->SetFontAttr( aFont ); ImplWriteText( pA->GetPoint(), aText, NULL, pA->GetWidth() ); + if( bTextShapeStarted ) + maTextWriter.endTextShape(); } else { - maTextWriter.startTextShape(); + bool bTextShapeStarted=false; + if( !maTextWriter.isTextShapeStarted() ) + { + bTextShapeStarted=true; + maTextWriter.startTextShape(); + } maTextWriter.writeTextPortion( pA->GetPoint(), aText ); - maTextWriter.endTextShape(); + if( bTextShapeStarted ) + maTextWriter.endTextShape(); } } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits