Grammar and spelling corrections for the documentation and comments.
[reactos.git] / reactos / subsystems / win32 / win32k / ntddraw / dxeng.c
index 3607cd7..9e5b345 100644 (file)
 #include <w32k.h>
 #include <debug.h>
 
+
+
 ULONG gcEngFuncs = DXENG_INDEX_DxEngLoadImage + 1;
 DRVFN gaEngFuncs [] =
 {
     {0, (PFN) NULL},
     {DXENG_INDEX_DxEngNUIsTermSrv, (PFN)DxEngNUIsTermSrv},
-//    {DXENG_INDEX_DxEngScreenAccessCheck, (PFN)DxEngScreenAccessCheck},
-    {0, (PFN) NULL}, // hack for now 
+    {DXENG_INDEX_DxEngScreenAccessCheck, (PFN)DxEngScreenAccessCheck},
     {DXENG_INDEX_DxEngRedrawDesktop, (PFN)DxEngRedrawDesktop},
     {DXENG_INDEX_DxEngDispUniq, (PFN)DxEngDispUniq},
-//    {DXENG_INDEX_DxEngIncDispUniq, (PFN)DxEngIncDispUniq},
-    {0, (PFN) NULL}, // hack for now 
+    {DXENG_INDEX_DxEngIncDispUniq, (PFN)DxEngIncDispUniq},
     {DXENG_INDEX_DxEngVisRgnUniq, (PFN)DxEngVisRgnUniq},
-//    {DXENG_INDEX_DxEngLockShareSem, (PFN)DxEngLockShareSem},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngUnlockShareSem, (PFN)DxEngUnlockShareSem},
-    {0, (PFN) NULL}, // hack for now 
+    {DXENG_INDEX_DxEngLockShareSem, (PFN)DxEngLockShareSem},
+    {DXENG_INDEX_DxEngUnlockShareSem, (PFN)DxEngUnlockShareSem},
     {DXENG_INDEX_DxEngEnumerateHdev, (PFN)DxEngEnumerateHdev},
-//    {DXENG_INDEX_DxEngLockHdev, (PFN)DxEngLockHdev},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngUnlockHdev, (PFN)DxEngUnlockHdev},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngIsHdevLockedByCurrentThread, (PFN)DxEngIsHdevLockedByCurrentThread},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngReferenceHdev, (PFN)DxEngReferenceHdev},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngUnreferenceHdev, (PFN)DxEngUnreferenceHdev},
-    {0, (PFN) NULL}, // hack for now 
+    {DXENG_INDEX_DxEngLockHdev, (PFN)DxEngLockHdev},
+    {DXENG_INDEX_DxEngUnlockHdev, (PFN)DxEngUnlockHdev},
+    {DXENG_INDEX_DxEngIsHdevLockedByCurrentThread, (PFN)DxEngIsHdevLockedByCurrentThread},
+    {DXENG_INDEX_DxEngReferenceHdev, (PFN)DxEngReferenceHdev},
+    {DXENG_INDEX_DxEngUnreferenceHdev, (PFN)DxEngUnreferenceHdev},
     {DXENG_INDEX_DxEngGetDeviceGammaRamp, (PFN)DxEngGetDeviceGammaRamp},
-//    {DXENG_INDEX_DxEngSetDeviceGammaRamp, (PFN)DxEngSetDeviceGammaRamp},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngSpTearDownSprites, (PFN)DxEngSpTearDownSprites},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngSpUnTearDownSprites, (PFN)DxEngSpUnTearDownSprites},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngSpSpritesVisible, (PFN)DxEngSpSpritesVisible},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngGetHdevData, (PFN)DxEngGetHdevData},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngSetHdevData, (PFN)DxEngSetHdevData},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngCreateMemoryDC, (PFN)DxEngCreateMemoryDC},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngGetDesktopDC, (PFN)DxEngGetDesktopDC},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngDeleteDC, (PFN)DxEngDeleteDC},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngCleanDC, (PFN)DxEngCleanDC},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngSetDCOwner, (PFN)DxEngSetDCOwner},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngLockDC, (PFN)DxEngLockDC},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngUnlockDC, (PFN)DxEngUnlockDC},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngSetDCState, (PFN)DxEngGetDCState},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngGetDCState, (PFN)DxEngGetDCState},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngSelectBitmap, (PFN)DxEngSelectBitmap},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngSetBitmapOwner, (PFN)DxEngSetBitmapOwner},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngDeleteSurface, (PFN)DxEngDeleteSurface},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngGetSurfaceData, (PFN)DxEngGetSurfaceData},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngAltLockSurface, (PFN)DxEngAltLockSurface},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngUploadPaletteEntryToSurface, (PFN)DxEngUploadPaletteEntryToSurface},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngMarkSurfaceAsDirectDraw, (PFN)DxEngMarkSurfaceAsDirectDraw},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngSelectPaletteToSurface, (PFN)DxEngSelectPaletteToSurface},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngSyncPaletteTableWithDevice, (PFN)DxEngSyncPaletteTableWithDevice},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngSetPaletteState, (PFN)DxEngSetPaletteState},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngGetRedirectionBitmap, (PFN)DxEngGetRedirectionBitmap},
-    {0, (PFN) NULL}, // hack for now 
-//    {DXENG_INDEX_DxEngLoadImage, (PFN)DxEngLoadImage}
-    {0, (PFN) NULL} // hack for now
+    {DXENG_INDEX_DxEngSetDeviceGammaRamp, (PFN)DxEngSetDeviceGammaRamp},
+    {DXENG_INDEX_DxEngSpTearDownSprites, (PFN)DxEngSpTearDownSprites},
+    {DXENG_INDEX_DxEngSpUnTearDownSprites, (PFN)DxEngSpUnTearDownSprites},
+    {DXENG_INDEX_DxEngSpSpritesVisible, (PFN)DxEngSpSpritesVisible},
+    {DXENG_INDEX_DxEngGetHdevData, (PFN)DxEngGetHdevData},
+    {DXENG_INDEX_DxEngSetHdevData, (PFN)DxEngSetHdevData},
+    {DXENG_INDEX_DxEngCreateMemoryDC, (PFN)DxEngCreateMemoryDC},
+    {DXENG_INDEX_DxEngGetDesktopDC, (PFN)DxEngGetDesktopDC},
+    {DXENG_INDEX_DxEngDeleteDC, (PFN)DxEngDeleteDC},
+    {DXENG_INDEX_DxEngCleanDC, (PFN)DxEngCleanDC},
+    {DXENG_INDEX_DxEngSetDCOwner, (PFN)DxEngSetDCOwner},
+    {DXENG_INDEX_DxEngLockDC, (PFN)DxEngLockDC},
+    {DXENG_INDEX_DxEngUnlockDC, (PFN)DxEngUnlockDC},
+    {DXENG_INDEX_DxEngSetDCState, (PFN)DxEngGetDCState},
+    {DXENG_INDEX_DxEngGetDCState, (PFN)DxEngGetDCState},
+    {DXENG_INDEX_DxEngSelectBitmap, (PFN)DxEngSelectBitmap},
+    {DXENG_INDEX_DxEngSetBitmapOwner, (PFN)DxEngSetBitmapOwner},
+    {DXENG_INDEX_DxEngDeleteSurface, (PFN)DxEngDeleteSurface},
+    {DXENG_INDEX_DxEngGetSurfaceData, (PFN)DxEngGetSurfaceData},
+    {DXENG_INDEX_DxEngAltLockSurface, (PFN)DxEngAltLockSurface},
+    {DXENG_INDEX_DxEngUploadPaletteEntryToSurface, (PFN)DxEngUploadPaletteEntryToSurface},
+    {DXENG_INDEX_DxEngMarkSurfaceAsDirectDraw, (PFN)DxEngMarkSurfaceAsDirectDraw},
+    {DXENG_INDEX_DxEngSelectPaletteToSurface, (PFN)DxEngSelectPaletteToSurface},
+    {DXENG_INDEX_DxEngSyncPaletteTableWithDevice, (PFN)DxEngSyncPaletteTableWithDevice},
+    {DXENG_INDEX_DxEngSetPaletteState, (PFN)DxEngSetPaletteState},
+    {DXENG_INDEX_DxEngGetRedirectionBitmap, (PFN)DxEngGetRedirectionBitmap},
+    {DXENG_INDEX_DxEngLoadImage, (PFN)DxEngLoadImage}
 };
 
 /************************************************************************/
