2006-11-08 11:47:44 +00:00
|
|
|
/*
|
|
|
|
* COPYRIGHT: See COPYING in the top level directory
|
|
|
|
* PROJECT: ReactOS System Libraries
|
|
|
|
* FILE: lib/gdi32/include/gdi32p.h
|
|
|
|
* PURPOSE: User-Mode Win32 GDI Library Private Header
|
|
|
|
* PROGRAMMER: Alex Ionescu (alex@relsoft.net)
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/* DATA **********************************************************************/
|
|
|
|
|
|
|
|
extern PGDI_TABLE_ENTRY GdiHandleTable;
|
2007-12-15 08:08:11 +00:00
|
|
|
extern PGDI_SHARED_HANDLE_TABLE GdiSharedHandleTable;
|
2006-11-08 11:47:44 +00:00
|
|
|
extern HANDLE hProcessHeap;
|
|
|
|
extern HANDLE CurrentProcessId;
|
|
|
|
extern DWORD GDI_BatchLimit;
|
2007-12-15 08:08:11 +00:00
|
|
|
extern PDEVCAPS GdiDevCaps;
|
2006-11-08 11:47:44 +00:00
|
|
|
|
|
|
|
typedef INT
|
|
|
|
(CALLBACK* EMFPLAYPROC)(
|
|
|
|
HDC hdc,
|
|
|
|
INT iFunction,
|
|
|
|
HANDLE hPageQuery
|
|
|
|
);
|
|
|
|
|
2006-11-26 00:37:40 +00:00
|
|
|
/* DEFINES *******************************************************************/
|
|
|
|
|
|
|
|
#define HANDLE_LIST_INC 20
|
|
|
|
|
2006-11-28 07:47:07 +00:00
|
|
|
#define METAFILE_MEMORY 1
|
|
|
|
#define METAFILE_DISK 2
|
|
|
|
|
2008-06-07 00:51:38 +00:00
|
|
|
/* MACRO ********************************************************************/
|
|
|
|
#define ROP_USES_SOURCE(Rop) ((Rop << 2) ^ Rop) & 0xCC0000
|
|
|
|
|
2006-11-26 00:37:40 +00:00
|
|
|
/* TYPES *********************************************************************/
|
|
|
|
|
2007-08-05 09:21:00 +00:00
|
|
|
// Based on wmfapi.h and Wine.
|
2006-11-26 00:37:40 +00:00
|
|
|
typedef struct tagMETAFILEDC {
|
|
|
|
PVOID pvMetaBuffer;
|
|
|
|
HANDLE hFile;
|
|
|
|
DWORD Size;
|
2007-08-05 09:21:00 +00:00
|
|
|
METAHEADER mh;
|
2006-11-26 00:37:40 +00:00
|
|
|
UINT handles_size, cur_handles;
|
|
|
|
HGDIOBJ *handles;
|
|
|
|
|
|
|
|
// more DC object stuff.
|
|
|
|
HGDIOBJ Pen;
|
|
|
|
HGDIOBJ Brush;
|
|
|
|
HGDIOBJ Palette;
|
|
|
|
HGDIOBJ Font;
|
2007-10-19 23:21:45 +00:00
|
|
|
|
2007-08-05 09:21:00 +00:00
|
|
|
WCHAR Filename[MAX_PATH+2];
|
2006-11-26 00:37:40 +00:00
|
|
|
// Add more later.
|
|
|
|
} METAFILEDC,*PMETAFILEDC;
|
|
|
|
|
2007-08-05 09:21:00 +00:00
|
|
|
// Metafile Entry handle
|
|
|
|
typedef struct tagMF_ENTRY {
|
|
|
|
LIST_ENTRY List;
|
|
|
|
HGDIOBJ hmDC; // Handle return from NtGdiCreateClientObj.
|
|
|
|
PMETAFILEDC pmfDC;
|
|
|
|
} MF_ENTRY, *PMF_ENTRY;
|
2006-11-26 00:37:40 +00:00
|
|
|
|
|
|
|
typedef struct tagENHMETAFILE {
|
|
|
|
PVOID pvMetaBuffer;
|
|
|
|
HANDLE hFile; /* Handle for disk based MetaFile */
|
|
|
|
DWORD Size;
|
2006-11-26 00:53:07 +00:00
|
|
|
INT iType;
|
2006-11-26 00:37:40 +00:00
|
|
|
PENHMETAHEADER emf;
|
|
|
|
UINT handles_size, cur_handles;
|
|
|
|
HGDIOBJ *handles;
|
|
|
|
INT horzres, vertres;
|
|
|
|
INT horzsize, vertsize;
|
|
|
|
INT logpixelsx, logpixelsy;
|
|
|
|
INT bitspixel;
|
|
|
|
INT textcaps;
|
|
|
|
INT rastercaps;
|
|
|
|
INT technology;
|
|
|
|
INT planes;
|
|
|
|
} ENHMETAFILE,*PENHMETAFILE;
|
|
|
|
|
2008-10-20 19:33:20 +00:00
|
|
|
|
|
|
|
#define PDEV_UMPD_ID 0xFEDCBA98
|
|
|
|
// UMPDEV flags
|
|
|
|
#define UMPDEV_NO_ESCAPE 0x0002
|
|
|
|
#define UMPDEV_SUPPORT_ESCAPE 0x0004
|
|
|
|
typedef struct _UMPDEV
|
|
|
|
{
|
|
|
|
DWORD Sig; // Init with PDEV_UMPD_ID
|
|
|
|
struct _UMPDEV *pumpdNext;
|
|
|
|
PDRIVER_INFO_5W pdi5Info;
|
|
|
|
HMODULE hModule;
|
|
|
|
DWORD dwFlags;
|
|
|
|
DWORD dwDriverAttributes;
|
|
|
|
DWORD dwConfigVersion; // Number of times the configuration
|
|
|
|
// file for this driver has been upgraded
|
|
|
|
// or downgraded since the last spooler restart.
|
|
|
|
DWORD dwDriverCount; // After init should be 2
|
|
|
|
DWORD WOW64_UMPDev;
|
|
|
|
DWORD WOW64_hMod;
|
|
|
|
WCHAR String[188];
|
|
|
|
} UMPDEV, *PUMPDEV;
|
|
|
|
|
|
|
|
|
2006-11-08 11:47:44 +00:00
|
|
|
/* FUNCTIONS *****************************************************************/
|
|
|
|
|
|
|
|
PVOID
|
|
|
|
HEAP_alloc(DWORD len);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
HEAP_strdupA2W(
|
|
|
|
LPWSTR* ppszW,
|
|
|
|
LPCSTR lpszA
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
HEAP_free(LPVOID memory);
|
|
|
|
|
|
|
|
BOOL
|
|
|
|
FASTCALL
|
|
|
|
TextMetricW2A(
|
|
|
|
TEXTMETRICA *tma,
|
|
|
|
TEXTMETRICW *tmw
|
|
|
|
);
|
|
|
|
|
|
|
|
BOOL
|
|
|
|
FASTCALL
|
|
|
|
NewTextMetricW2A(
|
|
|
|
NEWTEXTMETRICA *tma,
|
|
|
|
NEWTEXTMETRICW *tmw
|
|
|
|
);
|
|
|
|
|
|
|
|
BOOL
|
|
|
|
FASTCALL
|
|
|
|
NewTextMetricExW2A(
|
|
|
|
NEWTEXTMETRICEXA *tma,
|
|
|
|
NEWTEXTMETRICEXW *tmw
|
|
|
|
);
|
|
|
|
|
2007-11-05 01:50:59 +00:00
|
|
|
BOOL
|
|
|
|
FASTCALL
|
|
|
|
DeleteRegion( HRGN );
|
|
|
|
|
2006-11-08 11:47:44 +00:00
|
|
|
BOOL
|
|
|
|
GdiIsHandleValid(HGDIOBJ hGdiObj);
|
|
|
|
|
|
|
|
BOOL
|
|
|
|
GdiGetHandleUserData(
|
|
|
|
HGDIOBJ hGdiObj,
|
2007-11-29 05:21:19 +00:00
|
|
|
DWORD ObjectType,
|
2006-11-08 11:47:44 +00:00
|
|
|
PVOID *UserData
|
|
|
|
);
|
|
|
|
|
2006-11-27 21:58:46 +00:00
|
|
|
PLDC
|
|
|
|
GdiGetLDC(HDC hDC);
|
|
|
|
|
2007-04-20 21:21:15 +00:00
|
|
|
HGDIOBJ
|
|
|
|
STDCALL
|
|
|
|
GdiFixUpHandle(HGDIOBJ hGO);
|
|
|
|
|
2006-11-08 11:47:44 +00:00
|
|
|
BOOL
|
|
|
|
WINAPI
|
|
|
|
CalculateColorTableSize(
|
|
|
|
CONST BITMAPINFOHEADER *BitmapInfoHeader,
|
|
|
|
UINT *ColorSpec,
|
|
|
|
UINT *ColorTableSize
|
|
|
|
);
|
|
|
|
|
|
|
|
LPBITMAPINFO
|
|
|
|
WINAPI
|
|
|
|
ConvertBitmapInfo(
|
|
|
|
CONST BITMAPINFO *BitmapInfo,
|
|
|
|
UINT ColorSpec,
|
|
|
|
UINT *BitmapInfoSize,
|
|
|
|
BOOL FollowedByData
|
|
|
|
);
|
|
|
|
|
|
|
|
DEVMODEW *
|
|
|
|
NTAPI
|
|
|
|
GdiConvertToDevmodeW(DEVMODEA *dm);
|
|
|
|
|
2007-08-08 02:20:43 +00:00
|
|
|
DWORD
|
|
|
|
STDCALL
|
|
|
|
GetAndSetDCDWord( HDC, INT, DWORD, DWORD, DWORD, DWORD );
|
|
|
|
|
|
|
|
DWORD
|
|
|
|
STDCALL
|
|
|
|
GetDCDWord( HDC, INT, DWORD);
|
|
|
|
|
2007-09-01 02:51:48 +00:00
|
|
|
HGDIOBJ
|
|
|
|
STDCALL
|
|
|
|
GetDCObject( HDC, INT);
|
|
|
|
|
2006-11-08 11:47:44 +00:00
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
LogFontA2W(
|
|
|
|
LPLOGFONTW pW,
|
|
|
|
CONST LOGFONTA *pA
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
LogFontW2A(
|
|
|
|
LPLOGFONTA pA,
|
|
|
|
CONST LOGFONTW *pW
|
|
|
|
);
|
|
|
|
|
2007-04-22 12:46:26 +00:00
|
|
|
VOID
|
|
|
|
STDCALL
|
2007-10-19 23:21:45 +00:00
|
|
|
EnumLogFontExW2A(
|
2007-04-22 12:46:26 +00:00
|
|
|
LPENUMLOGFONTEXA fontA,
|
|
|
|
CONST ENUMLOGFONTEXW *fontW );
|
|
|
|
|
2006-11-08 11:47:44 +00:00
|
|
|
/* FIXME: Put in some public header */
|
|
|
|
UINT
|
|
|
|
WINAPI
|
|
|
|
UserRealizePalette(HDC hDC);
|
|
|
|
|
2007-08-23 09:52:31 +00:00
|
|
|
int
|
|
|
|
STDCALL
|
|
|
|
GdiAddFontResourceW(LPCWSTR lpszFilename,FLONG fl,DESIGNVECTOR *pdv);
|
|
|
|
|
2007-09-25 13:27:09 +00:00
|
|
|
VOID
|
|
|
|
STDCALL
|
|
|
|
GdiSetLastError( DWORD dwErrCode );
|
|
|
|
|
2008-11-04 01:57:38 +00:00
|
|
|
DWORD STDCALL GdiGetCodePage(HDC);
|
|
|
|
|
2006-11-08 11:47:44 +00:00
|
|
|
/* EOF */
|
2006-11-26 00:37:40 +00:00
|
|
|
|