summaryrefslogtreecommitdiff
path: root/vcl/source/gdi/impimage.cxx
diff options
context:
space:
mode:
authorIvo Hinkelmann <ihi@openoffice.org>2007-06-06 13:11:27 +0000
committerIvo Hinkelmann <ihi@openoffice.org>2007-06-06 13:11:27 +0000
commit016209a99280060a55a0b16c4242277c01b46ac0 (patch)
tree917867caec92b0a5627d53b9a64cbff5d3ae15d5 /vcl/source/gdi/impimage.cxx
parent87b37c9ac33d4b6aac21f48dad4803aacc73dcaf (diff)
INTEGRATION: CWS ka009 (1.19.36); FILE MERGED
2006/10/13 16:25:49 ka 1.19.36.3: RESYNC: (1.19-1.20); FILE MERGED 2006/07/14 14:57:35 dr 1.19.36.2: #i66680# warningfree 2006/07/12 22:03:52 ka 1.19.36.1: #i66680#: added patch for optimized ImageList handling
Diffstat (limited to 'vcl/source/gdi/impimage.cxx')
-rw-r--r--vcl/source/gdi/impimage.cxx74
1 files changed, 43 insertions, 31 deletions
diff --git a/vcl/source/gdi/impimage.cxx b/vcl/source/gdi/impimage.cxx
index 65b4e9579499..328d93efadae 100644
--- a/vcl/source/gdi/impimage.cxx
+++ b/vcl/source/gdi/impimage.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: impimage.cxx,v $
*
- * $Revision: 1.20 $
+ * $Revision: 1.21 $
*
- * last change: $Author: obo $ $Date: 2006-09-17 12:03:20 $
+ * last change: $Author: ihi $ $Date: 2007-06-06 14:11:27 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -73,8 +73,9 @@
// ----------------
ImageAryData::ImageAryData() :
+ maName(),
mnId( 0 ),
- mnRefCount( 0 )
+ maBitmapEx()
{
}
@@ -83,7 +84,13 @@ ImageAryData::ImageAryData() :
ImageAryData::ImageAryData( const ImageAryData& rData ) :
maName( rData.maName ),
mnId( rData.mnId ),
- mnRefCount( rData.mnRefCount )
+ maBitmapEx( rData.maBitmapEx )
+{
+}
+
+ImageAryData::ImageAryData( const rtl::OUString &aName,
+ USHORT nId, const BitmapEx &aBitmap )
+ : maName( aName ), mnId( nId ), maBitmapEx( aBitmap )
{
}
@@ -99,7 +106,7 @@ ImageAryData& ImageAryData::operator=( const ImageAryData& rData )
{
maName = rData.maName;
mnId = rData.mnId;
- mnRefCount = rData.mnRefCount;
+ maBitmapEx = rData.maBitmapEx;
return *this;
}
@@ -112,38 +119,47 @@ ImplImageList::ImplImageList()
{
}
-// -----------------------------------------------------------------------
+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.getLength() )
+ maNameHash [ pAryData->maName ] = pAryData;
+ }
+}
ImplImageList::~ImplImageList()
{
- delete mpImageBitmap;
- delete[] mpAry;
+ for ( ImageAryDataVec::iterator aIt = maImages.begin(), aEnd = maImages.end(); aIt != aEnd; ++aIt )
+ delete *aIt;
}
-// --------------------
-// - ImplImageRefData -
-// --------------------
-
-ImplImageRefData::~ImplImageRefData()
+void ImplImageList::AddImage( const ::rtl::OUString &aName,
+ USHORT nId, const BitmapEx &aBitmapEx )
{
- --mpImplData->mnIRefCount;
-
- if( mpImplData->mnRefCount || mpImplData->mnIRefCount )
- {
- --mpImplData->mpAry[mnIndex].mnRefCount;
-
- if( !mpImplData->mpAry[mnIndex].mnRefCount )
- --mpImplData->mnRealCount;
- }
- else
- delete mpImplData;
+ ImageAryData *pImg = new ImageAryData( aName, nId, aBitmapEx );
+ maImages.push_back( pImg );
+ if( aName.getLength() )
+ maNameHash [ aName ] = pImg;
}
-// -----------------------------------------------------------------------
+void ImplImageList::RemoveImage( USHORT nPos )
+{
+ ImageAryData *pImg = maImages[ nPos ];
+ if( pImg->maName.getLength() )
+ maNameHash.erase( pImg->maName );
+ maImages.erase( maImages.begin() + nPos );
+}
-BOOL ImplImageRefData::IsEqual( const ImplImageRefData& rData )
+USHORT ImplImageList::GetImageCount() const
{
- return( ( mpImplData == rData.mpImplData ) && ( mnIndex == rData.mnIndex ) );
+ return sal::static_int_cast< USHORT >( maImages.size() );
}
// -----------------
@@ -193,10 +209,6 @@ ImplImage::~ImplImage()
case IMAGETYPE_IMAGE:
delete static_cast< ImplImageData* >( mpData );
break;
-
- case IMAGETYPE_IMAGEREF:
- delete static_cast< ImplImageRefData* >( mpData );
- break;
}
}