| /************************************************************** | 
 |  *  | 
 |  * 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 | 
 |  *  | 
 |  * Unless required by applicable law or agreed to in writing, | 
 |  * software distributed under the License is distributed on an | 
 |  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
 |  * KIND, either express or implied.  See the License for the | 
 |  * specific language governing permissions and limitations | 
 |  * under the License. | 
 |  *  | 
 |  *************************************************************/ | 
 |  | 
 |  | 
 |  | 
 | // MARKER(update_precomp.py): autogen include statement, do not remove | 
 | #include "precompiled_vcl.hxx" | 
 |  | 
 | #include <tools/debug.hxx> | 
 |  | 
 | #include <vcl/bitmap.hxx> | 
 |  | 
 | #include <svdata.hxx> | 
 | #include <salinst.hxx> | 
 | #include <salbmp.hxx> | 
 | #include <impbmp.hxx> | 
 |  | 
 | // -------------- | 
 | // - ImpBitmap	- | 
 | // -------------- | 
 |  | 
 | ImpBitmap::ImpBitmap() : | 
 | 			mnRefCount	( 1UL ), | 
 | 			mnChecksum	( 0UL ), | 
 | 			mpSalBitmap ( ImplGetSVData()->mpDefInst->CreateSalBitmap() ), | 
 | 			maSourceSize( 0, 0 ) | 
 | { | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------- | 
 |  | 
 | ImpBitmap::~ImpBitmap() | 
 | { | 
 | 	delete mpSalBitmap; | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------- | 
 | void ImpBitmap::ImplSetSalBitmap( SalBitmap* pBitmap ) | 
 | { | 
 | 	delete mpSalBitmap, mpSalBitmap = pBitmap; | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------- | 
 | 	 | 
 | sal_Bool ImpBitmap::ImplCreate( const Size& rSize, sal_uInt16 nBitCount, const BitmapPalette& rPal ) | 
 | { | 
 | 	maSourceSize = rSize; | 
 | 	return mpSalBitmap->Create( rSize, nBitCount, rPal ); | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------- | 
 |  | 
 | sal_Bool ImpBitmap::ImplCreate( const ImpBitmap& rImpBitmap ) | 
 | { | 
 | 	maSourceSize = rImpBitmap.maSourceSize; | 
 | 	mnChecksum = rImpBitmap.mnChecksum; | 
 | 	return mpSalBitmap->Create( *rImpBitmap.mpSalBitmap ); | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------- | 
 |  | 
 | sal_Bool ImpBitmap::ImplCreate( const ImpBitmap& rImpBitmap, SalGraphics* pGraphics ) | 
 | { | 
 | 	return mpSalBitmap->Create( *rImpBitmap.mpSalBitmap, pGraphics ); | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------- | 
 |  | 
 | sal_Bool ImpBitmap::ImplCreate( const ImpBitmap& rImpBitmap, sal_uInt16 nNewBitCount ) | 
 | { | 
 | 	return mpSalBitmap->Create( *rImpBitmap.mpSalBitmap, nNewBitCount ); | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------- | 
 |  | 
 | void ImpBitmap::ImplDestroy() | 
 | { | 
 | 	mpSalBitmap->Destroy(); | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------- | 
 |  | 
 | Size ImpBitmap::ImplGetSize() const | 
 | { | 
 | 	return mpSalBitmap->GetSize(); | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------- | 
 |  | 
 | sal_uInt16 ImpBitmap::ImplGetBitCount() const | 
 | { | 
 | 	sal_uInt16 nBitCount = mpSalBitmap->GetBitCount(); | 
 | 	return( ( nBitCount <= 1 ) ? 1 : ( nBitCount <= 4 ) ? 4 : ( nBitCount <= 8 ) ? 8 : 24 ); | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------- | 
 |  | 
 | BitmapBuffer* ImpBitmap::ImplAcquireBuffer( sal_Bool bReadOnly ) | 
 | { | 
 | 	return mpSalBitmap->AcquireBuffer( bReadOnly ); | 
 | } | 
 |  | 
 | // ----------------------------------------------------------------------- | 
 |  | 
 | void ImpBitmap::ImplReleaseBuffer( BitmapBuffer* pBuffer, sal_Bool bReadOnly ) | 
 | { | 
 | 	mpSalBitmap->ReleaseBuffer( pBuffer, bReadOnly ); | 
 |  | 
 | 	if( !bReadOnly ) | 
 | 		mnChecksum = 0; | 
 | } |