2 #ifndef __WIN32K_BITMAPS_H
3 #define __WIN32K_BITMAPS_H
5 #include <include/win32.h>
6 #include <include/gdiobj.h>
8 /* GDI logical bitmap object */
9 typedef struct _BITMAPOBJ
11 BASEOBJECT BaseObject
;
16 SIZE dimension
; /* For SetBitmapDimension(), do NOT use
17 to get width/height of bitmap, use
18 bitmap.bmWidth/bitmap.bmHeight for
20 PFAST_MUTEX BitsLock
; /* You need to hold this lock before you touch
21 the actual bits in the bitmap */
23 /* For device-independent bitmaps: */
26 } BITMAPOBJ
, *PBITMAPOBJ
;
28 #define BITMAPOBJ_IS_APIBITMAP 0x1
30 /* Internal interface */
32 #define BITMAPOBJ_AllocBitmap() ((PBITMAPOBJ) GDIOBJ_AllocObj(GDIObjType_SURF_TYPE))
33 #define BITMAPOBJ_AllocBitmapWithHandle() ((PBITMAPOBJ) GDIOBJ_AllocObjWithHandle(GDI_OBJECT_TYPE_BITMAP))
34 #define BITMAPOBJ_FreeBitmap(pBMObj) GDIOBJ_FreeObj((POBJ) pBMObj, GDIObjType_SURF_TYPE)
35 #define BITMAPOBJ_FreeBitmapByHandle(hBMObj) GDIOBJ_FreeObjByHandle((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP)
37 /* NOTE: Use shared locks! */
38 #define BITMAPOBJ_LockBitmap(hBMObj) \
39 ((PBITMAPOBJ) GDIOBJ_LockObj ((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP))
40 #define BITMAPOBJ_ShareLockBitmap(hBMObj) \
41 ((PBITMAPOBJ) GDIOBJ_ShareLockObj ((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP))
42 #define BITMAPOBJ_UnlockBitmap(pBMObj) \
43 GDIOBJ_UnlockObjByPtr ((POBJ)pBMObj)
44 #define BITMAPOBJ_ShareUnlockBitmap(pBMObj) \
45 GDIOBJ_ShareUnlockObjByPtr ((POBJ)pBMObj)
47 BOOL INTERNAL_CALL
BITMAP_Cleanup(PVOID ObjectBody
);
49 BOOL INTERNAL_CALL
BITMAPOBJ_InitBitsLock(BITMAPOBJ
*pBMObj
);
50 #define BITMAPOBJ_LockBitmapBits(pBMObj) ExEnterCriticalRegionAndAcquireFastMutexUnsafe((pBMObj)->BitsLock)
51 #define BITMAPOBJ_UnlockBitmapBits(pBMObj) ExReleaseFastMutexUnsafeAndLeaveCriticalRegion((pBMObj)->BitsLock)
52 void INTERNAL_CALL
BITMAPOBJ_CleanupBitsLock(BITMAPOBJ
*pBMObj
);
54 INT FASTCALL
BITMAPOBJ_GetWidthBytes (INT bmWidth
, INT bpp
);
55 INT FASTCALL
BITMAPOBJ_GetRealBitsPixel(INT nBitsPixel
);
56 HBITMAP FASTCALL
BITMAPOBJ_CopyBitmap (HBITMAP hBitmap
);
57 INT FASTCALL
DIB_GetDIBWidthBytes (INT width
, INT depth
);
58 int NTAPI
DIB_GetDIBImageBytes (INT width
, INT height
, INT depth
);
59 INT FASTCALL
DIB_BitmapInfoSize (const BITMAPINFO
* info
, WORD coloruse
);
60 INT NTAPI
BITMAP_GetObject(BITMAPOBJ
* bmp
, INT count
, LPVOID buffer
);
61 HBITMAP FASTCALL
BitmapToSurf(PBITMAPOBJ BitmapObj
, HDEV GDIDevice
);