filter/source/graphicfilter/icgm/cgm.cxx | 55 ++++++++++++++----------------- sd/source/filter/cgm/sdcgmfilter.cxx | 8 ++-- 2 files changed, 30 insertions(+), 33 deletions(-)
New commits: commit 62961938cab795f8b178f4049f2efca5a9e251df Author: Caolán McNamara <[email protected]> Date: Sat Apr 1 16:33:02 2017 +0100 rework ImportCGM to take a SvStream Change-Id: I261cb5afd251e96fa676ba37fa397159eb7fce32 diff --git a/filter/source/graphicfilter/icgm/cgm.cxx b/filter/source/graphicfilter/icgm/cgm.cxx index 00d3ceca3567..3e9e0fcdf05e 100644 --- a/filter/source/graphicfilter/icgm/cgm.cxx +++ b/filter/source/graphicfilter/icgm/cgm.cxx @@ -18,7 +18,6 @@ */ #include <com/sun/star/task/XStatusIndicator.hpp> -#include <unotools/ucbstreamhelper.hxx> #include <osl/endian.h> #include <vcl/virdev.hxx> @@ -707,7 +706,7 @@ bool CGM::Write( SvStream& rIStm ) // GraphicImport - the exported function extern "C" SAL_DLLPUBLIC_EXPORT sal_uInt32 SAL_CALL -ImportCGM( OUString const & rFileName, uno::Reference< frame::XModel > const & rXModel, sal_uInt32 nMode, css::uno::Reference<css::task::XStatusIndicator> const & aXStatInd ) +ImportCGM(SvStream& rIn, uno::Reference< frame::XModel > const & rXModel, sal_uInt32 nMode, css::uno::Reference<css::task::XStatusIndicator> const & aXStatInd) { sal_uInt32 nStatus = 0; // retvalue == 0 -> ERROR @@ -722,41 +721,37 @@ ImportCGM( OUString const & rFileName, uno::Reference< frame::XModel > const & r { if ( nMode & CGM_IMPORT_CGM ) { - std::unique_ptr<SvStream> pIn(::utl::UcbStreamHelper::CreateStream( rFileName, StreamMode::READ )); - if ( pIn ) - { - pIn->SetEndian( SvStreamEndian::BIG ); - sal_uInt64 const nInSize = pIn->remainingSize(); - pIn->Seek( 0 ); + rIn.SetEndian(SvStreamEndian::BIG); + sal_uInt64 const nInSize = rIn.remainingSize(); + rIn.Seek(0); - sal_uInt32 nNext = 0; - sal_uInt32 nAdd = nInSize / 20; - bool bProgressBar = aXStatInd.is(); - if ( bProgressBar ) - aXStatInd->start( "CGM Import" , nInSize ); + sal_uInt32 nNext = 0; + sal_uInt32 nAdd = nInSize / 20; + bool bProgressBar = aXStatInd.is(); + if ( bProgressBar ) + aXStatInd->start( "CGM Import" , nInSize ); - while ( pCGM->IsValid() && ( pIn->Tell() < nInSize ) && !pCGM->IsFinished() ) + while (pCGM->IsValid() && (rIn.Tell() < nInSize) && !pCGM->IsFinished()) + { + if ( bProgressBar ) { - if ( bProgressBar ) + sal_uInt32 nCurrentPos = rIn.Tell(); + if ( nCurrentPos >= nNext ) { - sal_uInt32 nCurrentPos = pIn->Tell(); - if ( nCurrentPos >= nNext ) - { - aXStatInd->setValue( nCurrentPos ); - nNext = nCurrentPos + nAdd; - } + aXStatInd->setValue( nCurrentPos ); + nNext = nCurrentPos + nAdd; } - - if ( !pCGM->Write( *pIn ) ) - break; } - if ( pCGM->IsValid() ) - { - nStatus = pCGM->GetBackGroundColor() | 0xff000000; - } - if ( bProgressBar ) - aXStatInd->end(); + + if (!pCGM->Write(rIn)) + break; + } + if ( pCGM->IsValid() ) + { + nStatus = pCGM->GetBackGroundColor() | 0xff000000; } + if ( bProgressBar ) + aXStatInd->end(); } } } diff --git a/sd/source/filter/cgm/sdcgmfilter.cxx b/sd/source/filter/cgm/sdcgmfilter.cxx index 9c34f6286b53..1c22e164f676 100644 --- a/sd/source/filter/cgm/sdcgmfilter.cxx +++ b/sd/source/filter/cgm/sdcgmfilter.cxx @@ -19,6 +19,7 @@ #include <osl/module.hxx> #include <tools/urlobj.hxx> +#include <unotools/ucbstreamhelper.hxx> #include <svl/itemset.hxx> #include <sfx2/docfile.hxx> #include <sfx2/docfilt.hxx> @@ -40,11 +41,11 @@ using namespace ::com::sun::star::uno; using namespace ::com::sun::star::task; using namespace ::com::sun::star::frame; -typedef sal_uInt32 ( SAL_CALL *ImportCGMPointer )( OUString const &, Reference< XModel > const &, sal_uInt32, Reference< XStatusIndicator > const & ); +typedef sal_uInt32 ( SAL_CALL *ImportCGMPointer )(SvStream&, Reference< XModel > const &, sal_uInt32, Reference< XStatusIndicator > const &); #ifdef DISABLE_DYNLOADING -extern "C" sal_uInt32 ImportCGM( OUString const &, Reference< XModel > const &, sal_uInt32, Reference< XStatusIndicator > const & ); +extern "C" sal_uInt32 ImportCGM(SvStream&, Reference< XModel > const &, sal_uInt32, Reference< XStatusIndicator > const &); #endif @@ -82,7 +83,8 @@ bool SdCGMFilter::Import() mrDocument.CreateFirstPages(); CreateStatusIndicator(); - nRetValue = FncImportCGM( aFileURL, mxModel, CGM_IMPORT_CGM | CGM_BIG_ENDIAN | CGM_EXPORT_IMPRESS, mxStatusIndicator ); + std::unique_ptr<SvStream> xIn(::utl::UcbStreamHelper::CreateStream(aFileURL, StreamMode::READ)); + nRetValue = xIn ? FncImportCGM(*xIn, mxModel, CGM_IMPORT_CGM | CGM_BIG_ENDIAN | CGM_EXPORT_IMPRESS, mxStatusIndicator) : 0; if( nRetValue ) {
_______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
