I would like to know if my implementation of GetLayout is clean.
I did not found any information about GetLayout16, I would like to know if it is correct too.


Thanks
Rémi
diff -u dlls/gdi/dc.c dlls/gdi/dc.c
--- dlls/gdi/dc.c	2004-11-21 18:34:03.000000000 +0100
+++ dlls/gdi/dc.c	2004-11-21 19:00:32.787454960 +0100
@@ -1876,9 +1876,15 @@
  */
 DWORD WINAPI GetLayout(HDC hdc)
 {
-    FIXME("(%p): stub\n", hdc);
-    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-    return 0;
+    DWORD layout = 0;
+    DC * dc = DC_GetDCPtr( hdc );
+    if (dc)
+    {
+        layout = dc->flags;
+        GDI_ReleaseObj( hdc );
+        return layout;
+    }
+    return GDI_ERROR;
 }
 
 /***********************************************************************
diff -u dlls/gdi/gdi16.c dlls/gdi/gdi16.c
--- dlls/gdi/gdi16.c	2004-08-31 02:02:03.000000000 +0200
+++ dlls/gdi/gdi16.c	2004-11-20 21:41:25.000000000 +0100
@@ -2824,3 +2824,13 @@
 {
     return SetLayout( HDC_32(hdc), layout );
 }
+
+/***********************************************************************
+ *           SetLayout   (GDI.1001)
+ *
+ * Gets left->right or right->left text layout flags of a dc.
+ */
+BOOL16 WINAPI GetLayout16( HDC16 hdc )
+{
+    return GetLayout( HDC_32(hdc) );
+}
diff -u dlls/gdi/gdi.exe.spec dlls/gdi/gdi.exe.spec
--- dlls/gdi/gdi.exe.spec	2003-09-26 06:32:20.000000000 +0200
+++ dlls/gdi/gdi.exe.spec	2004-11-20 21:42:27.000000000 +0100
@@ -413,4 +413,4 @@
 823 stub ICMTranslateRGBs
 824 stub ICMCheckColorsInGamut
 1000 pascal -ret16 SetLayout(word long) SetLayout16
-1001 stub GetLayout
+1001 pascal -ret16 GetLayout(word) GetLayout16
diff -u dlls/gdi/gdi.exe.spec.c dlls/gdi/gdi.exe.spec.c
--- dlls/gdi/gdi.exe.spec.c	2004-11-20 21:43:36.000000000 +0100
+++ dlls/gdi/gdi.exe.spec.c	2004-11-20 21:45:23.000000000 +0100
@@ -154,7 +154,6 @@
 static void __wine_stub_ICMTranslateRGB(void) { __wine_unimplemented("ICMTranslateRGB"); }
 static void __wine_stub_ICMTranslateRGBs(void) { __wine_unimplemented("ICMTranslateRGBs"); }
 static void __wine_stub_ICMCheckColorsInGamut(void) { __wine_unimplemented("ICMCheckColorsInGamut"); }
-static void __wine_stub_GetLayout(void) { __wine_unimplemented("GetLayout"); }
 typedef unsigned int (__stdcall *proc_p_long_llll_t)( unsigned int, unsigned int, unsigned int, unsigned int );
 static unsigned int __stdcall __wine_gdi_exe_CallFrom16_p_long_llll( proc_p_long_llll_t proc, unsigned char *args )
 {

Reply via email to