Another coordinate transformation change. Fixes final problem with bug 1201.
authorGé van Geldorp <ge@gse.nl>
Fri, 30 Dec 2005 19:10:43 +0000 (19:10 +0000)
committerGé van Geldorp <ge@gse.nl>
Fri, 30 Dec 2005 19:10:43 +0000 (19:10 +0000)
svn path=/trunk/; revision=20463

reactos/subsys/win32k/objects/text.c

index 89589ea..13fb957 100644 (file)
@@ -1488,17 +1488,6 @@ NtGdiExtTextOut(
 
    // TODO: Write test-cases to exactly match real Windows in different
    // bad parameters (e.g. does Windows check the DC or the RECT first?).
 
    // TODO: Write test-cases to exactly match real Windows in different
    // bad parameters (e.g. does Windows check the DC or the RECT first?).
-   if (lprc && (fuOptions & (ETO_OPAQUE | ETO_CLIPPED)))
-   {
-      // At least one of the two flags were specified. Copy lprc. Once.
-      Status = MmCopyFromCaller(&SpecifiedDestRect, lprc, sizeof(RECT));
-      if (!NT_SUCCESS(Status))
-      {
-         SetLastWin32Error(ERROR_INVALID_PARAMETER);
-         return FALSE;
-      }
-   }
-
    dc = DC_LockDc(hDC);
    if (!dc)
    {
    dc = DC_LockDc(hDC);
    if (!dc)
    {
@@ -1512,6 +1501,18 @@ NtGdiExtTextOut(
       return TRUE;
    }
 
       return TRUE;
    }
 
+   if (lprc && (fuOptions & (ETO_OPAQUE | ETO_CLIPPED)))
+   {
+      // At least one of the two flags were specified. Copy lprc. Once.
+      Status = MmCopyFromCaller(&SpecifiedDestRect, lprc, sizeof(RECT));
+      if (!NT_SUCCESS(Status))
+      {
+         SetLastWin32Error(ERROR_INVALID_PARAMETER);
+         return FALSE;
+      }
+      IntLPtoDP(dc, (POINT *) &SpecifiedDestRect, 2);
+   }
+
    if (NULL != UnsafeDx && Count > 0)
    {
       Dx = ExAllocatePoolWithTag(PagedPool, Count * sizeof(INT), TAG_GDITEXT);
    if (NULL != UnsafeDx && Count > 0)
    {
       Dx = ExAllocatePoolWithTag(PagedPool, Count * sizeof(INT), TAG_GDITEXT);