@@ -104,7 +70,7 @@ BOOL
 DxEngNUIsTermSrv()
 {
     /* FIXME ReactOS does not suport terminal server yet, we can not check if we got a connections or not */
-    DPRINT1("We need termal server connections check");
+    UNIMPLEMENTED;
     return FALSE;
 }
 
@@ -117,7 +83,7 @@ BOOL
 DxEngRedrawDesktop()
 {
     /* FIXME add redraw code */
-    DPRINT1("We need add code for redraw whole desktop");
+    UNIMPLEMENTED;
     return TRUE;
 }
 
@@ -130,11 +96,11 @@ DxEngRedrawDesktop()
 ULONG
 DxEngDispUniq()
 {
-    /* FIXME DisplayUniqVisrgn from gdishare memory */
-    DPRINT1("We need DisplayUniqVisrgn from gdishare memory");
-    return 0;
+    return GdiHandleTable->flDeviceUniq;
 }
 
+ULONG gulVisRgnUniqueness; // Increase count everytime client region is updated.
+
 /************************************************************************/
 /* DxEngVisRgnUniq                                                      */
 /************************************************************************/
@@ -142,35 +108,473 @@ DxEngDispUniq()
 ULONG
 DxEngVisRgnUniq()
 {
-    /* FIXME DisplayUniqVisrgn from gdishare memory */
-    DPRINT1("We need VisRgnUniq from win32k");
-    return 0;
+    return gulVisRgnUniqueness;
 }
 
 /************************************************************************/
 /* DxEngEnumerateHdev                                                   */
 /************************************************************************/
