2 #ifndef __WIN32K_BITMAPS_H
3 #define __WIN32K_BITMAPS_H
5 /* GDI logical bitmap object */
6 typedef struct _BITMAPOBJ
11 SIZE dimension
; /* For SetBitmapDimension(), do NOT use
12 to get width/height of bitmap, use
13 bitmap.bmWidth/bitmap.bmHeight for
15 PFAST_MUTEX BitsLock
; /* You need to hold this lock before you touch
16 the actual bits in the bitmap */
18 /* For device-independent bitmaps: */
21 } BITMAPOBJ
, *PBITMAPOBJ
;
23 #define BITMAPOBJ_IS_APIBITMAP 0x1
25 /* Internal interface */
27 #define BITMAPOBJ_AllocBitmap() \
28 ((HBITMAP) GDIOBJ_AllocObj (GDI_OBJECT_TYPE_BITMAP))
29 #define BITMAPOBJ_FreeBitmap(hBMObj) \
30 GDIOBJ_FreeObj((HGDIOBJ) hBMObj, GDI_OBJECT_TYPE_BITMAP)
31 /* NOTE: Use shared locks! */
32 #define BITMAPOBJ_LockBitmap(hBMObj) (PBITMAPOBJ)EngLockSurface((HSURF)hBMObj)
33 #define BITMAPOBJ_UnlockBitmap(pBMObj) EngUnlockSurface(&pBMObj->SurfObj)
34 BOOL INTERNAL_CALL
BITMAP_Cleanup(PVOID ObjectBody
);
36 BOOL INTERNAL_CALL
BITMAPOBJ_InitBitsLock(BITMAPOBJ
*pBMObj
);
37 #define BITMAPOBJ_LockBitmapBits(pBMObj) ExEnterCriticalRegionAndAcquireFastMutexUnsafe((pBMObj)->BitsLock)
38 #define BITMAPOBJ_UnlockBitmapBits(pBMObj) ExReleaseFastMutexUnsafeAndLeaveCriticalRegion((pBMObj)->BitsLock)
39 void INTERNAL_CALL
BITMAPOBJ_CleanupBitsLock(BITMAPOBJ
*pBMObj
);
41 INT FASTCALL
BITMAPOBJ_GetWidthBytes (INT bmWidth
, INT bpp
);
42 HBITMAP FASTCALL
BITMAPOBJ_CopyBitmap (HBITMAP hBitmap
);
43 INT FASTCALL
DIB_GetDIBWidthBytes (INT width
, INT depth
);
44 int NTAPI
DIB_GetDIBImageBytes (INT width
, INT height
, INT depth
);
45 INT FASTCALL
DIB_BitmapInfoSize (const BITMAPINFO
* info
, WORD coloruse
);
46 INT NTAPI
BITMAP_GetObject(BITMAPOBJ
* bmp
, INT count
, LPVOID buffer
);
47 HBITMAP FASTCALL
BitmapToSurf(PBITMAPOBJ BitmapObj
, HDEV GDIDevice
);