1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_vcl.hxx" 26 27 #include <tools/debug.hxx> 28 29 #include <vcl/bitmap.hxx> 30 31 #include <svdata.hxx> 32 #include <salinst.hxx> 33 #include <salbmp.hxx> 34 #include <impbmp.hxx> 35 36 // -------------- 37 // - ImpBitmap - 38 // -------------- 39 40 ImpBitmap::ImpBitmap() : 41 mnRefCount ( 1UL ), 42 mnChecksum ( 0UL ), 43 mpSalBitmap ( ImplGetSVData()->mpDefInst->CreateSalBitmap() ), 44 maSourceSize( 0, 0 ) 45 { 46 } 47 48 // ----------------------------------------------------------------------- 49 50 ImpBitmap::~ImpBitmap() 51 { 52 delete mpSalBitmap; 53 } 54 55 // ----------------------------------------------------------------------- 56 void ImpBitmap::ImplSetSalBitmap( SalBitmap* pBitmap ) 57 { 58 delete mpSalBitmap, mpSalBitmap = pBitmap; 59 } 60 61 // ----------------------------------------------------------------------- 62 63 sal_Bool ImpBitmap::ImplCreate( const Size& rSize, sal_uInt16 nBitCount, const BitmapPalette& rPal ) 64 { 65 maSourceSize = rSize; 66 return mpSalBitmap->Create( rSize, nBitCount, rPal ); 67 } 68 69 // ----------------------------------------------------------------------- 70 71 sal_Bool ImpBitmap::ImplCreate( const ImpBitmap& rImpBitmap ) 72 { 73 maSourceSize = rImpBitmap.maSourceSize; 74 mnChecksum = rImpBitmap.mnChecksum; 75 return mpSalBitmap->Create( *rImpBitmap.mpSalBitmap ); 76 } 77 78 // ----------------------------------------------------------------------- 79 80 sal_Bool ImpBitmap::ImplCreate( const ImpBitmap& rImpBitmap, SalGraphics* pGraphics ) 81 { 82 return mpSalBitmap->Create( *rImpBitmap.mpSalBitmap, pGraphics ); 83 } 84 85 // ----------------------------------------------------------------------- 86 87 sal_Bool ImpBitmap::ImplCreate( const ImpBitmap& rImpBitmap, sal_uInt16 nNewBitCount ) 88 { 89 return mpSalBitmap->Create( *rImpBitmap.mpSalBitmap, nNewBitCount ); 90 } 91 92 // ----------------------------------------------------------------------- 93 94 void ImpBitmap::ImplDestroy() 95 { 96 mpSalBitmap->Destroy(); 97 } 98 99 // ----------------------------------------------------------------------- 100 101 Size ImpBitmap::ImplGetSize() const 102 { 103 return mpSalBitmap->GetSize(); 104 } 105 106 // ----------------------------------------------------------------------- 107 108 sal_uInt16 ImpBitmap::ImplGetBitCount() const 109 { 110 sal_uInt16 nBitCount = mpSalBitmap->GetBitCount(); 111 return( ( nBitCount <= 1 ) ? 1 : ( nBitCount <= 4 ) ? 4 : ( nBitCount <= 8 ) ? 8 : 24 ); 112 } 113 114 // ----------------------------------------------------------------------- 115 116 BitmapBuffer* ImpBitmap::ImplAcquireBuffer( sal_Bool bReadOnly ) 117 { 118 return mpSalBitmap->AcquireBuffer( bReadOnly ); 119 } 120 121 // ----------------------------------------------------------------------- 122 123 void ImpBitmap::ImplReleaseBuffer( BitmapBuffer* pBuffer, sal_Bool bReadOnly ) 124 { 125 mpSalBitmap->ReleaseBuffer( pBuffer, bReadOnly ); 126 127 if( !bReadOnly ) 128 mnChecksum = 0; 129 } 130