diff options
author | Mark Page <aptitude@btconnect.com> | 2016-07-05 14:33:20 +0100 |
---|---|---|
committer | Noel Grandin <noelgrandin@gmail.com> | 2016-07-11 06:32:00 +0000 |
commit | b8c8b0d0c2bb2a1ce61e4d94d0a3e0636db658fa (patch) | |
tree | 922591d03f342f5585e935cd54edae14f533d252 /vcl/source/filter | |
parent | a4d40892b78070c9e54e0c8a30ed20d3395e68cd (diff) |
Modify ImpGraphic class, GraphicReader context to use unique ptr
Change-Id: I51c3995f4a6e940a5235524eb94dd356b27ae8d7
Reviewed-on: https://gerrit.libreoffice.org/26955
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Diffstat (limited to 'vcl/source/filter')
-rw-r--r-- | vcl/source/filter/graphicfilter.cxx | 22 | ||||
-rw-r--r-- | vcl/source/filter/igif/gifread.cxx | 17 | ||||
-rw-r--r-- | vcl/source/filter/ixbm/xbmread.cxx | 24 | ||||
-rw-r--r-- | vcl/source/filter/ixpm/xpmread.cxx | 24 | ||||
-rw-r--r-- | vcl/source/filter/jpeg/jpeg.cxx | 23 |
5 files changed, 54 insertions, 56 deletions
diff --git a/vcl/source/filter/graphicfilter.cxx b/vcl/source/filter/graphicfilter.cxx index b65a8a02ea78..27fb8a20a23b 100644 --- a/vcl/source/filter/graphicfilter.cxx +++ b/vcl/source/filter/graphicfilter.cxx @@ -1330,17 +1330,17 @@ sal_uInt16 GraphicFilter::ImportGraphic( Graphic& rGraphic, const OUString& rPat css::uno::Sequence< css::beans::PropertyValue >* pFilterData, WMF_EXTERNALHEADER *pExtHeader ) { - OUString aFilterName; - OUString aExternalFilterName; - sal_uLong nStreamBegin; - sal_uInt16 nStatus; - GraphicReader* pContext = rGraphic.GetContext(); - GfxLinkType eLinkType = GfxLinkType::NONE; - bool bDummyContext = rGraphic.IsDummyContext(); - const bool bLinkSet = rGraphic.IsLink(); - FilterConfigItem* pFilterConfigItem = nullptr; - - Size aPreviewSizeHint( 0, 0 ); + OUString aFilterName; + OUString aExternalFilterName; + sal_uLong nStreamBegin; + sal_uInt16 nStatus; + std::shared_ptr<GraphicReader> pContext = rGraphic.GetContext(); + GfxLinkType eLinkType = GfxLinkType::NONE; + bool bDummyContext = rGraphic.IsDummyContext(); + const bool bLinkSet = rGraphic.IsLink(); + FilterConfigItem* pFilterConfigItem = nullptr; + + Size aPreviewSizeHint( 0, 0 ); bool bAllowPartialStreamRead = false; bool bCreateNativeLink = true; diff --git a/vcl/source/filter/igif/gifread.cxx b/vcl/source/filter/igif/gifread.cxx index 0609314924c7..47fbce964ee0 100644 --- a/vcl/source/filter/igif/gifread.cxx +++ b/vcl/source/filter/igif/gifread.cxx @@ -885,18 +885,21 @@ ReadState GIFReader::ReadGIF( Graphic& rGraphic ) VCL_DLLPUBLIC bool ImportGIF( SvStream & rStm, Graphic& rGraphic ) { - std::unique_ptr<GIFReader> xGIFReader(static_cast<GIFReader*>(rGraphic.GetContext())); + std::shared_ptr<GraphicReader> pContext = rGraphic.GetContext(); rGraphic.SetContext(nullptr); + GIFReader* pGIFReader = dynamic_cast<GIFReader*>( pContext.get() ); + if (!pGIFReader) + { + pContext = std::make_shared<GIFReader>( rStm ); + pGIFReader = static_cast<GIFReader*>( pContext.get() ); + } SvStreamEndian nOldFormat = rStm.GetEndian(); rStm.SetEndian( SvStreamEndian::LITTLE ); - if (!xGIFReader) - xGIFReader.reset(new GIFReader(rStm)); - bool bRet = true; - ReadState eReadState = xGIFReader->ReadGIF(rGraphic); + ReadState eReadState = pGIFReader->ReadGIF(rGraphic); if (eReadState == GIFREAD_ERROR) { @@ -904,8 +907,8 @@ VCL_DLLPUBLIC bool ImportGIF( SvStream & rStm, Graphic& rGraphic ) } else if (eReadState == GIFREAD_NEED_MORE) { - rGraphic = xGIFReader->GetIntermediateGraphic(); - rGraphic.SetContext(xGIFReader.release()); + rGraphic = pGIFReader->GetIntermediateGraphic(); + rGraphic.SetContext(pContext); } rStm.SetEndian(nOldFormat); diff --git a/vcl/source/filter/ixbm/xbmread.cxx b/vcl/source/filter/ixbm/xbmread.cxx index a8a59a741891..4053f056d53e 100644 --- a/vcl/source/filter/ixbm/xbmread.cxx +++ b/vcl/source/filter/ixbm/xbmread.cxx @@ -381,25 +381,25 @@ ReadState XBMReader::ReadXBM( Graphic& rGraphic ) VCL_DLLPUBLIC bool ImportXBM( SvStream& rStm, Graphic& rGraphic ) { - XBMReader* pXBMReader = static_cast<XBMReader*>( rGraphic.GetContext() ); - ReadState eReadState; - bool bRet = true; + std::shared_ptr<GraphicReader> pContext = rGraphic.GetContext(); + rGraphic.SetContext(nullptr); + XBMReader* pXBMReader = dynamic_cast<XBMReader*>( pContext.get() ); + if (!pXBMReader) + { + pContext = std::make_shared<XBMReader>( rStm ); + pXBMReader = static_cast<XBMReader*>( pContext.get() ); + } - if( !pXBMReader ) - pXBMReader = new XBMReader( rStm ); + bool bRet = true; - rGraphic.SetContext( nullptr ); - eReadState = pXBMReader->ReadXBM( rGraphic ); + ReadState eReadState = pXBMReader->ReadXBM( rGraphic ); if( eReadState == XBMREAD_ERROR ) { bRet = false; - delete pXBMReader; } - else if( eReadState == XBMREAD_OK ) - delete pXBMReader; - else - rGraphic.SetContext( pXBMReader ); + else if( eReadState == XBMREAD_NEED_MORE ) + rGraphic.SetContext( pContext ); return bRet; } diff --git a/vcl/source/filter/ixpm/xpmread.cxx b/vcl/source/filter/ixpm/xpmread.cxx index ef4ef3d1d953..382efb7f3769 100644 --- a/vcl/source/filter/ixpm/xpmread.cxx +++ b/vcl/source/filter/ixpm/xpmread.cxx @@ -723,25 +723,25 @@ bool XPMReader::ImplGetString() VCL_DLLPUBLIC bool ImportXPM( SvStream& rStm, Graphic& rGraphic ) { - XPMReader* pXPMReader = static_cast<XPMReader*>(rGraphic.GetContext()); - ReadState eReadState; - bool bRet = true; + std::shared_ptr<GraphicReader> pContext = rGraphic.GetContext(); + rGraphic.SetContext(nullptr); + XPMReader* pXPMReader = dynamic_cast<XPMReader*>( pContext.get() ); + if (!pXPMReader) + { + pContext = std::make_shared<XPMReader>( rStm ); + pXPMReader = static_cast<XPMReader*>( pContext.get() ); + } - if( !pXPMReader ) - pXPMReader = new XPMReader( rStm ); + bool bRet = true; - rGraphic.SetContext( nullptr ); - eReadState = pXPMReader->ReadXPM( rGraphic ); + ReadState eReadState = pXPMReader->ReadXPM( rGraphic ); if( eReadState == XPMREAD_ERROR ) { bRet = false; - delete pXPMReader; } - else if( eReadState == XPMREAD_OK ) - delete pXPMReader; - else - rGraphic.SetContext( pXPMReader ); + else if( eReadState == XPMREAD_NEED_MORE ) + rGraphic.SetContext( pContext ); return bRet; } diff --git a/vcl/source/filter/jpeg/jpeg.cxx b/vcl/source/filter/jpeg/jpeg.cxx index c3769870aa3f..ca780f1c6bcc 100644 --- a/vcl/source/filter/jpeg/jpeg.cxx +++ b/vcl/source/filter/jpeg/jpeg.cxx @@ -27,14 +27,15 @@ VCL_DLLPUBLIC bool ImportJPEG( SvStream& rInputStream, Graphic& rGraphic, void* pCallerData, GraphicFilterImportFlags nImportFlags ) { - ReadState eReadState; bool bReturn = true; - JPEGReader* pJPEGReader = static_cast<JPEGReader*>( rGraphic.GetContext() ); - - if( !pJPEGReader ) + std::shared_ptr<GraphicReader> pContext = rGraphic.GetContext(); + rGraphic.SetContext(nullptr); + JPEGReader* pJPEGReader = dynamic_cast<JPEGReader*>( pContext.get() ); + if (!pJPEGReader) { - pJPEGReader = new JPEGReader( rInputStream, pCallerData, bool( nImportFlags & GraphicFilterImportFlags::SetLogsizeForJpeg ) ); + pContext = std::make_shared<JPEGReader>( rInputStream, pCallerData, bool( nImportFlags & GraphicFilterImportFlags::SetLogsizeForJpeg ) ); + pJPEGReader = static_cast<JPEGReader*>( pContext.get() ); } if( nImportFlags & GraphicFilterImportFlags::ForPreview ) @@ -46,21 +47,15 @@ VCL_DLLPUBLIC bool ImportJPEG( SvStream& rInputStream, Graphic& rGraphic, void* pJPEGReader->DisablePreviewMode(); } - rGraphic.SetContext( nullptr ); - eReadState = pJPEGReader->Read( rGraphic ); + ReadState eReadState = pJPEGReader->Read( rGraphic ); if( eReadState == JPEGREAD_ERROR ) { bReturn = false; - delete pJPEGReader; - } - else if( eReadState == JPEGREAD_OK ) - { - delete pJPEGReader; } - else + else if( eReadState == JPEGREAD_NEED_MORE ) { - rGraphic.SetContext( pJPEGReader ); + rGraphic.SetContext( pContext ); } return bReturn; |