Move Window and Viewport Ext and Org to Dc_Attr. Tested it with qemu.
authorJames Tabor <james.tabor@reactos.org>
Mon, 6 Aug 2007 05:13:47 +0000 (05:13 +0000)
committerJames Tabor <james.tabor@reactos.org>
Mon, 6 Aug 2007 05:13:47 +0000 (05:13 +0000)
svn path=/trunk/; revision=28184

reactos/subsystems/win32/win32k/include/dc.h
reactos/subsystems/win32/win32k/include/gdifloat.h
reactos/subsystems/win32/win32k/objects/coord.c
reactos/subsystems/win32/win32k/objects/dc.c
reactos/subsystems/win32/win32k/objects/path.c
reactos/subsystems/win32/win32k/objects/region.c

index ae3050e..8c75baa 100644 (file)
@@ -89,15 +89,6 @@ typedef struct _DC
   UNICODE_STRING    DriverName;
   HANDLE  DeviceDriver;
 
-  INT  wndOrgX;          /* Window origin */
-  INT  wndOrgY;
-  INT  wndExtX;          /* Window extent */
-  INT  wndExtY;
-  INT  vportOrgX;        /* Viewport origin */
-  INT  vportOrgY;
-  INT  vportExtX;        /* Viewport extent */
-  INT  vportExtY;
-
   CLIPOBJ *CombinedClip;
 
   XLATEOBJ *XlateBrush;
index c3b5131..1c25d82 100644 (file)
@@ -80,24 +80,24 @@ static __inline void INTERNAL_LPTODP(DC *dc, LPPOINT point)
 
 #define MulDiv( x, y, z ) EngMulDiv( x, y, z )
 
-#define XDPTOLP(dc,x) \
-    (MulDiv(((x)-(dc)->vportOrgX), (dc)->wndExtX, (dc)->vportExtX) + (dc)->wndOrgX)
-#define YDPTOLP(dc,y) \
-    (MulDiv(((y)-(dc)->vportOrgY), (dc)->wndExtY, (dc)->vportExtY) + (dc)->wndOrgY)
-#define XLPTODP(dc,x) \
-    (MulDiv(((x)-(dc)->wndOrgX), (dc)->vportExtX, (dc)->wndExtX) + (dc)->vportOrgX)
-#define YLPTODP(dc,y) \
-    (MulDiv(((y)-(dc)->wndOrgY), (dc)->vportExtY, (dc)->wndExtY) + (dc)->vportOrgY)
+#define XDPTOLP(dc,tx) \
+    (MulDiv(((tx)-(dc)->Dc_Attr.ptlViewportOrg.x), (dc)->Dc_Attr.szlWindowExt.cx, (dc)->Dc_Attr.szlViewportExt.cx) + (dc)->Dc_Attr.ptlWindowOrg.x)
+#define YDPTOLP(dc,ty) \
+    (MulDiv(((ty)-(dc)->Dc_Attr.ptlViewportOrg.y), (dc)->Dc_Attr.szlWindowExt.cy, (dc)->Dc_Attr.szlViewportExt.cy) + (dc)->Dc_Attr.ptlWindowOrg.y)
+#define XLPTODP(dc,tx) \
+    (MulDiv(((tx)-(dc)->Dc_Attr.ptlWindowOrg.x), (dc)->Dc_Attr.szlViewportExt.cx, (dc)->Dc_Attr.szlWindowExt.cx) + (dc)->Dc_Attr.ptlViewportOrg.x)
+#define YLPTODP(dc,ty) \
+    (MulDiv(((ty)-(dc)->Dc_Attr.ptlWindowOrg.y), (dc)->Dc_Attr.szlViewportExt.cy, (dc)->Dc_Attr.szlWindowExt.cy) + (dc)->Dc_Attr.ptlViewportOrg.y)
 
   /* Device <-> logical size conversion */
 
