Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++ BUILD Version: 0001
* * WOW v1.0 * * Copyright (c) 1991, Microsoft Corporation * * WGDI.H * WOW32 16-bit GDI API support * * History: * Created 07-Mar-1991 by Jeff Parsons (jeffpar) --*/
typedef struct _DIBINFO { HDC di_hdc; HANDLE di_hfile; HANDLE di_hsec; ULONG di_nalignment; PVOID di_newdib; PVOID di_newIntelDib; HBITMAP di_hbm; ULONG di_dibsize; USHORT di_originaldibsel; USHORT di_originaldibflags; ULONG di_lockcount; struct _DIBINFO *di_next; } DIBINFO, *PDIBINFO;
HDC W32HandleDibDrv (PVPVOID vpbmi16); BOOL W32AddDibInfo ( HDC hdcMem, HANDLE hfile, HANDLE hsec, ULONG nalignment, PVOID newdib, PVOID newIntelDib, HBITMAP hbm, ULONG dibsize, USHORT OriginalFlags, USHORT OriginalSel);
BOOL W32CheckAndFreeDibInfo (HDC hdc); VOID W32FreeDibInfo (PDIBINFO pdiCur, PDIBINFO pdiLast); ULONG W32RestoreOldDib (PDIBINFO pdi); HDC W32FindAndLockDibInfo (USHORT sel);
BOOL W32CheckDibDrvColorIndices(HDC16 hdcDest, HDC16 hdcSrc); VOID W32DibDrvColorIndicesRestore(void);
typedef struct _DIBSECTIONINFO { HBITMAP di_hbm; PVOID di_pv16; PVOID di_newIntelDib; struct _DIBSECTIONINFO *di_next; } DIBSECTIONINFO, *PDIBSECTIONINFO;
BOOL W32CheckAndFreeDibSectionInfo (HBITMAP hbm); ULONG cjBitmapBitsSize(CONST BITMAPINFO *pbmi);
extern PDIBSECTIONINFO pDibSectionInfoHead;
///////////////////////////////////////////////////////////////////////////////
//
// DIB Macros
//
///////////////////////////////////////////////////////////////////////////////
//
// These are commonly used macros for dib fields access
//
//
#define __abs(a) ((a) >= 0 ? (a) : -(a))
#define WIDTHBYTES(i) ((unsigned)((i+31)&(~31))/8) /* ULONG aligned ! */
#define DibWidthBytes(lpbi) (UINT)WIDTHBYTES((UINT)(lpbi)->biWidth * (UINT)((lpbi)->biBitCount))
#define DibSizeImage(lpbi) ((DWORD)(UINT)DibWidthBytes(lpbi) * (DWORD)(UINT)(__abs((lpbi)->biHeight)))
#define DibSize(lpbi) ((lpbi)->biSize + (lpbi)->biSizeImage + (int)(lpbi)->biClrUsed * sizeof(RGBQUAD))
#define DibPtr(lpbi) (LPVOID)(DibColors(lpbi) + (UINT)(lpbi)->biClrUsed)
#define DibColors(lpbi) ((LPRGBQUAD)((LPBYTE)(lpbi) + (int)(lpbi)->biSize))
#define DibNumColors(lpbi) ((lpbi)->biClrUsed == 0 && (lpbi)->biBitCount <= 8 \
? (int)(1 << (int)(lpbi)->biBitCount) \ : (int)(lpbi)->biClrUsed)
|