1*24f6443dSAndrew Rist /************************************************************** 2fc9fd3f1SPedro Giffuni * 3*24f6443dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*24f6443dSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*24f6443dSAndrew Rist * distributed with this work for additional information 6*24f6443dSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*24f6443dSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*24f6443dSAndrew Rist * "License"); you may not use this file except in compliance 9*24f6443dSAndrew Rist * with the License. You may obtain a copy of the License at 10fc9fd3f1SPedro Giffuni * 11*24f6443dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12fc9fd3f1SPedro Giffuni * 13*24f6443dSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*24f6443dSAndrew Rist * software distributed under the License is distributed on an 15*24f6443dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*24f6443dSAndrew Rist * KIND, either express or implied. See the License for the 17*24f6443dSAndrew Rist * specific language governing permissions and limitations 18*24f6443dSAndrew Rist * under the License. 19fc9fd3f1SPedro Giffuni * 20*24f6443dSAndrew Rist *************************************************************/ 21*24f6443dSAndrew Rist 22*24f6443dSAndrew Rist 23fc9fd3f1SPedro Giffuni 24fc9fd3f1SPedro Giffuni #ifndef _SV_SALBMP_H 25fc9fd3f1SPedro Giffuni #define _SV_SALBMP_H 26fc9fd3f1SPedro Giffuni 27fc9fd3f1SPedro Giffuni #include <tools/gen.hxx> 28fc9fd3f1SPedro Giffuni #include <salbmp.hxx> 29fc9fd3f1SPedro Giffuni 30fc9fd3f1SPedro Giffuni // -------------- 31fc9fd3f1SPedro Giffuni // - SalBitmap - 32fc9fd3f1SPedro Giffuni // -------------- 33fc9fd3f1SPedro Giffuni 34fc9fd3f1SPedro Giffuni struct BitmapBuffer; 35fc9fd3f1SPedro Giffuni class BitmapColor; 36fc9fd3f1SPedro Giffuni class BitmapPalette; 37fc9fd3f1SPedro Giffuni class SalGraphics; 38fc9fd3f1SPedro Giffuni 39fc9fd3f1SPedro Giffuni #define HANDLE ULONG 40fc9fd3f1SPedro Giffuni #define HBITMAP ULONG 41fc9fd3f1SPedro Giffuni 42fc9fd3f1SPedro Giffuni class Os2SalBitmap : public SalBitmap 43fc9fd3f1SPedro Giffuni { 44fc9fd3f1SPedro Giffuni private: 45fc9fd3f1SPedro Giffuni 46fc9fd3f1SPedro Giffuni Size maSize; 47fc9fd3f1SPedro Giffuni HANDLE mhDIB; 48fc9fd3f1SPedro Giffuni HANDLE mhDIB1Subst; 49fc9fd3f1SPedro Giffuni HBITMAP mhDDB; 50fc9fd3f1SPedro Giffuni USHORT mnBitCount; 51fc9fd3f1SPedro Giffuni 52fc9fd3f1SPedro Giffuni public: 53fc9fd3f1SPedro Giffuni ImplGethDIB()54fc9fd3f1SPedro Giffuni HANDLE ImplGethDIB() const { return mhDIB; } ImplGethDDB()55fc9fd3f1SPedro Giffuni HBITMAP ImplGethDDB() const { return mhDDB; } ImplGethDIB1Subst()56fc9fd3f1SPedro Giffuni HANDLE ImplGethDIB1Subst() const { return mhDIB1Subst; } 57fc9fd3f1SPedro Giffuni 58fc9fd3f1SPedro Giffuni void ImplReplacehDIB1Subst( HANDLE hDIB1Subst ); 59fc9fd3f1SPedro Giffuni 60fc9fd3f1SPedro Giffuni static HANDLE ImplCreateDIB( const Size& rSize, USHORT nBitCount, const BitmapPalette& rPal ); 61fc9fd3f1SPedro Giffuni static HANDLE ImplCreateDIB4FromDIB1( HANDLE hDIB1 ); 62fc9fd3f1SPedro Giffuni static HANDLE ImplCopyDIBOrDDB( HANDLE hHdl, bool bDIB ); 63fc9fd3f1SPedro Giffuni static USHORT ImplGetDIBColorCount( HANDLE hDIB ); 64fc9fd3f1SPedro Giffuni static void ImplDecodeRLEBuffer( const PM_BYTE* pSrcBuf, PM_BYTE* pDstBuf, 65fc9fd3f1SPedro Giffuni const Size& rSizePixel, bool bRLE4 ); 66fc9fd3f1SPedro Giffuni 67fc9fd3f1SPedro Giffuni //BOOL Create( HANDLE hBitmap, BOOL bDIB, BOOL bCopyHandle ); 68fc9fd3f1SPedro Giffuni 69fc9fd3f1SPedro Giffuni public: 70fc9fd3f1SPedro Giffuni 71fc9fd3f1SPedro Giffuni Os2SalBitmap(); 72fc9fd3f1SPedro Giffuni ~Os2SalBitmap(); 73fc9fd3f1SPedro Giffuni 74fc9fd3f1SPedro Giffuni public: 75fc9fd3f1SPedro Giffuni 76fc9fd3f1SPedro Giffuni //BOOL Create( const Size& rSize, USHORT nBitCount, const BitmapPalette& rPal ); 77fc9fd3f1SPedro Giffuni //BOOL Create( const SalBitmap& rSalBmpImpl ); 78fc9fd3f1SPedro Giffuni //BOOL Create( const SalBitmap& rSalBmpImpl, SalGraphics* pGraphics ); 79fc9fd3f1SPedro Giffuni //BOOL Create( const SalBitmap& rSalBmpImpl, USHORT nNewBitCount ); 80fc9fd3f1SPedro Giffuni 81fc9fd3f1SPedro Giffuni //void Destroy(); 82fc9fd3f1SPedro Giffuni 83fc9fd3f1SPedro Giffuni //Size GetSize() const { return maSize; } 84fc9fd3f1SPedro Giffuni //USHORT GetBitCount() const { return mnBitCount; } 85fc9fd3f1SPedro Giffuni 86fc9fd3f1SPedro Giffuni //BitmapBuffer* AcquireBuffer( bool bReadOnly ); 87fc9fd3f1SPedro Giffuni //void ReleaseBuffer( BitmapBuffer* pBuffer, bool bReadOnly ); 88fc9fd3f1SPedro Giffuni bool Create( HANDLE hBitmap, bool bDIB, bool bCopyHandle ); 89fc9fd3f1SPedro Giffuni virtual bool Create( const Size& rSize, USHORT nBitCount, const BitmapPalette& rPal ); 90fc9fd3f1SPedro Giffuni virtual bool Create( const SalBitmap& rSalBmpImpl ); 91fc9fd3f1SPedro Giffuni virtual bool Create( const SalBitmap& rSalBmpImpl, SalGraphics* pGraphics ); 92fc9fd3f1SPedro Giffuni virtual bool Create( const SalBitmap& rSalBmpImpl, USHORT nNewBitCount ); 93fc9fd3f1SPedro Giffuni 94fc9fd3f1SPedro Giffuni virtual void Destroy(); 95fc9fd3f1SPedro Giffuni GetSize()96fc9fd3f1SPedro Giffuni virtual Size GetSize() const { return maSize; } GetBitCount()97fc9fd3f1SPedro Giffuni virtual USHORT GetBitCount() const { return mnBitCount; } 98fc9fd3f1SPedro Giffuni 99fc9fd3f1SPedro Giffuni virtual BitmapBuffer* AcquireBuffer( bool bReadOnly ); 100fc9fd3f1SPedro Giffuni virtual void ReleaseBuffer( BitmapBuffer* pBuffer, bool bReadOnly ); 101fc9fd3f1SPedro Giffuni virtual bool GetSystemData( BitmapSystemData& rData ); 102fc9fd3f1SPedro Giffuni }; 103fc9fd3f1SPedro Giffuni 104fc9fd3f1SPedro Giffuni #endif // _SV_SALBMP_H 105