[Libreoffice-commits] core.git: svx/source
Armin Le Grand
alg at apache.org
Sun May 19 12:34:06 PDT 2013
svx/source/xoutdev/_xoutbmp.cxx | 77 ++++++++++++++++++++++++++++------------
1 file changed, 54 insertions(+), 23 deletions(-)
New commits:
commit c0b8dd85d4b49e8800e69e614c567ce272ac9780
Author: Armin Le Grand <alg at apache.org>
Date: Thu Sep 27 15:31:38 2012 +0000
Resolves: #i121128# added missing original data export for SVG...
in XOutBitmap::WriteGraphic
(cherry picked from commit 04f10de02296b9bff1e022daabf0b8ff59234e38)
Conflicts:
svx/source/xoutdev/_xoutbmp.cxx
Change-Id: I774557451c924d6e5b2beb22a83de0ce95a429f1
diff --git a/svx/source/xoutdev/_xoutbmp.cxx b/svx/source/xoutdev/_xoutbmp.cxx
index 62a6137..33e36ee 100644
--- a/svx/source/xoutdev/_xoutbmp.cxx
+++ b/svx/source/xoutdev/_xoutbmp.cxx
@@ -141,40 +141,71 @@ sal_uInt16 XOutBitmap::WriteGraphic( const Graphic& rGraphic, String& rFileName,
aURL.setBase( aName );
}
- if( ( nFlags & XOUTBMP_USE_NATIVE_IF_POSSIBLE ) &&
- !( nFlags & XOUTBMP_MIRROR_HORZ ) &&
- !( nFlags & XOUTBMP_MIRROR_VERT ) &&
- ( rGraphic.GetType() != GRAPHIC_GDIMETAFILE ) && rGraphic.IsLink() )
+ // #i121128# use shortcut to write SVG data in original form (if possible)
+ const SvgDataPtr aSvgDataPtr(rGraphic.getSvgData());
+
+ if(aSvgDataPtr.get()
+ && aSvgDataPtr->getSvgDataArrayLength()
+ && rFilterName.EqualsIgnoreCaseAscii("svg"))
{
- // try to write native link
- const GfxLink aGfxLink( ( (Graphic&) rGraphic ).GetLink() );
+ if(!(nFlags & XOUTBMP_DONT_ADD_EXTENSION))
+ {
+ aURL.setExtension(rFilterName);
+ }
- switch( aGfxLink.GetType() )
+ rFileName = aURL.GetMainURL(INetURLObject::NO_DECODE);
+ SfxMedium aMedium(aURL.GetMainURL(INetURLObject::NO_DECODE), STREAM_WRITE|STREAM_SHARE_DENYNONE|STREAM_TRUNC);
+ SvStream* pOStm = aMedium.GetOutStream();
+
+ if(pOStm)
{
- case( GFX_LINK_TYPE_NATIVE_GIF ): aExt = FORMAT_GIF; break;
- case( GFX_LINK_TYPE_NATIVE_JPG ): aExt = FORMAT_JPG; break;
- case( GFX_LINK_TYPE_NATIVE_PNG ): aExt = FORMAT_PNG; break;
+ pOStm->Write(aSvgDataPtr->getSvgDataArray().get(), aSvgDataPtr->getSvgDataArrayLength());
+ aMedium.Commit();
- default:
- break;
+ if(!aMedium.GetError())
+ {
+ nErr = GRFILTER_OK;
+ }
}
+ }
- if( aExt.Len() )
+ if( GRFILTER_OK != nErr )
+ {
+ if( ( nFlags & XOUTBMP_USE_NATIVE_IF_POSSIBLE ) &&
+ !( nFlags & XOUTBMP_MIRROR_HORZ ) &&
+ !( nFlags & XOUTBMP_MIRROR_VERT ) &&
+ ( rGraphic.GetType() != GRAPHIC_GDIMETAFILE ) && rGraphic.IsLink() )
{
- if( 0 == (nFlags & XOUTBMP_DONT_ADD_EXTENSION))
- aURL.setExtension( aExt );
- rFileName = aURL.GetMainURL( INetURLObject::NO_DECODE );
+ // try to write native link
+ const GfxLink aGfxLink( ( (Graphic&) rGraphic ).GetLink() );
- SfxMedium aMedium( aURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_WRITE | STREAM_SHARE_DENYNONE | STREAM_TRUNC );
- SvStream* pOStm = aMedium.GetOutStream();
+ switch( aGfxLink.GetType() )
+ {
+ case( GFX_LINK_TYPE_NATIVE_GIF ): aExt = FORMAT_GIF; break;
+ case( GFX_LINK_TYPE_NATIVE_JPG ): aExt = FORMAT_JPG; break;
+ case( GFX_LINK_TYPE_NATIVE_PNG ): aExt = FORMAT_PNG; break;
- if( pOStm && aGfxLink.GetDataSize() && aGfxLink.GetData() )
+ default:
+ break;
+ }
+
+ if( aExt.Len() )
{
- pOStm->Write( aGfxLink.GetData(), aGfxLink.GetDataSize() );
- aMedium.Commit();
+ if( 0 == (nFlags & XOUTBMP_DONT_ADD_EXTENSION))
+ aURL.setExtension( aExt );
+ rFileName = aURL.GetMainURL( INetURLObject::NO_DECODE );
- if( !aMedium.GetError() )
- nErr = GRFILTER_OK;
+ SfxMedium aMedium(aURL.GetMainURL(INetURLObject::NO_DECODE), STREAM_WRITE | STREAM_SHARE_DENYNONE | STREAM_TRUNC);
+ SvStream* pOStm = aMedium.GetOutStream();
+
+ if( pOStm && aGfxLink.GetDataSize() && aGfxLink.GetData() )
+ {
+ pOStm->Write( aGfxLink.GetData(), aGfxLink.GetDataSize() );
+ aMedium.Commit();
+
+ if( !aMedium.GetError() )
+ nErr = GRFILTER_OK;
+ }
}
}
}
More information about the Libreoffice-commits
mailing list