|  | /************************************************************** | 
|  | * | 
|  | * 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; | 
|  | } |