//***************************************************************************************** // Copyright (c) 2000 Michael Kurz // All rights reserved. // If you want to use this source in your applications conatct: // // $FileName : mBitmapStuff.pkg // $ProjectName : Shared Methods. // $Author : Michael Kurz // $Created : 04-25-2001 @ 16:00 // // Contents: // Some useful functions when working with Bitmaps. // // -APIBitmapSize string sBmp returns complex // // $Rev History // //***************************************************************************************** Use mPointer.pkg // Constants for loading a BMP Define IMAGE_BITMAP For 0 Define IMAGE_ICON For 1 Define LR_DEFAULTCOLOR For |CI$0000 Define LR_COLOR For |CI$0002 Define LR_LOADFROMFILE For |CI$0010 Define LR_CREATEDIBSECTION For |CI$2000 Define LR_LOADTRANSPARANT For |CI$0020 Define LR_LOADMAP3DCOLORS For |CI$1000 Define LR_VGACOLOR For |CI$0080 // Information of a Bitmap Struct tmBmpInfo Integer bmType //TYPE: LONG Integer bmWidth //TYPE: LONG Integer bmHeight //TYPE: LONG Integer bmWidthBytes //TYPE: LONG UShort bmPlanes //TYPE: WORD UShort bmBitsPixel //TYPE: WORD #IFDEF IS$Win64 Integer iStructAlign #ENDIF Pointer bmBits //TYPE: LPVOID End_Struct #IFNDEF Get_GetObject #IF (!@ < 200) External_function GetObject "GetObjectA" Gdi32.dll Handle hObj Integer cbBuffer Pointer pObj Returns Pointer #ELSE External_function GetObject "GetObjectW" Gdi32.dll Handle hObj Integer cbBuffer Pointer pObj Returns Pointer #ENDIF #ENDIF #IF (!@ < 200) External_function BmpStuffLoadImage "LoadImageA" user32.dll Handle hInst ; String sPic UInteger uTyp Integer iX Integer iY UInteger uFlag Returns Handle #ELSE External_function BmpStuffLoadImage "LoadImageW" user32.dll Handle hInst ; WString sPic UInteger uTyp Integer iX Integer iY UInteger uFlag Returns Handle #ENDIF #IFNDEF Get_LoadBitmap // Load Bitmap. Function LoadBitmap Global String sBMPe Integer iX Integer iY Integer iTransparent Returns Handle String sBMP Handle hBMP Move sBMPe To sBMP If iTransparent Move (BmpStuffLoadImage(0,sBMP,IMAGE_BITMAP,iX,iY,(LR_LOADFROMFILE+LR_CREATEDIBSECTION+LR_LOADTRANSPARANT+LR_LOADMAP3DCOLORS))) To hBMP Else Move (BmpStuffLoadImage(0,sBMP,IMAGE_BITMAP,iX,iY,(LR_LOADFROMFILE+LR_CREATEDIBSECTION))) To hBMP Function_Return hBMP End_Function #ENDIF #IFNDEF Get_LoadIcon // Load Bitmap. Function LoadIcon Global String sBMPe Integer iX Integer iY Integer iTransparent Returns Handle String sBMP Handle hBMP Move sBMPe To sBMP If iTransparent Move (BmpStuffLoadImage(0,sBMP,IMAGE_ICON,iX,iY,(LR_LOADFROMFILE+LR_CREATEDIBSECTION+LR_LOADTRANSPARANT))) To hBMP Else Move (BmpStuffLoadImage(0,sBMP,IMAGE_ICON,iX,iY,(LR_LOADFROMFILE+LR_CREATEDIBSECTION))) To hBMP Function_Return hBMP End_Function #ENDIF #IFNDEF Get_APIBitmapSize // Size of the Bitmap. Function APIBitmapSize Global String sBitmap Returns Integer Handle hBitmap #IF (!@ < 200) Pointer lpVoid #ELSE Longptr lpVoid #ENDIF Integer iRet iHeight iWidth tmBmpInfo BmpInfo Move (LoadImage(GetModuleHandle(0), sBitmap, IMAGE_BITMAP, 0, 0, 0)) To hBitmap If (hBitmap=0) Begin // the bitmap was not in the EXE resource Move (LoadBitmap(sBitmap,0,0,0)) To hBitmap End If (hBitmap<>0) Begin Move 0 to BmpInfo.bmWidth Move (GetObject(hBitmap,SizeOfType(tmBmpInfo),AddressOf(BmpInfo))) To lpVoid Move BmpInfo.bmWidth To iWidth Move BmpInfo.bmHeight To iHeight Move (DeleteObject(hBitmap)) To iRet Function_Return (iWidth+(iHeight*65536)) End Function_Return 0 End_Function #ENDIF