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