xref: /trunk/main/vcl/inc/os2/salbmp.h (revision fc9fd3f14a55d77b35643a64034752a178b2a5b0)
1*fc9fd3f1SPedro Giffuni /*************************************************************************
2*fc9fd3f1SPedro Giffuni  *
3*fc9fd3f1SPedro Giffuni  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*fc9fd3f1SPedro Giffuni  *
5*fc9fd3f1SPedro Giffuni  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*fc9fd3f1SPedro Giffuni  *
7*fc9fd3f1SPedro Giffuni  * OpenOffice.org - a multi-platform office productivity suite
8*fc9fd3f1SPedro Giffuni  *
9*fc9fd3f1SPedro Giffuni  * This file is part of OpenOffice.org.
10*fc9fd3f1SPedro Giffuni  *
11*fc9fd3f1SPedro Giffuni  * OpenOffice.org is free software: you can redistribute it and/or modify
12*fc9fd3f1SPedro Giffuni  * it under the terms of the GNU Lesser General Public License version 3
13*fc9fd3f1SPedro Giffuni  * only, as published by the Free Software Foundation.
14*fc9fd3f1SPedro Giffuni  *
15*fc9fd3f1SPedro Giffuni  * OpenOffice.org is distributed in the hope that it will be useful,
16*fc9fd3f1SPedro Giffuni  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*fc9fd3f1SPedro Giffuni  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*fc9fd3f1SPedro Giffuni  * GNU Lesser General Public License version 3 for more details
19*fc9fd3f1SPedro Giffuni  * (a copy is included in the LICENSE file that accompanied this code).
20*fc9fd3f1SPedro Giffuni  *
21*fc9fd3f1SPedro Giffuni  * You should have received a copy of the GNU Lesser General Public License
22*fc9fd3f1SPedro Giffuni  * version 3 along with OpenOffice.org.  If not, see
23*fc9fd3f1SPedro Giffuni  * <http://www.openoffice.org/license.html>
24*fc9fd3f1SPedro Giffuni  * for a copy of the LGPLv3 License.
25*fc9fd3f1SPedro Giffuni  *
26*fc9fd3f1SPedro Giffuni  ************************************************************************/
27*fc9fd3f1SPedro Giffuni 
28*fc9fd3f1SPedro Giffuni #ifndef _SV_SALBMP_H
29*fc9fd3f1SPedro Giffuni #define _SV_SALBMP_H
30*fc9fd3f1SPedro Giffuni 
31*fc9fd3f1SPedro Giffuni #include <tools/gen.hxx>
32*fc9fd3f1SPedro Giffuni #include <salbmp.hxx>
33*fc9fd3f1SPedro Giffuni 
34*fc9fd3f1SPedro Giffuni // --------------
35*fc9fd3f1SPedro Giffuni // - SalBitmap    -
36*fc9fd3f1SPedro Giffuni // --------------
37*fc9fd3f1SPedro Giffuni 
38*fc9fd3f1SPedro Giffuni struct    BitmapBuffer;
39*fc9fd3f1SPedro Giffuni class    BitmapColor;
40*fc9fd3f1SPedro Giffuni class    BitmapPalette;
41*fc9fd3f1SPedro Giffuni class    SalGraphics;
42*fc9fd3f1SPedro Giffuni 
43*fc9fd3f1SPedro Giffuni #define HANDLE ULONG
44*fc9fd3f1SPedro Giffuni #define HBITMAP ULONG
45*fc9fd3f1SPedro Giffuni 
46*fc9fd3f1SPedro Giffuni class Os2SalBitmap : public SalBitmap
47*fc9fd3f1SPedro Giffuni {
48*fc9fd3f1SPedro Giffuni private:
49*fc9fd3f1SPedro Giffuni 
50*fc9fd3f1SPedro Giffuni     Size                maSize;
51*fc9fd3f1SPedro Giffuni     HANDLE              mhDIB;
52*fc9fd3f1SPedro Giffuni     HANDLE              mhDIB1Subst;
53*fc9fd3f1SPedro Giffuni     HBITMAP             mhDDB;
54*fc9fd3f1SPedro Giffuni     USHORT              mnBitCount;
55*fc9fd3f1SPedro Giffuni 
56*fc9fd3f1SPedro Giffuni public:
57*fc9fd3f1SPedro Giffuni 
58*fc9fd3f1SPedro Giffuni     HANDLE              ImplGethDIB() const { return mhDIB; }
59*fc9fd3f1SPedro Giffuni     HBITMAP             ImplGethDDB() const { return mhDDB; }
60*fc9fd3f1SPedro Giffuni     HANDLE              ImplGethDIB1Subst() const { return mhDIB1Subst; }
61*fc9fd3f1SPedro Giffuni 
62*fc9fd3f1SPedro Giffuni     void                ImplReplacehDIB1Subst( HANDLE hDIB1Subst );
63*fc9fd3f1SPedro Giffuni 
64*fc9fd3f1SPedro Giffuni     static HANDLE       ImplCreateDIB( const Size& rSize, USHORT nBitCount, const BitmapPalette& rPal );
65*fc9fd3f1SPedro Giffuni     static HANDLE       ImplCreateDIB4FromDIB1( HANDLE hDIB1 );
66*fc9fd3f1SPedro Giffuni     static HANDLE       ImplCopyDIBOrDDB( HANDLE hHdl, bool bDIB );
67*fc9fd3f1SPedro Giffuni     static USHORT       ImplGetDIBColorCount( HANDLE hDIB );
68*fc9fd3f1SPedro Giffuni     static void         ImplDecodeRLEBuffer( const PM_BYTE* pSrcBuf, PM_BYTE* pDstBuf,
69*fc9fd3f1SPedro Giffuni                                              const Size& rSizePixel, bool bRLE4 );
70*fc9fd3f1SPedro Giffuni 
71*fc9fd3f1SPedro Giffuni     //BOOL                Create( HANDLE hBitmap, BOOL bDIB, BOOL bCopyHandle );
72*fc9fd3f1SPedro Giffuni 
73*fc9fd3f1SPedro Giffuni public:
74*fc9fd3f1SPedro Giffuni 
75*fc9fd3f1SPedro Giffuni                         Os2SalBitmap();
76*fc9fd3f1SPedro Giffuni                         ~Os2SalBitmap();
77*fc9fd3f1SPedro Giffuni 
78*fc9fd3f1SPedro Giffuni public:
79*fc9fd3f1SPedro Giffuni 
80*fc9fd3f1SPedro Giffuni     //BOOL                Create( const Size& rSize, USHORT nBitCount, const BitmapPalette& rPal );
81*fc9fd3f1SPedro Giffuni     //BOOL                Create( const SalBitmap& rSalBmpImpl );
82*fc9fd3f1SPedro Giffuni     //BOOL                Create( const SalBitmap& rSalBmpImpl, SalGraphics* pGraphics );
83*fc9fd3f1SPedro Giffuni     //BOOL                Create( const SalBitmap& rSalBmpImpl, USHORT nNewBitCount );
84*fc9fd3f1SPedro Giffuni 
85*fc9fd3f1SPedro Giffuni     //void                Destroy();
86*fc9fd3f1SPedro Giffuni 
87*fc9fd3f1SPedro Giffuni     //Size                GetSize() const { return maSize; }
88*fc9fd3f1SPedro Giffuni     //USHORT              GetBitCount() const { return mnBitCount; }
89*fc9fd3f1SPedro Giffuni 
90*fc9fd3f1SPedro Giffuni     //BitmapBuffer*     AcquireBuffer( bool bReadOnly );
91*fc9fd3f1SPedro Giffuni     //void              ReleaseBuffer( BitmapBuffer* pBuffer, bool bReadOnly );
92*fc9fd3f1SPedro Giffuni     bool                        Create( HANDLE hBitmap, bool bDIB, bool bCopyHandle );
93*fc9fd3f1SPedro Giffuni     virtual bool                Create( const Size& rSize, USHORT nBitCount, const BitmapPalette& rPal );
94*fc9fd3f1SPedro Giffuni     virtual bool                Create( const SalBitmap& rSalBmpImpl );
95*fc9fd3f1SPedro Giffuni     virtual bool                Create( const SalBitmap& rSalBmpImpl, SalGraphics* pGraphics );
96*fc9fd3f1SPedro Giffuni     virtual bool                Create( const SalBitmap& rSalBmpImpl, USHORT nNewBitCount );
97*fc9fd3f1SPedro Giffuni 
98*fc9fd3f1SPedro Giffuni     virtual void                Destroy();
99*fc9fd3f1SPedro Giffuni 
100*fc9fd3f1SPedro Giffuni     virtual Size                GetSize() const { return maSize; }
101*fc9fd3f1SPedro Giffuni     virtual USHORT              GetBitCount() const { return mnBitCount; }
102*fc9fd3f1SPedro Giffuni 
103*fc9fd3f1SPedro Giffuni     virtual BitmapBuffer*       AcquireBuffer( bool bReadOnly );
104*fc9fd3f1SPedro Giffuni     virtual void                ReleaseBuffer( BitmapBuffer* pBuffer, bool bReadOnly );
105*fc9fd3f1SPedro Giffuni     virtual bool                GetSystemData( BitmapSystemData& rData );
106*fc9fd3f1SPedro Giffuni };
107*fc9fd3f1SPedro Giffuni 
108*fc9fd3f1SPedro Giffuni #endif // _SV_SALBMP_H
109