-/* Enumate all drivers in win32k */
+/* Enumerate all drivers in win32k */
 HDEV *
 DxEngEnumerateHdev(HDEV *hdev)
 {
-    /* FIXME Enumate all drivers in win32k */
-    DPRINT1("We do not enumate any device from win32k ");
-    return 0;
+    /* FIXME Enumerate all drivers in win32k */
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/*++
+* @name DxEngGetDeviceGammaRamp
+* @implemented
+*
+* The function DxEngSetDeviceGammaRamp Set Gamma ramp from from dxg.sys
+
+* @param HDEV hPDev
+* The hdev
+*
+* @param PGAMMARAMP Ramp
+* to fill in our gamma ramp
+*
+* @return
+*Returns TRUE for success, FALSE for failure
+*
+* @remarks.
+* ReactOS does not loop it, only sets the gamma once.
+*
+*--*/
+BOOL
+DxEngGetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp)
+{
+    return IntGetDeviceGammaRamp(hPDev, Ramp);
+}
+
+
+/*++
+* @name DxEngLockDC
+* @implemented
+*
+* The function DxEngLockDC locks a hdc from dxg.sys
+*
+* @param HDC hDC
+* The handle we want to lock
+*
+* @return
+* Returns PDC if lock succeeded or NULL depns if it failed
+*
+* @remarks.
+* none
+*
+*--*/
+PDC
+DxEngLockDC(HDC hDC)
+{
+    return DC_LockDc(hDC);
+}
+
+
+/*++
+* @name DxEngUnlockDC
+* @implemented
+*
+* The function DxEngUnlockDC unlocks a pDC (hdc) from dxg.sys
+
+* @param PDC pDC
+* The handle we want to unlock
+*
+* @return
+* This function returns TRUE no matter what
+*
+* @remarks.
+* none
+*
+*--*/
+BOOL
+DxEngUnlockDC(PDC pDC)
+{
+    DC_UnlockDc(pDC);
+    return TRUE;
+}
+
+
+/************************************************************************/
+/* DxEngCreateMemoryDC                                                  */
+/************************************************************************/
+DWORD DxEngCreateMemoryDC(DWORD x1)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngScreenAccessCheck                                               */
+/************************************************************************/
+DWORD DxEngScreenAccessCheck()
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngLockShareSem                                                    */
+/************************************************************************/
+DWORD DxEngLockShareSem()
+{
+    UNIMPLEMENTED;
+    return FALSE;
 }
 
 /************************************************************************/
