summaryrefslogtreecommitdiff
path: root/vcl/source/gdi/pngread.cxx
diff options
context:
space:
mode:
authorMark Page <aptitude@btconnect.com>2016-11-30 14:10:30 +0000
committerMichael Stahl <mstahl@redhat.com>2016-11-30 22:08:03 +0000
commit64e6e7c6e7b881bf240de82ef020b290036e7e0e (patch)
tree9f4b4a2c1ac819f2583c1c0f9738984143507f18 /vcl/source/gdi/pngread.cxx
parent0de5101df0a8db41ad067b2575d16fd9b5a9a751 (diff)
Use smart pointers for gdi pdf functions
Change-Id: Ia78adfbd0d07449e12a7e0d02acf8a1a1108437c Reviewed-on: https://gerrit.libreoffice.org/31421 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'vcl/source/gdi/pngread.cxx')
-rw-r--r--vcl/source/gdi/pngread.cxx26
1 files changed, 11 insertions, 15 deletions
diff --git a/vcl/source/gdi/pngread.cxx b/vcl/source/gdi/pngread.cxx
index c26a84129de4..f7ea29e23e19 100644
--- a/vcl/source/gdi/pngread.cxx
+++ b/vcl/source/gdi/pngread.cxx
@@ -28,6 +28,7 @@
#include <vcl/svapp.hxx>
#include <vcl/alpha.hxx>
#include <osl/endian.h>
+#include <o3tl/make_unique.hxx>
namespace vcl
{
@@ -74,11 +75,12 @@ private:
std::vector<vcl::PNGReader::ChunkData>::iterator maChunkIter;
std::vector<sal_uInt8>::iterator maDataIter;
- Bitmap* mpBmp;
- BitmapWriteAccess* mpAcc;
- Bitmap* mpMaskBmp;
- AlphaMask* mpAlphaMask;
- BitmapWriteAccess* mpMaskAcc;
+ std::unique_ptr<Bitmap> mpBmp;
+ BitmapWriteAccess* mpAcc;
+ std::unique_ptr<Bitmap> mpMaskBmp;
+ std::unique_ptr<AlphaMask> mpAlphaMask;
+ BitmapWriteAccess* mpMaskAcc;
+
ZCodec mpZCodec;
sal_uInt8* mpInflateInBuf; // as big as the size of a scanline + alphachannel + 1
sal_uInt8* mpScanPrior; // pointer to the latest scanline
@@ -165,10 +167,7 @@ public:
PNGReaderImpl::PNGReaderImpl( SvStream& rPNGStream )
: mrPNGStream( rPNGStream ),
- mpBmp ( nullptr ),
mpAcc ( nullptr ),
- mpMaskBmp ( nullptr ),
- mpAlphaMask ( nullptr ),
mpMaskAcc ( nullptr ),
mpInflateInBuf ( nullptr ),
mpScanPrior ( nullptr ),
@@ -246,9 +245,6 @@ PNGReaderImpl::~PNGReaderImpl()
if( mpColorTable != mpDefaultColorTable )
delete[] mpColorTable;
- delete mpBmp;
- delete mpAlphaMask;
- delete mpMaskBmp;
delete[] mpTransTab;
delete[] mpInflateInBuf;
delete[] mpScanPrior;
@@ -665,14 +661,14 @@ bool PNGReaderImpl::ImplReadHeader( const Size& rPreviewSizeHint )
if ( !mpInflateInBuf || !mpScanPrior )
return false;
- mpBmp = new Bitmap( maTargetSize, mnTargetDepth );
+ mpBmp = o3tl::make_unique<Bitmap>( maTargetSize, mnTargetDepth );
mpAcc = mpBmp->AcquireWriteAccess();
if( !mpAcc )
return false;
if ( mbAlphaChannel )
{
- mpAlphaMask = new AlphaMask( maTargetSize );
+ mpAlphaMask = o3tl::make_unique<AlphaMask>( maTargetSize );
mpAlphaMask->Erase( 128 );
mpMaskAcc = mpAlphaMask->AcquireWriteAccess();
if( !mpMaskAcc )
@@ -789,12 +785,12 @@ bool PNGReaderImpl::ImplReadTransparent()
{
if( bNeedAlpha)
{
- mpAlphaMask = new AlphaMask( maTargetSize );
+ mpAlphaMask = o3tl::make_unique<AlphaMask>( maTargetSize );
mpMaskAcc = mpAlphaMask->AcquireWriteAccess();
}
else
{
- mpMaskBmp = new Bitmap( maTargetSize, 1 );
+ mpMaskBmp = o3tl::make_unique<Bitmap>( maTargetSize, 1 );
mpMaskAcc = mpMaskBmp->AcquireWriteAccess();
}
mbTransparent = (mpMaskAcc != nullptr);