[Gdi32]
authorJames Tabor <james.tabor@reactos.org>
Mon, 1 Feb 2010 15:13:35 +0000 (15:13 +0000)
committerJames Tabor <james.tabor@reactos.org>
Mon, 1 Feb 2010 15:13:35 +0000 (15:13 +0000)
- Miscellaneous implementations and forwards.

svn path=/trunk/; revision=45370

reactos/dll/win32/gdi32/gdi32.spec
reactos/dll/win32/gdi32/misc/stubs.c

index e97adf9..de8c127 100644 (file)
 @ stdcall XFORMOBJ_iGetXform(ptr ptr) NtGdiXFORMOBJ_iGetXform
 @ stdcall XLATEOBJ_cGetPalette(ptr long long ptr) NtGdiXLATEOBJ_cGetPalette
 @ stdcall XLATEOBJ_hGetColorTransform(ptr) NtGdiXLATEOBJ_hGetColorTransform
-@ stdcall XLATEOBJ_iXlate(ptr long)
+@ stdcall XLATEOBJ_iXlate(ptr long) NtGdiXLATEOBJ_iXlate
 @ stdcall XLATEOBJ_piVector(ptr)
 @ stdcall bInitSystemAndFontsDirectoriesW(wstr wstr)
 @ stdcall bMakePathNameW(wstr wstr wstr long)
index 24c141e..19e1e77 100644 (file)
@@ -809,15 +809,16 @@ GdiArtificialDecrementDriver(LPWSTR pDriverName,BOOL unknown)
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
 BOOL
 WINAPI
 GdiCleanCacheDC(HDC hdc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+   if (GDI_HANDLE_GET_TYPE(hdc) == GDILoObjType_LO_DC_TYPE)
+      return TRUE;
+   SetLastError(ERROR_INVALID_HANDLE);
+   return FALSE;
 }
 
 /*
@@ -860,7 +861,7 @@ GdiConvertEnhMetaFile(HENHMETAFILE hmf)
  */
 BOOL
 WINAPI
-GdiDrawStream(HDC dc, ULONG l, VOID *v)
+GdiDrawStream(HDC dc, ULONG l, VOID *v) // See Bug 4784
 {
     UNIMPLEMENTED;
     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -934,15 +935,25 @@ GdiIsPlayMetafileDC(HDC hDC)
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
 BOOL
 WINAPI
 GdiValidateHandle(HGDIOBJ hobj)
 {
-    UNIMPLEMENTED;
-    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-    return 0;
+  PGDI_TABLE_ENTRY Entry = GdiHandleTable + GDI_HANDLE_GET_INDEX(hobj);
+  if ( (Entry->Type & GDI_ENTRY_BASETYPE_MASK) != 0 &&
+       ( (Entry->Type << GDI_ENTRY_UPPER_SHIFT) & GDI_HANDLE_TYPE_MASK ) == 
+                                                                   GDI_HANDLE_GET_TYPE(hobj) )
+  {
+    HANDLE pid = (HANDLE)((ULONG_PTR)Entry->ProcessId & ~0x1);
+    if(pid == NULL || pid == CurrentProcessId)
+    {
+      return TRUE;
+    }
+  }
+  return FALSE;
+
 }
 
 /*
@@ -1528,18 +1539,6 @@ GdiResetDCEMF(HANDLE SpoolFileHandle,
     return 0;
 }
 
-/*
- * @unimplemented
- */
-ULONG WINAPI
-XLATEOBJ_iXlate(XLATEOBJ *XlateObj,
-                ULONG Color)
-{
-    UNIMPLEMENTED;
-    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-    return 0;
-}
-
 /*
  * @unimplemented
  */
@@ -1567,8 +1566,6 @@ GdiPlayEMF(LPWSTR pwszPrinterName,
     return 0;
 }
 
-
-
 /*
  * @unimplemented
  */
@@ -1609,7 +1606,6 @@ GdiGradientFill(
     return NtGdiGradientFill(hdc, pVertex, nVertex, pMesh, nMesh, ulMode);
 }
 
-
 /*
  * @implemented
  */