diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2015-11-19 12:57:52 +0100 |
---|---|---|
committer | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2015-11-19 13:02:54 +0100 |
commit | 25d60232ff5d882017ffb88453f16fd6cef5534c (patch) | |
tree | b62faddecbe82d0c75a51335c6518e3cdb20f558 | |
parent | 6480b4d11a0cf2dd489d30b6290aa6d831704a45 (diff) |
vcl: move and split up "Image" related sources to "image" folder
This commit moves all sources related to Image class into its own
"vcl/source/image" folder. Sources containing more classes were
split up into its own source file.
Change-Id: Ie6edcdb0a7caf936bccdc210c31f78bb15667945
-rw-r--r-- | vcl/Library_vcl.mk | 13 | ||||
-rw-r--r-- | vcl/source/image/Image.cxx | 277 | ||||
-rw-r--r-- | vcl/source/image/ImageArrayData.cxx | 58 | ||||
-rw-r--r-- | vcl/source/image/ImageList.cxx (renamed from vcl/source/gdi/image.cxx) | 235 | ||||
-rw-r--r-- | vcl/source/image/ImageRepository.cxx (renamed from vcl/source/gdi/imagerepository.cxx) | 0 | ||||
-rw-r--r-- | vcl/source/image/ImplImage.cxx | 53 | ||||
-rw-r--r-- | vcl/source/image/ImplImageBmp.cxx (renamed from vcl/source/gdi/impimage.cxx) | 106 | ||||
-rw-r--r-- | vcl/source/image/ImplImageData.cxx | 48 | ||||
-rw-r--r-- | vcl/source/image/ImplImageList.cxx | 75 | ||||
-rw-r--r-- | vcl/source/image/ImplImageTree.cxx (renamed from vcl/source/gdi/impimagetree.cxx) | 0 |
10 files changed, 520 insertions, 345 deletions
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk index ef21b307b900..e8282584bd55 100644 --- a/vcl/Library_vcl.mk +++ b/vcl/Library_vcl.mk @@ -283,14 +283,10 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\ vcl/source/gdi/graph \ vcl/source/gdi/graphictools \ vcl/source/gdi/hatch \ - vcl/source/gdi/image \ - vcl/source/gdi/imagerepository \ vcl/source/gdi/impanmvw \ vcl/source/gdi/impbmp \ vcl/source/gdi/impfont \ vcl/source/gdi/impgraph \ - vcl/source/gdi/impimage \ - vcl/source/gdi/impimagetree \ vcl/source/gdi/impvect \ vcl/source/gdi/jobset \ vcl/source/gdi/lineinfo \ @@ -329,6 +325,15 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\ vcl/source/bitmap/BitmapTools \ vcl/source/bitmap/checksum \ vcl/source/bitmap/CommandImageResolver \ + vcl/source/image/Image \ + vcl/source/image/ImageArrayData \ + vcl/source/image/ImageList \ + vcl/source/image/ImageRepository \ + vcl/source/image/ImplImage \ + vcl/source/image/ImplImageBmp \ + vcl/source/image/ImplImageData \ + vcl/source/image/ImplImageList \ + vcl/source/image/ImplImageTree \ vcl/source/helper/canvasbitmap \ vcl/source/helper/canvastools \ vcl/source/helper/commandinfoprovider \ diff --git a/vcl/source/image/Image.cxx b/vcl/source/image/Image.cxx new file mode 100644 index 000000000000..cc1f46714ce3 --- /dev/null +++ b/vcl/source/image/Image.cxx @@ -0,0 +1,277 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <osl/file.hxx> +#include <tools/debug.hxx> +#include <tools/stream.hxx> +#include <tools/rc.h> +#include <tools/rc.hxx> +#include <tools/resmgr.hxx> +#include <vcl/settings.hxx> +#include <vcl/outdev.hxx> +#include <vcl/graph.hxx> +#include <vcl/graphicfilter.hxx> +#include <vcl/svapp.hxx> +#include <vcl/image.hxx> +#include <vcl/imagerepository.hxx> +#include <vcl/implimagetree.hxx> +#include <image.h> + +#if OSL_DEBUG_LEVEL > 0 +#include <rtl/strbuf.hxx> +#endif + +using namespace ::com::sun::star; + +Image::Image() : + mpImplData( nullptr ) +{ +} + +Image::Image( const ResId& rResId ) : + mpImplData( nullptr ) +{ + + rResId.SetRT( RSC_IMAGE ); + + ResMgr* pResMgr = rResId.GetResMgr(); + if( pResMgr && pResMgr->GetResource( rResId ) ) + { + pResMgr->Increment( sizeof( RSHEADER_TYPE ) ); + + BitmapEx aBmpEx; + sal_uLong nObjMask = pResMgr->ReadLong(); + + if( nObjMask & RSC_IMAGE_IMAGEBITMAP ) + { + aBmpEx = BitmapEx( ResId( static_cast<RSHEADER_TYPE*>(pResMgr->GetClass()), *pResMgr ) ); + pResMgr->Increment( ResMgr::GetObjSize( static_cast<RSHEADER_TYPE*>(pResMgr->GetClass()) ) ); + } + + if( nObjMask & RSC_IMAGE_MASKBITMAP ) + { + if( !aBmpEx.IsEmpty() && aBmpEx.GetTransparentType() == TRANSPARENT_NONE ) + { + const Bitmap aMaskBitmap( ResId( static_cast<RSHEADER_TYPE*>(pResMgr->GetClass()), *pResMgr ) ); + aBmpEx = BitmapEx( aBmpEx.GetBitmap(), aMaskBitmap ); + } + + pResMgr->Increment( ResMgr::GetObjSize( static_cast<RSHEADER_TYPE*>(pResMgr->GetClass()) ) ); + } + + if( nObjMask & RSC_IMAGE_MASKCOLOR ) + { + if( !aBmpEx.IsEmpty() && aBmpEx.GetTransparentType() == TRANSPARENT_NONE ) + { + const Color aMaskColor( ResId( static_cast<RSHEADER_TYPE*>(pResMgr->GetClass()), *pResMgr ) ); + aBmpEx = BitmapEx( aBmpEx.GetBitmap(), aMaskColor ); + } + + pResMgr->Increment( ResMgr::GetObjSize( static_cast<RSHEADER_TYPE*>(pResMgr->GetClass()) ) ); + } + if( ! aBmpEx.IsEmpty() ) + ImplInit( aBmpEx ); + } +} + +Image::Image( const Image& rImage ) : + mpImplData( rImage.mpImplData ) +{ + + if( mpImplData ) + ++mpImplData->mnRefCount; +} + +Image::Image( const BitmapEx& rBitmapEx ) : + mpImplData( nullptr ) +{ + + ImplInit( rBitmapEx ); +} + +Image::Image( const Bitmap& rBitmap ) : + mpImplData( nullptr ) +{ + + ImplInit( rBitmap ); +} + +Image::Image( const Bitmap& rBitmap, const Bitmap& rMaskBitmap ) : + mpImplData( nullptr ) +{ + + const BitmapEx aBmpEx( rBitmap, rMaskBitmap ); + + ImplInit( aBmpEx ); +} + +Image::Image( const Bitmap& rBitmap, const Color& rColor ) : + mpImplData( nullptr ) +{ + + const BitmapEx aBmpEx( rBitmap, rColor ); + + ImplInit( aBmpEx ); +} + +Image::Image( const uno::Reference< graphic::XGraphic >& rxGraphic ) : + mpImplData( nullptr ) +{ + + const Graphic aGraphic( rxGraphic ); + ImplInit( aGraphic.GetBitmapEx() ); +} + +Image::Image( const OUString &rFileUrl ) : + mpImplData( nullptr ) +{ + OUString aTmp; + osl::FileBase::getSystemPathFromFileURL( rFileUrl, aTmp ); + Graphic aGraphic; + const OUString aFilterName( IMP_PNG ); + if( GRFILTER_OK == GraphicFilter::LoadGraphic( aTmp, aFilterName, aGraphic ) ) + { + ImplInit( aGraphic.GetBitmapEx() ); + } +} + +Image::~Image() +{ + + if( mpImplData && ( 0 == --mpImplData->mnRefCount ) ) + delete mpImplData; +} + +void Image::ImplInit( const BitmapEx& rBmpEx ) +{ + if( !rBmpEx.IsEmpty() ) + { + mpImplData = new ImplImage; + + if( rBmpEx.GetTransparentType() == TRANSPARENT_NONE ) + { + mpImplData->meType = IMAGETYPE_BITMAP; + mpImplData->mpData = new Bitmap( rBmpEx.GetBitmap() ); + } + else + { + mpImplData->meType = IMAGETYPE_IMAGE; + mpImplData->mpData = new ImplImageData( rBmpEx ); + } + } +} + +Size Image::GetSizePixel() const +{ + + Size aRet; + + if( mpImplData ) + { + switch( mpImplData->meType ) + { + case IMAGETYPE_BITMAP: + aRet = static_cast< Bitmap* >( mpImplData->mpData )->GetSizePixel(); + break; + + case IMAGETYPE_IMAGE: + aRet = static_cast< ImplImageData* >( mpImplData->mpData )->maBmpEx.GetSizePixel(); + break; + } + } + + return aRet; +} + +BitmapEx Image::GetBitmapEx() const +{ + + BitmapEx aRet; + + if( mpImplData ) + { + switch( mpImplData->meType ) + { + case IMAGETYPE_BITMAP: + aRet = *static_cast< Bitmap* >( mpImplData->mpData ); + break; + + case IMAGETYPE_IMAGE: + aRet = static_cast< ImplImageData* >( mpImplData->mpData )->maBmpEx; + break; + } + } + + return aRet; +} + +uno::Reference< graphic::XGraphic > Image::GetXGraphic() const +{ + const Graphic aGraphic( GetBitmapEx() ); + + return aGraphic.GetXGraphic(); +} + +Image& Image::operator=( const Image& rImage ) +{ + + if( rImage.mpImplData ) + ++rImage.mpImplData->mnRefCount; + + if( mpImplData && ( 0 == --mpImplData->mnRefCount ) ) + delete mpImplData; + + mpImplData = rImage.mpImplData; + + return *this; +} + +bool Image::operator==( const Image& rImage ) const +{ + + bool bRet = false; + + if( rImage.mpImplData == mpImplData ) + bRet = true; + else if( !rImage.mpImplData || !mpImplData ) + bRet = false; + else if( rImage.mpImplData->mpData == mpImplData->mpData ) + bRet = true; + else if( rImage.mpImplData->meType == mpImplData->meType ) + { + switch( mpImplData->meType ) + { + case IMAGETYPE_BITMAP: + bRet = ( *static_cast< Bitmap* >( rImage.mpImplData->mpData ) == *static_cast< Bitmap* >( mpImplData->mpData ) ); + break; + + case IMAGETYPE_IMAGE: + bRet = static_cast< ImplImageData* >( rImage.mpImplData->mpData )->IsEqual( *static_cast< ImplImageData* >( mpImplData->mpData ) ); + break; + + default: + bRet = false; + break; + } + } + + return bRet; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/image/ImageArrayData.cxx b/vcl/source/image/ImageArrayData.cxx new file mode 100644 index 000000000000..d7b3bbbcf0ba --- /dev/null +++ b/vcl/source/image/ImageArrayData.cxx @@ -0,0 +1,58 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <vcl/outdev.hxx> +#include <vcl/bitmapex.hxx> +#include <vcl/alpha.hxx> +#include <vcl/window.hxx> +#include <vcl/bmpacc.hxx> +#include <vcl/virdev.hxx> +#include <vcl/image.hxx> +#include <vcl/settings.hxx> + +#include <image.h> +#include <memory> + +ImageAryData::ImageAryData( const ImageAryData& rData ) : + maName( rData.maName ), + mnId( rData.mnId ), + maBitmapEx( rData.maBitmapEx ) +{ +} + +ImageAryData::ImageAryData( const OUString &aName, + sal_uInt16 nId, const BitmapEx &aBitmap ) + : maName( aName ), mnId( nId ), maBitmapEx( aBitmap ) +{ +} + +ImageAryData::~ImageAryData() +{ +} + +ImageAryData& ImageAryData::operator=( const ImageAryData& rData ) +{ + maName = rData.maName; + mnId = rData.mnId; + maBitmapEx = rData.maBitmapEx; + + return *this; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/gdi/image.cxx b/vcl/source/image/ImageList.cxx index 811fca530ca4..6c2dff965074 100644 --- a/vcl/source/gdi/image.cxx +++ b/vcl/source/image/ImageList.cxx @@ -39,241 +39,6 @@ using namespace ::com::sun::star; -Image::Image() : - mpImplData( nullptr ) -{ -} - -Image::Image( const ResId& rResId ) : - mpImplData( nullptr ) -{ - - rResId.SetRT( RSC_IMAGE ); - - ResMgr* pResMgr = rResId.GetResMgr(); - if( pResMgr && pResMgr->GetResource( rResId ) ) - { - pResMgr->Increment( sizeof( RSHEADER_TYPE ) ); - - BitmapEx aBmpEx; - sal_uLong nObjMask = pResMgr->ReadLong(); - - if( nObjMask & RSC_IMAGE_IMAGEBITMAP ) - { - aBmpEx = BitmapEx( ResId( static_cast<RSHEADER_TYPE*>(pResMgr->GetClass()), *pResMgr ) ); - pResMgr->Increment( ResMgr::GetObjSize( static_cast<RSHEADER_TYPE*>(pResMgr->GetClass()) ) ); - } - - if( nObjMask & RSC_IMAGE_MASKBITMAP ) - { - if( !aBmpEx.IsEmpty() && aBmpEx.GetTransparentType() == TRANSPARENT_NONE ) - { - const Bitmap aMaskBitmap( ResId( static_cast<RSHEADER_TYPE*>(pResMgr->GetClass()), *pResMgr ) ); - aBmpEx = BitmapEx( aBmpEx.GetBitmap(), aMaskBitmap ); - } - - pResMgr->Increment( ResMgr::GetObjSize( static_cast<RSHEADER_TYPE*>(pResMgr->GetClass()) ) ); - } - - if( nObjMask & RSC_IMAGE_MASKCOLOR ) - { - if( !aBmpEx.IsEmpty() && aBmpEx.GetTransparentType() == TRANSPARENT_NONE ) - { - const Color aMaskColor( ResId( static_cast<RSHEADER_TYPE*>(pResMgr->GetClass()), *pResMgr ) ); - aBmpEx = BitmapEx( aBmpEx.GetBitmap(), aMaskColor ); - } - - pResMgr->Increment( ResMgr::GetObjSize( static_cast<RSHEADER_TYPE*>(pResMgr->GetClass()) ) ); - } - if( ! aBmpEx.IsEmpty() ) - ImplInit( aBmpEx ); - } -} - -Image::Image( const Image& rImage ) : - mpImplData( rImage.mpImplData ) -{ - - if( mpImplData ) - ++mpImplData->mnRefCount; -} - -Image::Image( const BitmapEx& rBitmapEx ) : - mpImplData( nullptr ) -{ - - ImplInit( rBitmapEx ); -} - -Image::Image( const Bitmap& rBitmap ) : - mpImplData( nullptr ) -{ - - ImplInit( rBitmap ); -} - -Image::Image( const Bitmap& rBitmap, const Bitmap& rMaskBitmap ) : - mpImplData( nullptr ) -{ - - const BitmapEx aBmpEx( rBitmap, rMaskBitmap ); - - ImplInit( aBmpEx ); -} - -Image::Image( const Bitmap& rBitmap, const Color& rColor ) : - mpImplData( nullptr ) -{ - - const BitmapEx aBmpEx( rBitmap, rColor ); - - ImplInit( aBmpEx ); -} - -Image::Image( const uno::Reference< graphic::XGraphic >& rxGraphic ) : - mpImplData( nullptr ) -{ - - const Graphic aGraphic( rxGraphic ); - ImplInit( aGraphic.GetBitmapEx() ); -} - -Image::Image( const OUString &rFileUrl ) : - mpImplData( nullptr ) -{ - OUString aTmp; - osl::FileBase::getSystemPathFromFileURL( rFileUrl, aTmp ); - Graphic aGraphic; - const OUString aFilterName( IMP_PNG ); - if( GRFILTER_OK == GraphicFilter::LoadGraphic( aTmp, aFilterName, aGraphic ) ) - { - ImplInit( aGraphic.GetBitmapEx() ); - } -} - -Image::~Image() -{ - - if( mpImplData && ( 0 == --mpImplData->mnRefCount ) ) - delete mpImplData; -} - -void Image::ImplInit( const BitmapEx& rBmpEx ) -{ - if( !rBmpEx.IsEmpty() ) - { - mpImplData = new ImplImage; - - if( rBmpEx.GetTransparentType() == TRANSPARENT_NONE ) - { - mpImplData->meType = IMAGETYPE_BITMAP; - mpImplData->mpData = new Bitmap( rBmpEx.GetBitmap() ); - } - else - { - mpImplData->meType = IMAGETYPE_IMAGE; - mpImplData->mpData = new ImplImageData( rBmpEx ); - } - } -} - -Size Image::GetSizePixel() const -{ - - Size aRet; - - if( mpImplData ) - { - switch( mpImplData->meType ) - { - case IMAGETYPE_BITMAP: - aRet = static_cast< Bitmap* >( mpImplData->mpData )->GetSizePixel(); - break; - - case IMAGETYPE_IMAGE: - aRet = static_cast< ImplImageData* >( mpImplData->mpData )->maBmpEx.GetSizePixel(); - break; - } - } - - return aRet; -} - -BitmapEx Image::GetBitmapEx() const -{ - - BitmapEx aRet; - - if( mpImplData ) - { - switch( mpImplData->meType ) - { - case IMAGETYPE_BITMAP: - aRet = *static_cast< Bitmap* >( mpImplData->mpData ); - break; - - case IMAGETYPE_IMAGE: - aRet = static_cast< ImplImageData* >( mpImplData->mpData )->maBmpEx; - break; - } - } - - return aRet; -} - -uno::Reference< graphic::XGraphic > Image::GetXGraphic() const -{ - const Graphic aGraphic( GetBitmapEx() ); - - return aGraphic.GetXGraphic(); -} - -Image& Image::operator=( const Image& rImage ) -{ - - if( rImage.mpImplData ) - ++rImage.mpImplData->mnRefCount; - - if( mpImplData && ( 0 == --mpImplData->mnRefCount ) ) - delete mpImplData; - - mpImplData = rImage.mpImplData; - - return *this; -} - -bool Image::operator==( const Image& rImage ) const -{ - - bool bRet = false; - - if( rImage.mpImplData == mpImplData ) - bRet = true; - else if( !rImage.mpImplData || !mpImplData ) - bRet = false; - else if( rImage.mpImplData->mpData == mpImplData->mpData ) - bRet = true; - else if( rImage.mpImplData->meType == mpImplData->meType ) - { - switch( mpImplData->meType ) - { - case IMAGETYPE_BITMAP: - bRet = ( *static_cast< Bitmap* >( rImage.mpImplData->mpData ) == *static_cast< Bitmap* >( mpImplData->mpData ) ); - break; - - case IMAGETYPE_IMAGE: - bRet = static_cast< ImplImageData* >( rImage.mpImplData->mpData )->IsEqual( *static_cast< ImplImageData* >( mpImplData->mpData ) ); - break; - - default: - bRet = false; - break; - } - } - - return bRet; -} - ImageList::ImageList( sal_uInt16 nInit, sal_uInt16 nGrow ) : mpImplData( nullptr ), mnInitSize( nInit ), diff --git a/vcl/source/gdi/imagerepository.cxx b/vcl/source/image/ImageRepository.cxx index dadc622cdcce..dadc622cdcce 100644 --- a/vcl/source/gdi/imagerepository.cxx +++ b/vcl/source/image/ImageRepository.cxx diff --git a/vcl/source/image/ImplImage.cxx b/vcl/source/image/ImplImage.cxx new file mode 100644 index 000000000000..9272cf07b4e1 --- /dev/null +++ b/vcl/source/image/ImplImage.cxx @@ -0,0 +1,53 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <vcl/outdev.hxx> +#include <vcl/bitmapex.hxx> +#include <vcl/alpha.hxx> +#include <vcl/window.hxx> +#include <vcl/bmpacc.hxx> +#include <vcl/virdev.hxx> +#include <vcl/image.hxx> +#include <vcl/settings.hxx> + +#include <image.h> +#include <memory> + +ImplImage::ImplImage() + : mnRefCount(1) + , mpData(nullptr) + , meType(IMAGETYPE_BITMAP) +{ +} + +ImplImage::~ImplImage() +{ + switch( meType ) + { + case IMAGETYPE_BITMAP: + delete static_cast< Bitmap* >( mpData ); + break; + + case IMAGETYPE_IMAGE: + delete static_cast< ImplImageData* >( mpData ); + break; + } +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/gdi/impimage.cxx b/vcl/source/image/ImplImageBmp.cxx index 813f05e5d108..cb83cc3ae4ea 100644 --- a/vcl/source/gdi/impimage.cxx +++ b/vcl/source/image/ImplImageBmp.cxx @@ -32,112 +32,6 @@ #define IMPSYSIMAGEITEM_MASK ( 0x01 ) #define IMPSYSIMAGEITEM_ALPHA ( 0x02 ) -ImageAryData::ImageAryData( const ImageAryData& rData ) : - maName( rData.maName ), - mnId( rData.mnId ), - maBitmapEx( rData.maBitmapEx ) -{ -} - -ImageAryData::ImageAryData( const OUString &aName, - sal_uInt16 nId, const BitmapEx &aBitmap ) - : maName( aName ), mnId( nId ), maBitmapEx( aBitmap ) -{ -} - -ImageAryData::~ImageAryData() -{ -} - -ImageAryData& ImageAryData::operator=( const ImageAryData& rData ) -{ - maName = rData.maName; - mnId = rData.mnId; - maBitmapEx = rData.maBitmapEx; - - return *this; -} - -ImplImageList::ImplImageList() - : mnRefCount(1) -{ -} - -ImplImageList::ImplImageList( const ImplImageList &aSrc ) - : maPrefix(aSrc.maPrefix) - , maImageSize(aSrc.maImageSize) - , mnRefCount(1) -{ - maImages.reserve( aSrc.maImages.size() ); - for ( ImageAryDataVec::const_iterator aIt = aSrc.maImages.begin(), aEnd = aSrc.maImages.end(); aIt != aEnd; ++aIt ) - { - ImageAryData* pAryData = new ImageAryData( **aIt ); - maImages.push_back( pAryData ); - if( !pAryData->maName.isEmpty() ) - maNameHash [ pAryData->maName ] = pAryData; - } -} - -ImplImageList::~ImplImageList() -{ - for ( ImageAryDataVec::iterator aIt = maImages.begin(), aEnd = maImages.end(); aIt != aEnd; ++aIt ) - delete *aIt; -} - -void ImplImageList::AddImage( const OUString &aName, - sal_uInt16 nId, const BitmapEx &aBitmapEx ) -{ - ImageAryData *pImg = new ImageAryData( aName, nId, aBitmapEx ); - maImages.push_back( pImg ); - if( !aName.isEmpty() ) - maNameHash [ aName ] = pImg; -} - -void ImplImageList::RemoveImage( sal_uInt16 nPos ) -{ - ImageAryData *pImg = maImages[ nPos ]; - if( !pImg->maName.isEmpty() ) - maNameHash.erase( pImg->maName ); - maImages.erase( maImages.begin() + nPos ); -} - -ImplImageData::ImplImageData( const BitmapEx& rBmpEx ) : - mpImageBitmap( nullptr ), - maBmpEx( rBmpEx ) -{ -} - -ImplImageData::~ImplImageData() -{ - delete mpImageBitmap; -} - -bool ImplImageData::IsEqual( const ImplImageData& rData ) -{ - return( maBmpEx == rData.maBmpEx ); -} - -ImplImage::ImplImage() - : mnRefCount(1) - , mpData(nullptr) - , meType(IMAGETYPE_BITMAP) -{ -} - -ImplImage::~ImplImage() -{ - switch( meType ) - { - case IMAGETYPE_BITMAP: - delete static_cast< Bitmap* >( mpData ); - break; - - case IMAGETYPE_IMAGE: - delete static_cast< ImplImageData* >( mpData ); - break; - } -} - ImplImageBmp::ImplImageBmp() : maBitmapChecksum(0) , mpDisplayBmp(nullptr) diff --git a/vcl/source/image/ImplImageData.cxx b/vcl/source/image/ImplImageData.cxx new file mode 100644 index 000000000000..6fc0747b2874 --- /dev/null +++ b/vcl/source/image/ImplImageData.cxx @@ -0,0 +1,48 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <vcl/outdev.hxx> +#include <vcl/bitmapex.hxx> +#include <vcl/alpha.hxx> +#include <vcl/window.hxx> +#include <vcl/bmpacc.hxx> +#include <vcl/virdev.hxx> +#include <vcl/image.hxx> +#include <vcl/settings.hxx> + +#include <image.h> +#include <memory> + +ImplImageData::ImplImageData( const BitmapEx& rBmpEx ) : + mpImageBitmap( nullptr ), + maBmpEx( rBmpEx ) +{ +} + +ImplImageData::~ImplImageData() +{ + delete mpImageBitmap; +} + +bool ImplImageData::IsEqual( const ImplImageData& rData ) +{ + return( maBmpEx == rData.maBmpEx ); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/image/ImplImageList.cxx b/vcl/source/image/ImplImageList.cxx new file mode 100644 index 000000000000..bc137fc9e2e8 --- /dev/null +++ b/vcl/source/image/ImplImageList.cxx @@ -0,0 +1,75 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <vcl/outdev.hxx> +#include <vcl/bitmapex.hxx> +#include <vcl/alpha.hxx> +#include <vcl/window.hxx> +#include <vcl/bmpacc.hxx> +#include <vcl/virdev.hxx> +#include <vcl/image.hxx> +#include <vcl/settings.hxx> + +#include <image.h> +#include <memory> + +ImplImageList::ImplImageList() + : mnRefCount(1) +{ +} + +ImplImageList::ImplImageList( const ImplImageList &aSrc ) + : maPrefix(aSrc.maPrefix) + , maImageSize(aSrc.maImageSize) + , mnRefCount(1) +{ + maImages.reserve( aSrc.maImages.size() ); + for ( ImageAryDataVec::const_iterator aIt = aSrc.maImages.begin(), aEnd = aSrc.maImages.end(); aIt != aEnd; ++aIt ) + { + ImageAryData* pAryData = new ImageAryData( **aIt ); + maImages.push_back( pAryData ); + if( !pAryData->maName.isEmpty() ) + maNameHash [ pAryData->maName ] = pAryData; + } +} + +ImplImageList::~ImplImageList() +{ + for ( ImageAryDataVec::iterator aIt = maImages.begin(), aEnd = maImages.end(); aIt != aEnd; ++aIt ) + delete *aIt; +} + +void ImplImageList::AddImage( const OUString &aName, + sal_uInt16 nId, const BitmapEx &aBitmapEx ) +{ + ImageAryData *pImg = new ImageAryData( aName, nId, aBitmapEx ); + maImages.push_back( pImg ); + if( !aName.isEmpty() ) + maNameHash [ aName ] = pImg; +} + +void ImplImageList::RemoveImage( sal_uInt16 nPos ) +{ + ImageAryData *pImg = maImages[ nPos ]; + if( !pImg->maName.isEmpty() ) + maNameHash.erase( pImg->maName ); + maImages.erase( maImages.begin() + nPos ); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/gdi/impimagetree.cxx b/vcl/source/image/ImplImageTree.cxx index 6726673c867d..6726673c867d 100644 --- a/vcl/source/gdi/impimagetree.cxx +++ b/vcl/source/image/ImplImageTree.cxx |