-/* DxEngGetDeviceGammaRamp                                              */
+/* DxEngUnlockShareSem                                                  */
 /************************************************************************/
-/* same protypes NtGdiEngGetDeviceGammaRamp, diffent is we skipp the user mode checks and seh */
+DWORD DxEngUnlockShareSem()
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngLockHdev                                                        */
+/************************************************************************/
+DWORD DxEngLockHdev(DWORD x1)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngUnlockHdev                                                      */
+/************************************************************************/
+DWORD DxEngUnlockHdev(DWORD x1)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngReferenceHdev                                                   */
+/************************************************************************/
+DWORD DxEngReferenceHdev(DWORD x1)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngIsHdevLockedByCurrentThread                                     */
+/************************************************************************/
+DWORD DxEngIsHdevLockedByCurrentThread(DWORD x1)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+
+/************************************************************************/
+/* DxEngUnreferenceHdev                                                 */
+/************************************************************************/
+DWORD DxEngUnreferenceHdev(DWORD x1)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+
+/*++
+* @name DxEngSetDeviceGammaRamp
+* @implemented
+*
+* The function DxEngSetDeviceGammaRamp sets gamma ramp from dxg.sys
+
+* @param HDEV hPDev
+* The hdev
+*
+* @param PGAMMARAMP Ramp
+* Value to change gamma ramp to
+*
+* @param BOOL Test
+* Whether gamma should be tested. TRUE to test, FALSE to not test
+*
+* @return
+*Returns TRUE for success, FALSE for failure
+*
+* @remarks.
+* ReactOS does not loop and only sets the gamma once.
+*
+*--*/
 BOOL
-DxEngGetDeviceGammaRamp(HDC hDC, LPVOID lpRamp)
+DxEngSetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp, BOOL Test)
+{
+   return IntSetDeviceGammaRamp(hPDev, Ramp, Test);
+}
+
+/************************************************************************/
+/* DxEngSpTearDownSprites                                               */
+/************************************************************************/
+DWORD DxEngSpTearDownSprites(DWORD x1, DWORD x2, DWORD x3)
 {
-    /* FIXME redirect it to NtGdiEngGetDeviceGammaRamp internal call  */
-    DPRINT1("redirect it to NtGdiEngGetDeviceGammaRamp internal call ");
+    UNIMPLEMENTED;
     return FALSE;
 }
 
+/************************************************************************/
+/* DxEngSpUnTearDownSprites                                             */
+/************************************************************************/
+DWORD DxEngSpUnTearDownSprites(DWORD x1, DWORD x2, DWORD x3)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngSpSpritesVisible                                                */
+/************************************************************************/
+DWORD DxEngSpSpritesVisible(DWORD x1)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
 
