[gdi32]
[reactos.git] / reactos / dll / win32 / gdi32 / include / gdi32p.h
index aa01834..3bcf6f1 100644 (file)
@@ -6,14 +6,18 @@
  * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
  */
 
-#define GDI_BATCH_LIMIT 20
 
 /* DATA **********************************************************************/
 
 extern PGDI_TABLE_ENTRY GdiHandleTable;
+extern PGDI_SHARED_HANDLE_TABLE GdiSharedHandleTable;
 extern HANDLE hProcessHeap;
 extern HANDLE CurrentProcessId;
 extern DWORD GDI_BatchLimit;
+extern PDEVCAPS GdiDevCaps;
+extern BOOL gbLpk;          // Global bool LanguagePack
+extern HANDLE ghSpooler;
+extern RTL_CRITICAL_SECTION semLocal;
 
 typedef INT
 (CALLBACK* EMFPLAYPROC)(
@@ -29,27 +33,51 @@ typedef INT
 #define METAFILE_MEMORY 1
 #define METAFILE_DISK   2
 
-/* TYPES *********************************************************************/
+#define SAPCALLBACKDELAY 244
 
-// Based on wmfapi.h and Wine. This is the DC_ATTR for a MetaDC file.
-typedef struct tagMETAFILEDC {
-  PVOID      pvMetaBuffer;
-  HANDLE     hFile;
-  DWORD      Size;
-  PMETAHEADER mf;
-  UINT       handles_size, cur_handles;
-  HGDIOBJ   *handles;
+/* MACRO ********************************************************************/
+
+#define ROP_USES_SOURCE(Rop)   (((Rop) << 2 ^ Rop) & 0xCC0000)
 
-  // more DC object stuff.
-  HGDIOBJ    Pen;
-  HGDIOBJ    Brush;
-  HGDIOBJ    Palette;
-  HGDIOBJ    Font;
-  // Add more later.
+/* TYPES *********************************************************************/
+
+// Based on wmfapi.h and Wine.
+typedef struct tagMETAFILEDC
+{
+  PVOID       pvMetaBuffer;
+  HANDLE      hFile;
+  DWORD       Size;
+  DWORD       dwWritten;
+  METAHEADER  mh;
+  WORD        reserved;
+  HLOCAL      MFObjList;
+  HPEN        hPen;
+  HBRUSH      hBrush;
+  HDC         hDc;
+  HGDIOBJ     hMetaDc;
+  HPALETTE    hPalette;
+  HFONT       hFont;
+  HBITMAP     hBitmap;
+  HRGN        hRegion;
+  HGDIOBJ     hMetafile;
+  HGDIOBJ     hMemDc;
+  HPEN        hExtPen;
+  HGDIOBJ     hEnhMetaDc;
+  HGDIOBJ     hEnhMetaFile;
+  HCOLORSPACE hColorSpace;
+  WCHAR       Filename[MAX_PATH+2];
 } METAFILEDC,*PMETAFILEDC;
 
+// Metafile Entry handle
+typedef struct tagMF_ENTRY
+{
+  LIST_ENTRY   List;
+  HGDIOBJ      hmDC;             // Handle return from NtGdiCreateClientObj.
+  PMETAFILEDC pmfDC;
+} MF_ENTRY, *PMF_ENTRY;
 
-typedef struct tagENHMETAFILE {
+typedef struct tagENHMETAFILE
+{
   PVOID      pvMetaBuffer;
   HANDLE     hFile;      /* Handle for disk based MetaFile */
   DWORD      Size;
@@ -67,6 +95,70 @@ typedef struct tagENHMETAFILE {
   INT        planes;
 } ENHMETAFILE,*PENHMETAFILE;
 
+
+#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;
+  DWORD           Unknown;
+  PVOID           apfn[INDEX_LAST]; // Print Driver pfn
+} UMPDEV, *PUMPDEV;
+
+#define LOCALFONT_COUNT 10
+typedef struct _LOCALFONT
+{
+  FONT_ATTR  lfa[LOCALFONT_COUNT];
+} LOCALFONT, *PLOCALFONT;
+
+// sdk/winspool.h
+typedef BOOL (WINAPI *ABORTPRINTER) (HANDLE);
+typedef BOOL (WINAPI *CLOSEPRINTER) (HANDLE);
+typedef BOOL (WINAPI *CLOSESPOOLFILEHANDLE) (HANDLE, HANDLE); // W2k8
+typedef HANDLE (WINAPI *COMMITSPOOLDATA) (HANDLE,HANDLE,DWORD); // W2k8
+typedef LONG (WINAPI *DOCUMENTPROPERTIESW) (HWND,HANDLE,LPWSTR,PDEVMODEW,PDEVMODEW,DWORD);
+typedef BOOL (WINAPI *ENDDOCPRINTER) (HANDLE);
+typedef BOOL (WINAPI *ENDPAGEPRINTER) (HANDLE);
+typedef BOOL (WINAPI *GETPRINTERW) (HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
+typedef BOOL (WINAPI *GETPRINTERDRIVERW) (HANDLE,LPWSTR,DWORD,LPBYTE,DWORD,LPDWORD);
+typedef HANDLE (WINAPI *GETSPOOLFILEHANDLE) (HANDLE); // W2k8
+typedef BOOL (WINAPI *ISVALIDDEVMODEW) (PDEVMODEW,size_t);
+typedef BOOL (WINAPI *OPENPRINTERW) (LPWSTR,PHANDLE,LPPRINTER_DEFAULTSW);
+typedef BOOL (WINAPI *READPRINTER) (HANDLE,PVOID,DWORD,PDWORD);
+typedef BOOL (WINAPI *RESETPRINTERW) (HANDLE,LPPRINTER_DEFAULTSW);
+typedef LPWSTR (WINAPI *STARTDOCDLGW) (HANDLE,DOCINFOW *);
+typedef DWORD (WINAPI *STARTDOCPRINTERW) (HANDLE,DWORD,PBYTE);
+typedef BOOL (WINAPI *STARTPAGEPRINTER) (HANDLE);
+// ddk/winsplp.h
+typedef BOOL (WINAPI *SEEKPRINTER) (HANDLE,LARGE_INTEGER,PLARGE_INTEGER,DWORD,BOOL);
+typedef BOOL (WINAPI *SPLREADPRINTER) (HANDLE,LPBYTE *,DWORD);
+// Same as ddk/winsplp.h DriverUnloadComplete?
+typedef BOOL (WINAPI *SPLDRIVERUNLOADCOMPLETE) (LPWSTR); 
+// Driver support:
+// DrvDocumentEvent api/winddiui.h not W2k8 DocumentEventAW
+typedef INT (WINAPI *DOCUMENTEVENT) (HANDLE,HDC,INT,ULONG,PVOID,ULONG,PVOID);
+// DrvQueryColorProfile
+typedef BOOL (WINAPI *QUERYCOLORPROFILE) (HANDLE,PDEVMODEW,ULONG,VOID*,ULONG,FLONG);
+// Unknown:
+typedef DWORD (WINAPI *QUERYSPOOLMODE) (HANDLE,DWORD,DWORD);
+typedef DWORD (WINAPI *QUERYREMOTEFONTS) (DWORD,DWORD,DWORD);
+
+extern CLOSEPRINTER fpClosePrinter;
+extern OPENPRINTERW fpOpenPrinterW;
+
 /* FUNCTIONS *****************************************************************/
 
 PVOID
@@ -81,41 +173,47 @@ HEAP_strdupA2W(
 VOID
 HEAP_free(LPVOID memory);
 
-BOOL
+VOID 
 FASTCALL
-TextMetricW2A(
-    TEXTMETRICA *tma,
-    TEXTMETRICW *tmw
+FONT_TextMetricWToA(
+    const TEXTMETRICW *ptmW, 
+    LPTEXTMETRICA ptmA
 );
 
-BOOL
+VOID
 FASTCALL
 NewTextMetricW2A(
     NEWTEXTMETRICA *tma,
     NEWTEXTMETRICW *tmw
 );
 
-BOOL
+VOID
 FASTCALL
 NewTextMetricExW2A(
     NEWTEXTMETRICEXA *tma,
     NEWTEXTMETRICEXW *tmw
 );
 
+BOOL
+FASTCALL
+DeleteRegion( HRGN );
+
 BOOL
 GdiIsHandleValid(HGDIOBJ hGdiObj);
 
 BOOL
 GdiGetHandleUserData(
     HGDIOBJ hGdiObj,
+    DWORD ObjectType,
     PVOID *UserData
 );
 
 PLDC
+FASTCALL
 GdiGetLDC(HDC hDC);
 
 HGDIOBJ
-STDCALL
+WINAPI
 GdiFixUpHandle(HGDIOBJ hGO);
 
 BOOL
@@ -139,6 +237,18 @@ DEVMODEW *
 NTAPI
 GdiConvertToDevmodeW(DEVMODEA *dm);
 
+DWORD
+WINAPI
+GetAndSetDCDWord( HDC, INT, DWORD, DWORD, DWORD, DWORD );
+
+DWORD
+WINAPI
+GetDCDWord( HDC, INT, DWORD);
+
+HGDIOBJ
+WINAPI
+GetDCObject( HDC, INT);
+
 VOID
 NTAPI
 LogFontA2W(
@@ -153,10 +263,37 @@ LogFontW2A(
     CONST LOGFONTW *pW
 );
 
+VOID
+WINAPI
+EnumLogFontExW2A(
+    LPENUMLOGFONTEXA fontA,
+    CONST ENUMLOGFONTEXW *fontW );
+
 /* FIXME: Put in some public header */
 UINT
 WINAPI
 UserRealizePalette(HDC hDC);
 
-/* EOF */
+int
+WINAPI
+GdiAddFontResourceW(LPCWSTR lpszFilename,FLONG fl,DESIGNVECTOR *pdv);
+
+VOID
+WINAPI
+GdiSetLastError( DWORD dwErrCode );
+
+DWORD WINAPI GdiGetCodePage(HDC);
+UINT FASTCALL DIB_BitmapBitsSize( PBITMAPINFO );
 
+int
+WINAPI
+GdiGetBitmapBitsSize(BITMAPINFO *lpbmi);
+
+VOID GdiSAPCallback(PLDC pldc);
+HGDIOBJ FASTCALL hGetPEBHandle(HANDLECACHETYPE,COLORREF);
+
+int FASTCALL DocumentEventEx(PVOID,HANDLE,HDC,int,ULONG,PVOID,ULONG,PVOID);
+BOOL FASTCALL EndPagePrinterEx(PVOID,HANDLE);
+BOOL FASTCALL LoadTheSpoolerDrv(VOID);
+
+/* EOF */