2 * GDI bitmap definitions
4 * Copyright 1993, 1994 Alexandre Julliard
7 #ifndef __WINE_BITMAP_H
8 #define __WINE_BITMAP_H
12 struct tagGDI_BITMAP_DRIVER
;
14 /* Flags used for BitmapBits. We only use the first two at the moment */
19 #define DDB_SETWITHFILLER 8
21 /* DIB Section sync state */
22 enum { DIB_Status_None
, DIB_Status_InSync
, DIB_Status_GdiMod
, DIB_Status_AppMod
, DIB_Status_AuxMod
};
24 /* GDI logical bitmap object */
25 typedef struct tagBITMAPOBJ
29 SIZE size
; /* For SetBitmapDimension() */
30 const struct tagDC_FUNCS
*funcs
; /* DC function table */
31 void *physBitmap
; /* ptr to device specific data */
32 /* For device-independent bitmaps: */
34 SEGPTR segptr_bits
; /* segptr to DIB bits */
37 typedef struct tagBITMAP_DRIVER
39 INT (*pSetDIBits
)(struct tagBITMAPOBJ
*,struct tagDC
*,UINT
,UINT
,LPCVOID
,const BITMAPINFO
*,UINT
,HBITMAP
);
40 INT (*pGetDIBits
)(struct tagBITMAPOBJ
*,struct tagDC
*,UINT
,UINT
,LPVOID
,BITMAPINFO
*,UINT
,HBITMAP
);
41 VOID (*pDeleteDIBSection
)(struct tagBITMAPOBJ
*);
42 UINT (*pSetDIBColorTable
)(struct tagBITMAPOBJ
*,struct tagDC
*,UINT
,UINT
,const RGBQUAD
*);
43 UINT (*pGetDIBColorTable
)(struct tagBITMAPOBJ
*,struct tagDC
*,UINT
,UINT
,RGBQUAD
*);
44 INT (*pLockDIB
)(struct tagBITMAPOBJ
*,INT
,BOOL
);
45 VOID (*pUnlockDIB
)(struct tagBITMAPOBJ
*,BOOL
);
48 extern BITMAP_DRIVER
*BITMAP_Driver
;
50 /* objects/bitmap.c */
51 extern INT16
BITMAP_GetObject16( BITMAPOBJ
* bmp
, INT16 count
, LPVOID buffer
);
52 extern INT
BITMAP_GetObject( BITMAPOBJ
* bmp
, INT count
, LPVOID buffer
);
53 extern BOOL
BITMAP_DeleteObject( HBITMAP16 hbitmap
, BITMAPOBJ
* bitmap
);
54 extern INT
BITMAP_GetWidthBytes( INT width
, INT depth
);
55 extern HBITMAP
BITMAP_CopyBitmap( HBITMAP hbitmap
);
58 extern int DIB_GetDIBWidthBytes( int width
, int depth
);
59 extern int DIB_GetDIBImageBytes( int width
, int height
, int depth
);
60 extern int DIB_BitmapInfoSize( const BITMAPINFO
* info
, WORD coloruse
);
61 extern int DIB_GetBitmapInfo( const BITMAPINFOHEADER
*header
, DWORD
*width
,
62 int *height
, WORD
*bpp
, WORD
*compr
);
63 extern HBITMAP
DIB_CreateDIBSection( HDC hdc
, BITMAPINFO
*bmi
, UINT usage
, LPVOID
*bits
,
64 HANDLE section
, DWORD offset
, DWORD ovr_pitch
);
65 extern void DIB_UpdateDIBSection( DC
*dc
, BOOL toDIB
);
66 extern void DIB_DeleteDIBSection( BITMAPOBJ
*bmp
);
67 extern void DIB_SelectDIBSection( DC
*dc
, BITMAPOBJ
*bmp
);
68 extern HGLOBAL
DIB_CreateDIBFromBitmap(HDC hdc
, HBITMAP hBmp
);
70 #endif /* __WINE_BITMAP_H */