-#define XDSTOLS(dc,x) \
-    MulDiv((x), (dc)->wndExtX, (dc)->vportExtX)
-#define YDSTOLS(dc,y) \
-    MulDiv((y), (dc)->wndExtY, (dc)->vportExtY)
-#define XLSTODS(dc,x) \
-    MulDiv((x), (dc)->vportExtX, (dc)->wndExtX)
-#define YLSTODS(dc,y) \
-    MulDiv((y), (dc)->vportExtY, (dc)->wndExtY)
+#define XDSTOLS(dc,tx) \
+    MulDiv((tx), (dc)->Dc_Attr.szlWindowExt.cx, (dc)->Dc_Attr.szlViewportExt.cx)
+#define YDSTOLS(dc,ty) \
+    MulDiv((ty), (dc)->Dc_Attr.szlWindowExt.cy, (dc)->Dc_Attr.szlViewportExt.cy)
+#define XLSTODS(dc,tx) \
+    MulDiv((tx), (dc)->Dc_Attr.szlViewportExt.cx, (dc)->Dc_Attr.szlWindowExt.cx)
+#define YLSTODS(dc,ty) \
+    MulDiv((ty), (dc)->Dc_Attr.szlViewportExt.cy, (dc)->Dc_Attr.szlWindowExt.cy)
 
 #endif
index 3885473..4fa0c45 100644 (file)
 void FASTCALL
 IntFixIsotropicMapping(PDC dc)
 {
-  ULONG xdim = EngMulDiv(dc->vportExtX, dc->GDIInfo->ulHorzSize, dc->GDIInfo->ulHorzRes) / dc->wndExtX;
-  ULONG ydim = EngMulDiv(dc->vportExtY, dc->GDIInfo->ulVertSize, dc->GDIInfo->ulVertRes) / dc->wndExtY;
+  ULONG xdim = EngMulDiv(dc->Dc_Attr.szlViewportExt.cx, dc->GDIInfo->ulHorzSize, dc->GDIInfo->ulHorzRes) / dc->Dc_Attr.szlWindowExt.cx;
+  ULONG ydim = EngMulDiv(dc->Dc_Attr.szlViewportExt.cy, dc->GDIInfo->ulVertSize, dc->GDIInfo->ulVertRes) / dc->Dc_Attr.szlWindowExt.cy;
 
   if (xdim > ydim)
   {
-    dc->vportExtX = dc->vportExtX * abs(ydim / xdim);
-    if (!dc->vportExtX) dc->vportExtX = 1;
+    dc->Dc_Attr.szlViewportExt.cx = dc->Dc_Attr.szlViewportExt.cx * abs(ydim / xdim);
+    if (!dc->Dc_Attr.szlViewportExt.cx) dc->Dc_Attr.szlViewportExt.cx = 1;
   }
   else
   {
-    dc->vportExtY = dc->vportExtY * abs(xdim / ydim);
-    if (!dc->vportExtY) dc->vportExtY = 1;
+    dc->Dc_Attr.szlViewportExt.cy = dc->Dc_Attr.szlViewportExt.cy * abs(xdim / ydim);
+    if (!dc->Dc_Attr.szlViewportExt.cy) dc->Dc_Attr.szlViewportExt.cy = 1;
   }
 }
 
@@ -550,8 +550,8 @@ NtGdiOffsetViewportOrgEx(HDC hDC,
             ProbeForWrite(UnsafePoint,
                           sizeof(POINT),
                           1);
-            UnsafePoint->x = dc->vportOrgX;
-            UnsafePoint->y = dc->vportOrgY;
+            UnsafePoint->x = dc->Dc_Attr.ptlViewportOrg.x;
+            UnsafePoint->y = dc->Dc_Attr.ptlViewportOrg.y;
         }
         _SEH_HANDLE
         {
@@ -567,8 +567,8 @@ NtGdiOffsetViewportOrgEx(HDC hDC,
          }
     }
 
-  dc->vportOrgX += XOffset;
-  dc->vportOrgY += YOffset;
+  dc->Dc_Attr.ptlViewportOrg.x += XOffset;
+  dc->Dc_Attr.ptlViewportOrg.y += YOffset;
   DC_UpdateXforms(dc);
 
   DC_UnlockDc(dc);
@@ -600,8 +600,8 @@ NtGdiOffsetWindowOrgEx(HDC  hDC,
          ProbeForWrite(Point,
                        sizeof(POINT),
                        1);
-         Point->x = dc->wndOrgX;
-         Point->y = dc->wndOrgY;
+         Point->x = dc->Dc_Attr.ptlWindowOrg.x;
+         Point->y = dc->Dc_Attr.ptlWindowOrg.y;
       }
       _SEH_HANDLE
       {
@@ -617,8 +617,8 @@ NtGdiOffsetWindowOrgEx(HDC  hDC,
       }
     }
 
