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
ImpBitmap()40 ImpBitmap::ImpBitmap() :
41 mnRefCount ( 1UL ),
42 mnChecksum ( 0UL ),
43 mpSalBitmap ( ImplGetSVData()->mpDefInst->CreateSalBitmap() ),
44 maSourceSize( 0, 0 )
45 {
46 }
47
48 // -----------------------------------------------------------------------
49
~ImpBitmap()50 ImpBitmap::~ImpBitmap()
51 {
52 delete mpSalBitmap;
53 }
54
55 // -----------------------------------------------------------------------
ImplSetSalBitmap(SalBitmap * pBitmap)56 void ImpBitmap::ImplSetSalBitmap( SalBitmap* pBitmap )
57 {
58 delete mpSalBitmap, mpSalBitmap = pBitmap;
59 }
60
61 // -----------------------------------------------------------------------
62
ImplCreate(const Size & rSize,sal_uInt16 nBitCount,const BitmapPalette & rPal)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
ImplCreate(const ImpBitmap & rImpBitmap)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
ImplCreate(const ImpBitmap & rImpBitmap,SalGraphics * pGraphics)80 sal_Bool ImpBitmap::ImplCreate( const ImpBitmap& rImpBitmap, SalGraphics* pGraphics )
81 {
82 return mpSalBitmap->Create( *rImpBitmap.mpSalBitmap, pGraphics );
83 }
84
85 // -----------------------------------------------------------------------
86
ImplCreate(const ImpBitmap & rImpBitmap,sal_uInt16 nNewBitCount)87 sal_Bool ImpBitmap::ImplCreate( const ImpBitmap& rImpBitmap, sal_uInt16 nNewBitCount )
88 {
89 return mpSalBitmap->Create( *rImpBitmap.mpSalBitmap, nNewBitCount );
90 }
91
92 // -----------------------------------------------------------------------
93
ImplDestroy()94 void ImpBitmap::ImplDestroy()
95 {
96 mpSalBitmap->Destroy();
97 }
98
99 // -----------------------------------------------------------------------
100
ImplGetSize() const101 Size ImpBitmap::ImplGetSize() const
102 {
103 return mpSalBitmap->GetSize();
104 }
105
106 // -----------------------------------------------------------------------
107
ImplGetBitCount() const108 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
ImplAcquireBuffer(sal_Bool bReadOnly)116 BitmapBuffer* ImpBitmap::ImplAcquireBuffer( sal_Bool bReadOnly )
117 {
118 return mpSalBitmap->AcquireBuffer( bReadOnly );
119 }
120
121 // -----------------------------------------------------------------------
122
ImplReleaseBuffer(BitmapBuffer * pBuffer,sal_Bool bReadOnly)123 void ImpBitmap::ImplReleaseBuffer( BitmapBuffer* pBuffer, sal_Bool bReadOnly )
124 {
125 mpSalBitmap->ReleaseBuffer( pBuffer, bReadOnly );
126
127 if( !bReadOnly )
128 mnChecksum = 0;
129 }
130