+/************************************************************************/
+/* DxEngGetHdevData                                                     */
+/************************************************************************/
+DWORD
+DxEngGetHdevData(PEDD_DIRECTDRAW_GLOBAL pEDDgpl,
+                 DWORD Index)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+/************************************************************************/
+/* DxEngSetHdevData                                                     */
+/************************************************************************/
+DWORD DxEngSetHdevData(DWORD x1, DWORD x2, DWORD x3)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngGetDesktopDC                                                    */
+/************************************************************************/
+DWORD DxEngGetDesktopDC(DWORD x1, DWORD x2, DWORD x3)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngDeleteDC                                                        */
+/************************************************************************/
+DWORD DxEngDeleteDC(DWORD x1, DWORD x2)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngCleanDC                                                         */
+/************************************************************************/
+DWORD DxEngCleanDC(DWORD x1)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngSetDCOwner                                                      */
+/************************************************************************/
+DWORD DxEngSetDCOwner(DWORD x1, DWORD x2)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngSetDCState                                                      */
+/************************************************************************/
+DWORD DxEngSetDCState(DWORD x1, DWORD x2, DWORD x3)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+
+
+/*++
+* @name DxEngGetDCState
+* @implemented
+*
+* The function DxEngGetDCState is capable of returning three
+* DC states depending on what value is passed in its second parameter:
+* 1. If the DC is full screen
+* 2. Get Complexity of visible region
+* 3. Get Driver hdev, which is pPDev
+*
+* @param HDC hdc
+* The DC handle
+*
+* @param DWORD type
+* value 1 = Is DC fullscreen 
+* value 2 = Get Complexity of visible region. 
+* value 3 = Get Driver hdev, which is a pPDev. 
+*
+* @return
+* Return one of the type values
+*
+* @remarks.
+* We do not have type 2 implement yet
+*
+*--*/
+DWORD
+DxEngGetDCState(HDC hDC,
+                DWORD type)
+{
+    PDC pDC = DC_LockDc(hDC);
+    DWORD retVal = 0;
+
+    if (pDC)
+    {
+        switch (type)
+        {
+            case 1:
+                retVal = (DWORD) pDC->DC_Flags & DC_FLAG_FULLSCREEN;
+                break;
+            case 2:
+                UNIMPLEMENTED;
+                break;
+            case 3:
+            {
+                /* Return the HDEV of this DC. */            
+                retVal = (DWORD) pDC->pPDev;
+                break;
+            }
+            default:
+                /* if a valid type is not found, zero is returned */
+                DPRINT1("Warning did not find type %d\n",type); 
+                break;
+        }
+        DC_UnlockDc(pDC);
+    }
+
+    return retVal;
+}
+
+/************************************************************************/
+/* DxEngSelectBitmap                                                    */
+/************************************************************************/
+DWORD DxEngSelectBitmap(DWORD x1, DWORD x2)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngSetBitmapOwner                                                  */
+/************************************************************************/
+DWORD DxEngSetBitmapOwner(DWORD x1, DWORD x2)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngDeleteSurface                                                   */
+/************************************************************************/
+DWORD DxEngDeleteSurface(DWORD x1)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngGetSurfaceData                                                  */
+/************************************************************************/
+DWORD DxEngGetSurfaceData(DWORD x1, DWORD x2)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngAltLockSurface                                                  */
+/************************************************************************/
+DWORD DxEngAltLockSurface(DWORD x1)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngUploadPaletteEntryToSurface                                     */
+/************************************************************************/
+DWORD DxEngUploadPaletteEntryToSurface(DWORD x1, DWORD x2,DWORD x3, DWORD x4)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngMarkSurfaceAsDirectDraw                                         */
+/************************************************************************/
+DWORD DxEngMarkSurfaceAsDirectDraw(DWORD x1, DWORD x2)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngSelectPaletteToSurface                                          */
+/************************************************************************/
+DWORD DxEngSelectPaletteToSurface(DWORD x1, DWORD x2)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngSyncPaletteTableWithDevice                                      */
+/************************************************************************/
+DWORD DxEngSyncPaletteTableWithDevice(DWORD x1, DWORD x2)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngSetPaletteState                                                 */
+/************************************************************************/
+DWORD DxEngSetPaletteState(DWORD x1, DWORD x2, DWORD x3)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngGetRedirectionBitmap                                            */
+/************************************************************************/
+DWORD DxEngGetRedirectionBitmap(DWORD x1)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngLoadImage                                                       */
+/************************************************************************/
+DWORD DxEngLoadImage(DWORD x1,DWORD x2)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+/************************************************************************/
+/* DxEngIncDispUniq                                                       */
+/************************************************************************/
+DWORD DxEngIncDispUniq()
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}