-  dc->wndOrgX += XOffset;
-  dc->wndOrgY += YOffset;
+  dc->Dc_Attr.ptlWindowOrg.x += XOffset;
+  dc->Dc_Attr.ptlWindowOrg.y += YOffset;
 
   DC_UpdateXforms(dc);
   DC_UnlockDc(dc);
@@ -710,46 +710,46 @@ NtGdiSetMapMode(HDC  hDC,
     switch (MapMode)
     {
       case MM_TEXT:
-        dc->wndExtX = 1;
-        dc->wndExtY = 1;
-        dc->vportExtX = 1;
-        dc->vportExtY = 1;
+        dc->Dc_Attr.szlWindowExt.cx = 1;
+        dc->Dc_Attr.szlWindowExt.cy = 1;
+        dc->Dc_Attr.szlViewportExt.cx = 1;
+        dc->Dc_Attr.szlViewportExt.cy = 1;
         break;
 
       case MM_LOMETRIC:
       case MM_ISOTROPIC:
-        dc->wndExtX = dc->GDIInfo->ulHorzSize * 10;
-        dc->wndExtY = dc->GDIInfo->ulVertSize * 10;
-        dc->vportExtX = dc->GDIInfo->ulHorzRes;
-        dc->vportExtY = -dc->GDIInfo->ulVertRes;
+        dc->Dc_Attr.szlWindowExt.cx = dc->GDIInfo->ulHorzSize * 10;
+        dc->Dc_Attr.szlWindowExt.cy = dc->GDIInfo->ulVertSize * 10;
+        dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes;
+        dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes;
         break;
 
       case MM_HIMETRIC:
-        dc->wndExtX = dc->GDIInfo->ulHorzSize * 100;
-        dc->wndExtY = dc->GDIInfo->ulVertSize * 100;
-        dc->vportExtX = dc->GDIInfo->ulHorzRes;
-        dc->vportExtY = -dc->GDIInfo->ulVertRes;
+        dc->Dc_Attr.szlWindowExt.cx = dc->GDIInfo->ulHorzSize * 100;
+        dc->Dc_Attr.szlWindowExt.cy = dc->GDIInfo->ulVertSize * 100;
+        dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes;
+        dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes;
         break;
 
       case MM_LOENGLISH:
-        dc->wndExtX = EngMulDiv(1000, dc->GDIInfo->ulHorzSize, 254);
-        dc->wndExtY = EngMulDiv(1000, dc->GDIInfo->ulVertSize, 254);
-        dc->vportExtX = dc->GDIInfo->ulHorzRes;
-        dc->vportExtY = -dc->GDIInfo->ulVertRes;
+        dc->Dc_Attr.szlWindowExt.cx = EngMulDiv(1000, dc->GDIInfo->ulHorzSize, 254);
+        dc->Dc_Attr.szlWindowExt.cy = EngMulDiv(1000, dc->GDIInfo->ulVertSize, 254);
+        dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes;
+        dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes;
         break;
 
       case MM_HIENGLISH:
-        dc->wndExtX = EngMulDiv(10000, dc->GDIInfo->ulHorzSize, 254);
-        dc->wndExtY = EngMulDiv(10000, dc->GDIInfo->ulVertSize, 254);
-        dc->vportExtX = dc->GDIInfo->ulHorzRes;
-        dc->vportExtY = -dc->GDIInfo->ulVertRes;
+        dc->Dc_Attr.szlWindowExt.cx = EngMulDiv(10000, dc->GDIInfo->ulHorzSize, 254);
+        dc->Dc_Attr.szlWindowExt.cy = EngMulDiv(10000, dc->GDIInfo->ulVertSize, 254);
+        dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes;
+        dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes;
         break;
 
       case MM_TWIPS:
-        dc->wndExtX = EngMulDiv(14400, dc->GDIInfo->ulHorzSize, 254);
-        dc->wndExtY = EngMulDiv(14400, dc->GDIInfo->ulVertSize, 254);
-        dc->vportExtX = dc->GDIInfo->ulHorzRes;
-        dc->vportExtY = -dc->GDIInfo->ulVertRes;
+        dc->Dc_Attr.szlWindowExt.cx = EngMulDiv(14400, dc->GDIInfo->ulHorzSize, 254);
+        dc->Dc_Attr.szlWindowExt.cy = EngMulDiv(14400, dc->GDIInfo->ulVertSize, 254);
+        dc->Dc_Attr.szlViewportExt.cx = dc->GDIInfo->ulHorzRes;
+        dc->Dc_Attr.szlViewportExt.cy = -dc->GDIInfo->ulVertRes;
         break;
 
       case MM_ANISOTROPIC:
@@ -806,11 +806,11 @@ NtGdiSetViewportExtEx(HDC  hDC,
          ProbeForWrite(Size,
                        sizeof(SIZE),
                        1);
-         Size->cx = dc->vportExtX;
-         Size->cy = dc->vportExtY;
+         Size->cx = dc->Dc_Attr.szlViewportExt.cx;
+         Size->cy = dc->Dc_Attr.szlViewportExt.cy;
 
-                dc->vportExtX = XExtent;
-         dc->vportExtY = YExtent;
+                dc->Dc_Attr.szlViewportExt.cx = XExtent;
+         dc->Dc_Attr.szlViewportExt.cy = YExtent;
 
          if (dc->Dc_Attr.iMapMode == MM_ISOTROPIC)
              IntFixIsotropicMapping(dc);
@@ -861,8 +861,8 @@ NtGdiSetViewportOrgEx(HDC  hDC,
          ProbeForWrite(Point,
                        sizeof(POINT),
                        1);
-         Point->x = dc->vportOrgX;
-         Point->y = dc->vportOrgY;
+         Point->x = dc->Dc_Attr.ptlViewportOrg.x;
+         Point->y = dc->Dc_Attr.ptlViewportOrg.y;
       }
       _SEH_HANDLE
       {
@@ -878,8 +878,8 @@ NtGdiSetViewportOrgEx(HDC  hDC,
       }
     }
 
-  dc->vportOrgX = X;
-  dc->vportOrgY = Y;
+  dc->Dc_Attr.ptlViewportOrg.x = X;
+  dc->Dc_Attr.ptlViewportOrg.y = Y;
 
   DC_UpdateXforms(dc);
   DC_UnlockDc(dc);
@@ -924,8 +924,8 @@ NtGdiSetWindowExtEx(HDC  hDC,
          ProbeForWrite(Size,
                        sizeof(SIZE),
                        1);
-         Size->cx = dc->wndExtX;
-         Size->cy = dc->wndExtY;
+         Size->cx = dc->Dc_Attr.szlWindowExt.cx;
+         Size->cy = dc->Dc_Attr.szlWindowExt.cy;
       }
       _SEH_HANDLE
       {
@@ -941,8 +941,8 @@ NtGdiSetWindowExtEx(HDC  hDC,
       }
     }
 
-  dc->wndExtX = XExtent;
-  dc->wndExtY = YExtent;
+  dc->Dc_Attr.szlWindowExt.cx = XExtent;
+  dc->Dc_Attr.szlWindowExt.cy = YExtent;
 
   DC_UpdateXforms(dc);
   DC_UnlockDc(dc);
@@ -975,8 +975,8 @@ NtGdiSetWindowOrgEx(HDC  hDC,
          ProbeForWrite(Point,
                        sizeof(POINT),
                        1);
-         Point->x = dc->wndOrgX;
-         Point->y = dc->wndOrgY;
+         Point->x = dc->Dc_Attr.ptlWindowOrg.x;
+         Point->y = dc->Dc_Attr.ptlWindowOrg.y;
       }
       _SEH_HANDLE
       {
@@ -992,8 +992,8 @@ NtGdiSetWindowOrgEx(HDC  hDC,
       }
     }
 
-  dc->wndOrgX = X;
-  dc->wndOrgY = Y;
+  dc->Dc_Attr.ptlWindowOrg.x = X;
+  dc->Dc_Attr.ptlWindowOrg.y = Y;
 
   DC_UpdateXforms(dc);
   DC_UnlockDc(dc);
index 3c631b3..da88607 100644 (file)
@@ -216,14 +216,14 @@ NtGdiCreateCompatibleDC(HDC hDC)
 
   /* DriverName is copied in the AllocDC routine  */
   NewDC->DeviceDriver = OrigDC->DeviceDriver;
-  NewDC->wndOrgX = OrigDC->wndOrgX;
-  NewDC->wndOrgY = OrigDC->wndOrgY;
-  NewDC->wndExtX = OrigDC->wndExtX;
-  NewDC->wndExtY = OrigDC->wndExtY;
-  NewDC->vportOrgX = OrigDC->vportOrgX;
-  NewDC->vportOrgY = OrigDC->vportOrgY;
-  NewDC->vportExtX = OrigDC->vportExtX;
-  NewDC->vportExtY = OrigDC->vportExtY;
+  NewDC->Dc_Attr.ptlWindowOrg.x = OrigDC->Dc_Attr.ptlWindowOrg.x;
+  NewDC->Dc_Attr.ptlWindowOrg.y = OrigDC->Dc_Attr.ptlWindowOrg.y;
+  NewDC->Dc_Attr.szlWindowExt.cx = OrigDC->Dc_Attr.szlWindowExt.cx;
+  NewDC->Dc_Attr.szlWindowExt.cy = OrigDC->Dc_Attr.szlWindowExt.cy;
+  NewDC->Dc_Attr.ptlViewportOrg.x = OrigDC->Dc_Attr.ptlViewportOrg.x;
+  NewDC->Dc_Attr.ptlViewportOrg.y = OrigDC->Dc_Attr.ptlViewportOrg.y;
+  NewDC->Dc_Attr.szlViewportExt.cx = OrigDC->Dc_Attr.szlViewportExt.cx;
+  NewDC->Dc_Attr.szlViewportExt.cy = OrigDC->Dc_Attr.szlViewportExt.cy;
 
   /* Create default bitmap */
   if (!(hBitmap = NtGdiCreateBitmap( 1, 1, 1, NewDC->w.bitsPerPixel, NULL )))
@@ -1294,14 +1294,14 @@ IntGdiGetDCState(HDC  hDC)
   newdc->w.xformWorld2Vport = dc->w.xformWorld2Vport;
   newdc->w.xformVport2World = dc->w.xformVport2World;
   newdc->w.vport2WorldValid = dc->w.vport2WorldValid;
-  newdc->wndOrgX            = dc->wndOrgX;
-  newdc->wndOrgY            = dc->wndOrgY;
-  newdc->wndExtX            = dc->wndExtX;
-  newdc->wndExtY            = dc->wndExtY;
-  newdc->vportOrgX          = dc->vportOrgX;
-  newdc->vportOrgY          = dc->vportOrgY;
-  newdc->vportExtX          = dc->vportExtX;
-  newdc->vportExtY          = dc->vportExtY;
+  newdc->Dc_Attr.ptlWindowOrg.x            = dc->Dc_Attr.ptlWindowOrg.x;
+  newdc->Dc_Attr.ptlWindowOrg.y            = dc->Dc_Attr.ptlWindowOrg.y;
+  newdc->Dc_Attr.szlWindowExt.cx            = dc->Dc_Attr.szlWindowExt.cx;
+  newdc->Dc_Attr.szlWindowExt.cy            = dc->Dc_Attr.szlWindowExt.cy;
+  newdc->Dc_Attr.ptlViewportOrg.x          = dc->Dc_Attr.ptlViewportOrg.x;
+  newdc->Dc_Attr.ptlViewportOrg.y          = dc->Dc_Attr.ptlViewportOrg.y;
+  newdc->Dc_Attr.szlViewportExt.cx          = dc->Dc_Attr.szlViewportExt.cx;
+  newdc->Dc_Attr.szlViewportExt.cy          = dc->Dc_Attr.szlViewportExt.cy;
 
   newdc->hSelf = hnewdc;
   newdc->saveLevel = 0;
@@ -1379,14 +1379,14 @@ IntGdiSetDCState ( HDC hDC, HDC hDCSave )
         dc->w.xformVport2World = dcs->w.xformVport2World;
         dc->w.vport2WorldValid = dcs->w.vport2WorldValid;
 
-        dc->wndOrgX            = dcs->wndOrgX;
-        dc->wndOrgY            = dcs->wndOrgY;
-        dc->wndExtX            = dcs->wndExtX;
-        dc->wndExtY            = dcs->wndExtY;
-        dc->vportOrgX          = dcs->vportOrgX;
-        dc->vportOrgY          = dcs->vportOrgY;
-        dc->vportExtX          = dcs->vportExtX;
-        dc->vportExtY          = dcs->vportExtY;
+        dc->Dc_Attr.ptlWindowOrg.x            = dcs->Dc_Attr.ptlWindowOrg.x;
+        dc->Dc_Attr.ptlWindowOrg.y            = dcs->Dc_Attr.ptlWindowOrg.y;
+        dc->Dc_Attr.szlWindowExt.cx            = dcs->Dc_Attr.szlWindowExt.cx;
+        dc->Dc_Attr.szlWindowExt.cy            = dcs->Dc_Attr.szlWindowExt.cy;
+        dc->Dc_Attr.ptlViewportOrg.x          = dcs->Dc_Attr.ptlViewportOrg.x;
+        dc->Dc_Attr.ptlViewportOrg.y          = dcs->Dc_Attr.ptlViewportOrg.y;
+        dc->Dc_Attr.szlViewportExt.cx          = dcs->Dc_Attr.szlViewportExt.cx;
+        dc->Dc_Attr.szlViewportExt.cy          = dcs->Dc_Attr.szlViewportExt.cy;
         dc->PalIndexed         = dcs->PalIndexed;
 
         if (!(dc->w.flags & DC_MEMORY))
@@ -1778,10 +1778,10 @@ DC_GET_VAL( INT, NtGdiGetROP2, Dc_Attr.jROP2 )
 DC_GET_VAL( INT, NtGdiGetStretchBltMode, Dc_Attr.jStretchBltMode )
 DC_GET_VAL( UINT, NtGdiGetTextAlign, Dc_Attr.lTextAlign )
 DC_GET_VAL( COLORREF, NtGdiGetTextColor, Dc_Attr.crForegroundClr )
-DC_GET_VAL_EX( GetViewportExtEx, vportExtX, vportExtY, SIZE, cx, cy )
-DC_GET_VAL_EX( GetViewportOrgEx, vportOrgX, vportOrgY, POINT, x, y )
-DC_GET_VAL_EX( GetWindowExtEx, wndExtX, wndExtY, SIZE, cx, cy )
-DC_GET_VAL_EX( GetWindowOrgEx, wndOrgX, wndOrgY, POINT, x, y )
+DC_GET_VAL_EX( GetViewportExtEx, Dc_Attr.szlViewportExt.cx, Dc_Attr.szlViewportExt.cy, SIZE, cx, cy )
+DC_GET_VAL_EX( GetViewportOrgEx, Dc_Attr.ptlViewportOrg.x, Dc_Attr.ptlViewportOrg.y, POINT, x, y )
+DC_GET_VAL_EX( GetWindowExtEx, Dc_Attr.szlWindowExt.cx, Dc_Attr.szlWindowExt.cy, SIZE, cx, cy )
+DC_GET_VAL_EX( GetWindowOrgEx, Dc_Attr.ptlWindowOrg.x, Dc_Attr.ptlWindowOrg.y, POINT, x, y )
 
 BOOL
 APIENTRY
@@ -2205,10 +2205,12 @@ DC_AllocDC(PUNICODE_STRING Driver)
   NewDC->Dc_Attr.iMapMode = MM_TEXT;
 //  DC_Attr->iMapMode = MM_TEXT;
 
-  NewDC->wndExtX = 1.0f;
-  NewDC->wndExtY = 1.0f;
-  NewDC->vportExtX = 1.0f;
-  NewDC->vportExtY = 1.0f;
+
+//// HELP! FLOAT to INT !!!!!!!!!
+  NewDC->Dc_Attr.szlWindowExt.cx = 1.0f;
+  NewDC->Dc_Attr.szlWindowExt.cy = 1.0f;
+  NewDC->Dc_Attr.szlViewportExt.cx = 1.0f;
+  NewDC->Dc_Attr.szlViewportExt.cy = 1.0f;
 
   NewDC->Dc_Attr.crForegroundClr = 0;
 //  NewDC->pDc_Attr->ulForegroundClr = 0; // Already Zero
@@ -2313,14 +2315,14 @@ DC_UpdateXforms(PDC  dc)
   FLOAT  scaleX, scaleY;
 
   /* Construct a transformation to do the window-to-viewport conversion */
-  scaleX = (dc->wndExtX ? (FLOAT)dc->vportExtX / (FLOAT)dc->wndExtX : 0.0f);
-  scaleY = (dc->wndExtY ? (FLOAT)dc->vportExtY / (FLOAT)dc->wndExtY : 0.0f);
+  scaleX = (dc->Dc_Attr.szlWindowExt.cx ? (FLOAT)dc->Dc_Attr.szlViewportExt.cx / (FLOAT)dc->Dc_Attr.szlWindowExt.cx : 0.0f);
+  scaleY = (dc->Dc_Attr.szlWindowExt.cy ? (FLOAT)dc->Dc_Attr.szlViewportExt.cy / (FLOAT)dc->Dc_Attr.szlWindowExt.cy : 0.0f);
   xformWnd2Vport.eM11 = scaleX;
   xformWnd2Vport.eM12 = 0.0;
   xformWnd2Vport.eM21 = 0.0;
   xformWnd2Vport.eM22 = scaleY;
-  xformWnd2Vport.eDx  = (FLOAT)dc->vportOrgX - scaleX * (FLOAT)dc->wndOrgX;
-  xformWnd2Vport.eDy  = (FLOAT)dc->vportOrgY - scaleY * (FLOAT)dc->wndOrgY;
+  xformWnd2Vport.eDx  = (FLOAT)dc->Dc_Attr.ptlViewportOrg.x - scaleX * (FLOAT)dc->Dc_Attr.ptlWindowOrg.x;
+  xformWnd2Vport.eDy  = (FLOAT)dc->Dc_Attr.ptlViewportOrg.y - scaleY * (FLOAT)dc->Dc_Attr.ptlWindowOrg.y;
 
   /* Combine with the world transformation */
   IntGdiCombineTransform(&dc->w.xformWorld2Vport, &dc->w.xformWorld2Wnd, &xformWnd2Vport);
index 6211ca9..3b7a069 100644 (file)
@@ -1487,10 +1487,10 @@ BOOL FASTCALL PATH_StrokePath(DC *dc, GdiPath *pPath)
 
     /* Set MM_TEXT */
     dc->Dc_Attr.iMapMode = MM_TEXT;
-    dc->vportOrgX = 0;
-    dc->vportOrgY = 0;
-    dc->wndOrgX = 0;
-    dc->wndOrgY = 0;
+    dc->Dc_Attr.ptlViewportOrg.x = 0;
+    dc->Dc_Attr.ptlViewportOrg.y = 0;
+    dc->Dc_Attr.ptlWindowOrg.x = 0;
+    dc->Dc_Attr.ptlWindowOrg.y = 0;
     graphicsMode = dc->Dc_Attr.iGraphicsMode;
     dc->Dc_Attr.iGraphicsMode = GM_ADVANCED;
     IntGdiModifyWorldTransform(dc, &xform, MWT_IDENTITY);
@@ -1600,15 +1600,15 @@ end:
 
     /* Restore the old mapping mode */
     dc->Dc_Attr.iMapMode =  mapMode;
-    dc->wndExtX = szWindowExt.cx;
-    dc->wndExtY = szWindowExt.cy;
-    dc->wndOrgX = ptWindowOrg.x;
-    dc->wndOrgY = ptWindowOrg.y;
+    dc->Dc_Attr.szlWindowExt.cx = szWindowExt.cx;
+    dc->Dc_Attr.szlWindowExt.cy = szWindowExt.cy;
+    dc->Dc_Attr.ptlWindowOrg.x = ptWindowOrg.x;
+    dc->Dc_Attr.ptlWindowOrg.y = ptWindowOrg.y;
     
-    dc->vportExtX = szViewportExt.cx;
-    dc->vportExtY = szViewportExt.cy;
-    dc->vportOrgX = ptViewportOrg.x;
-    dc->vportOrgY = ptViewportOrg.y;
+    dc->Dc_Attr.szlViewportExt.cx = szViewportExt.cx;
+    dc->Dc_Attr.szlViewportExt.cx = szViewportExt.cy;
+    dc->Dc_Attr.ptlViewportOrg.x = ptViewportOrg.x;
+    dc->Dc_Attr.ptlViewportOrg.y = ptViewportOrg.y;
 
     /* Restore the world transform */
     dc->w.xformWorld2Wnd = xform;
index 7379cc6..d94857b 100644 (file)
@@ -1860,7 +1860,8 @@ BOOL FASTCALL REGION_LPTODP(HDC hdc, HRGN hDest, HRGN hSrc)
     if(NtGdiCombineRgn(hDest, hSrc, 0, RGN_COPY) == ERROR)
       goto done;
 
-    NtGdiOffsetRgn(hDest, dc->vportOrgX - dc->wndOrgX, dc->vportOrgY - dc->wndOrgY);
+    NtGdiOffsetRgn(hDest, dc->Dc_Attr.ptlViewportOrg.x - dc->Dc_Attr.ptlWindowOrg.x,
+                                       dc->Dc_Attr.ptlViewportOrg.y - dc->Dc_Attr.ptlWindowOrg.y);
     ret = TRUE;
     goto done;
   }