[YAROTOWS] Reintegrate the branch. For a brighter future.
[reactos.git] / reactos / subsystems / win32 / win32k / include / pdevobj.h
index 4124509..6a19a1b 100644 (file)
@@ -1,6 +1,5 @@
-#pragma once
-
-#include <drivers/directx/directxint.h>
+#ifndef __WIN32K_PDEVOBJ_H
+#define __WIN32K_PDEVOBJ_H
 
 /* PDEVOBJ flags */
 #define PDEV_DISPLAY             0x00000001 /* Display device */
@@ -37,6 +36,21 @@ typedef struct _GDIPOINTER /* should stay private to ENG? No, part of PDEVOBJ ak
   RECTL    Exclude; /* required publicly for SPS_ACCEPT_EXCLUDE */
 } GDIPOINTER, *PGDIPOINTER;
 
+typedef struct _DEVMODEINFO
+{
+    struct _DEVMODEINFO *pdmiNext;
+    struct _LDEVOBJ *pldev;
+    ULONG cbdevmode;
+    DEVMODEW adevmode[1];
+} DEVMODEINFO, *PDEVMODEINFO;
+
+typedef struct
+{
+    DWORD dwFlags;
+    PDEVMODEW pdm;
+
+} DEVMODEENTRY, *PDEVMODEENTRY;
+
 typedef struct _GRAPHICS_DEVICE
 {
     WCHAR            szNtDeviceName[CCHDEVICENAME/2];
@@ -48,15 +62,17 @@ typedef struct _GRAPHICS_DEVICE
     DWORD            hkClassDriverConfig;
     DWORD            StateFlags;                     /* See DISPLAY_DEVICE_* */
     ULONG            cbdevmodeInfo;
-    PVOID            devmodeInfo;
-    DWORD            cbdevmodeInfo1;
-    PVOID            devmodeInfo1;
-    LPWSTR           pwszDeviceNames;
+    PDEVMODEINFO     pdevmodeInfo;
+    ULONG            cDevModes;
+    PDEVMODEENTRY    pDevModeList;
+    LPWSTR           pDiplayDrivers;
     LPWSTR           pwszDescription;
     DWORD            dwUnknown;
     PVOID            pUnknown;
     PFILE_OBJECT     FileObject;
     DWORD            ProtocolType;
+    ULONG            iDefaultMode;
+    ULONG            iCurrentMode;
 } GRAPHICS_DEVICE, *PGRAPHICS_DEVICE;
 
 typedef struct _PDEVOBJ
@@ -64,8 +80,8 @@ typedef struct _PDEVOBJ
     BASEOBJECT                BaseObject;
 
     struct _PDEVOBJ *         ppdevNext;
-    INT                       cPdevRefs;
-    INT                       cPdevOpenRefs;
+    LONG                      cPdevRefs;
+    LONG                      cPdevOpenRefs;
     struct _PDEVOBJ *         ppdevParent;
     FLONG                     flFlags;  // flags
 //  FLONG                     flAccelerated;
@@ -88,8 +104,8 @@ typedef struct _PDEVOBJ
 //  PVOID                     TypeOneInfo;
     PVOID                     pvGammaRamp;    /* Gamma ramp pointer. */
 //  PVOID                     RemoteTypeOne;
-//  ULONG                     ulHorzRes;
-//  ULONG                     ulVertRes;
+    ULONG                     ulHorzRes;
+    ULONG                     ulVertRes;
 //  PFN_DrvSetPointerShape    pfnDrvSetPointerShape;
 //  PFN_DrvMovePointer        pfnDrvMovePointer;
     PFN_DrvMovePointer        pfnMovePointer;
@@ -98,17 +114,17 @@ typedef struct _PDEVOBJ
 //  PFN_DrvSetPalette         pfnDrvSetPalette;
 //  PFN_DrvNotify             pfnDrvNotify;
 //  ULONG                     TagSig;
-//  PLDEVOBJ                  pldev;
+    struct _LDEVOBJ *         pldev;
     DHPDEV                    dhpdev;         /* DHPDEV for device. */
-    PVOID                     ppalSurf;       /* PEPALOBJ/PPALETTE for this device. */
+    struct _PALETTE*          ppalSurf;       /* PEPALOBJ/PPALETTE for this device. */
     DEVINFO                   devinfo;
     GDIINFO                   gdiinfo;
-    HSURF                     pSurface;       /* SURFACE for this device., FIXME: PSURFACE */
+    PSURFACE                  pSurface;       /* SURFACE for this device. */
 //  HANDLE                    hSpooler;       /* Handle to spooler, if spooler dev driver. */
 //  PVOID                     pDesktopId;
     PGRAPHICS_DEVICE          pGraphicsDevice;
-//  POINTL                    ptlOrigion;
-    PVOID                     pdmwDev;        /* Ptr->DEVMODEW.dmSize + dmDriverExtra == alloc size. */
+    POINTL                    ptlOrigion;
+    PDEVMODEW                 pdmwDev;        /* Ptr->DEVMODEW.dmSize + dmDriverExtra == alloc size. */
 //  DWORD                     Unknown3;
     FLONG                     DxDd_Flags;     /* DxDD active status flags. */
 //  LONG                      devAttr;
@@ -117,15 +133,12 @@ typedef struct _PDEVOBJ
     union
     {
       DRIVER_FUNCTIONS        DriverFunctions;
+      DRIVER_FUNCTIONS        pfn;
       PVOID                   apfn[INDEX_LAST];         // B8C 0x0598
     };
 
     /* ros specific */
     ULONG         DxDd_nCount;
-    ULONG         DisplayNumber;
-    DEVMODEW      DMW;
-    PFILE_OBJECT  VideoFileObject;
-    BOOLEAN       PreparedDriver;
     GDIPOINTER    Pointer;
     /* Stuff to keep track of software cursors; win32k gdi part */
     UINT SafetyRemoveLevel; /* at what level was the cursor removed?
@@ -134,11 +147,47 @@ typedef struct _PDEVOBJ
     struct _EDD_DIRECTDRAW_GLOBAL * pEDDgpl;
 } PDEVOBJ, *PPDEVOBJ;
 
-/* PDEV and EDDX extra data container.*/
-typedef struct _PDEVEDD
-{
-    PDEVOBJ pdevobj;
-    EDD_DIRECTDRAW_GLOBAL EDDgpl;
-} PDEVEDD, *PPDEVEDD;
+/* Globals ********************************************************************/
+
+extern PPDEVOBJ gppdevPrimary;
+#define pPrimarySurface gppdevPrimary
+
+
+/* Function prototypes ********************************************************/
+
+PPDEVOBJ
+NTAPI
+EngpGetPDEV(PUNICODE_STRING pustrDevice);
+
+VOID
+NTAPI
+PDEVOBJ_vRelease(PPDEVOBJ ppdev);
+
+PSURFACE
+NTAPI
+PDEVOBJ_pSurface(
+    PPDEVOBJ ppdev);
+
+VOID
+NTAPI
+PDEVOBJ_vGetDeviceCaps(
+    PPDEVOBJ ppdev,
+    PDEVCAPS pDevCaps);
+
+BOOL
+NTAPI
+InitPDEVImpl();
+
+BOOL
+NTAPI
+InitLDEVImpl();
+
+BOOL
+NTAPI
+InitDeviceImpl();
+
+PSIZEL
+FASTCALL
+PDEVOBJ_sizl(PPDEVOBJ, PSIZEL);
 
-extern ULONG gdwDirectDrawContext;
+#endif /* !__WIN32K_PDEVOBJ_H */