[1/3] include: Synchronize DEVMODE layout with PSDK

Dmitry Timoshkov dmitry at codeweavers.com
Thu Nov 1 01:22:11 CDT 2007


Hello,

Changelog:
    [1/3] include: Synchronize DEVMODE layout with PSDK.
---
 dlls/comdlg32/printdlg.c     |   26 +++++++++++++-------------
 dlls/comdlg32/printdlg16.c   |    4 ++--
 dlls/wineps.drv/driver.c     |   22 +++++++++++-----------
 dlls/wineps.drv/init.c       |   20 +++++++++++---------
 dlls/wineps.drv/ps.c         |    6 +++---
 dlls/winspool.drv/info.c     |   10 +++++-----
 include/wingdi.h             |   38 ++++++++++++++++++++++++++------------
 programs/cmdlgtst/cmdlgtst.c |   10 +++++-----
 8 files changed, 76 insertions(+), 60 deletions(-)

diff --git a/dlls/comdlg32/printdlg.c b/dlls/comdlg32/printdlg.c
index e6c22cd..39ac750 100644
--- a/dlls/comdlg32/printdlg.c
+++ b/dlls/comdlg32/printdlg.c
@@ -354,7 +354,7 @@ static BOOL PRINTDLG_UpdatePrintDlgA(HWND hDlg,
 	        lpdm->dmCollate =
 		  (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED);
 	    if (lpdm->dmFields & DM_COPIES)
-	        lpdm->dmCopies = GetDlgItemInt(hDlg, edt3, NULL, FALSE);
+	        lpdm->u1.s1.dmCopies = GetDlgItemInt(hDlg, edt3, NULL, FALSE);
 	} else {
 	    if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED)
 	        lppd->Flags |= PD_COLLATE;
@@ -437,7 +437,7 @@ static BOOL PRINTDLG_UpdatePrintDlgW(HWND hDlg,
 	        lpdm->dmCollate =
 		  (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED);
 	    if (lpdm->dmFields & DM_COPIES)
-	        lpdm->dmCopies = GetDlgItemInt(hDlg, edt3, NULL, FALSE);
+	        lpdm->u1.s1.dmCopies = GetDlgItemInt(hDlg, edt3, NULL, FALSE);
 	} else {
 	    if (IsDlgButtonChecked(hDlg, chx2) == BST_CHECKED)
 	        lppd->Flags |= PD_COLLATE;
@@ -604,7 +604,7 @@ static BOOL PRINTDLG_SetUpPaperComboBoxA(HWND hDlg,
             if (nIDComboBox == cmb2)
                 dm->u1.s1.dmPaperSize = oldWord;
             else
-                dm->dmDefaultSource = oldWord;
+                dm->u1.s1.dmDefaultSource = oldWord;
         }
     }
     else {
@@ -616,7 +616,7 @@ static BOOL PRINTDLG_SetUpPaperComboBoxA(HWND hDlg,
             if (nIDComboBox == cmb2)
                 oldWord = dm->u1.s1.dmPaperSize;
             else
-                oldWord = dm->dmDefaultSource;
+                oldWord = dm->u1.s1.dmDefaultSource;
         }
     }
 
@@ -714,7 +714,7 @@ static BOOL PRINTDLG_SetUpPaperComboBoxW(HWND hDlg,
             if (nIDComboBox == cmb2)
                 dm->u1.s1.dmPaperSize = oldWord;
             else
-                dm->dmDefaultSource = oldWord;
+                dm->u1.s1.dmDefaultSource = oldWord;
         }
     }
     else {
@@ -726,7 +726,7 @@ static BOOL PRINTDLG_SetUpPaperComboBoxW(HWND hDlg,
             if (nIDComboBox == cmb2)
                 oldWord = dm->u1.s1.dmPaperSize;
             else
-                oldWord = dm->dmDefaultSource;
+                oldWord = dm->u1.s1.dmDefaultSource;
         }
     }
 
@@ -976,7 +976,7 @@ BOOL PRINTDLG_ChangePrinterA(HWND hDlg, char *name,
 	  if (lppd->hDevMode == 0)
 	      copies = lppd->nCopies;
 	  else
-	      copies = lpdm->dmCopies;
+	      copies = lpdm->u1.s1.dmCopies;
 	  if(copies == 0) copies = 1;
 	  else if(copies < 0) copies = MAX_COPIES;
 	  SetDlgItemInt(hDlg, edt3, copies, FALSE);
@@ -1125,7 +1125,7 @@ static BOOL PRINTDLG_ChangePrinterW(HWND hDlg, WCHAR *name,
 	  if (lppd->hDevMode == 0)
 	      copies = lppd->nCopies;
 	  else
-	      copies = lpdm->dmCopies;
+	      copies = lpdm->u1.s1.dmCopies;
 	  if(copies == 0) copies = 1;
 	  else if(copies < 0) copies = MAX_COPIES;
 	  SetDlgItemInt(hDlg, edt3, copies, FALSE);
@@ -1564,7 +1564,7 @@ LRESULT PRINTDLG_WMCommandA(HWND hDlg, WPARAM wParam,
       {
 	  DWORD Sel = SendDlgItemMessageA(hDlg, cmb3, CB_GETCURSEL, 0, 0);
 	  if(Sel != CB_ERR)
-	      lpdm->dmDefaultSource = SendDlgItemMessageA(hDlg, cmb3,
+	      lpdm->u1.s1.dmDefaultSource = SendDlgItemMessageA(hDlg, cmb3,
 							  CB_GETITEMDATA, Sel,
 							  0);
       }
@@ -1728,7 +1728,7 @@ static LRESULT PRINTDLG_WMCommandW(HWND hDlg, WPARAM wParam,
       {
 	  DWORD Sel = SendDlgItemMessageW(hDlg, cmb3, CB_GETCURSEL, 0, 0);
 	  if(Sel != CB_ERR)
-	      lpdm->dmDefaultSource = SendDlgItemMessageW(hDlg, cmb3,
+	      lpdm->u1.s1.dmDefaultSource = SendDlgItemMessageW(hDlg, cmb3,
 							  CB_GETITEMDATA, Sel,
 							  0);
       }
@@ -2531,7 +2531,7 @@ PRINTDLG_PS_UpdateDlgStructA(HWND hDlg, PageSetupDataA *pda) {
     paperword = SendDlgItemMessageA(hDlg,cmb1,CB_GETITEMDATA,
         SendDlgItemMessageA(hDlg, cmb1, CB_GETCURSEL, 0, 0), 0);
     if (paperword != CB_ERR)
-        dm->dmDefaultSource = paperword;
+        dm->u1.s1.dmDefaultSource = paperword;
     else
         FIXME("could not get dialog text for papersize cmbbox?\n");
 
@@ -2836,7 +2836,7 @@ PRINTDLG_PS_WMCommandA(
     case cmb3:
 	if(msg == CBN_SELCHANGE){
 	    DEVMODEA *dm = GlobalLock(pda->pdlg.hDevMode);
-	    dm->dmDefaultSource = SendDlgItemMessageA(hDlg, cmb3,CB_GETITEMDATA,
+	    dm->u1.s1.dmDefaultSource = SendDlgItemMessageA(hDlg, cmb3,CB_GETITEMDATA,
                 SendDlgItemMessageA(hDlg, cmb3, CB_GETCURSEL, 0, 0), 0);
 	    GlobalUnlock(pda->pdlg.hDevMode);
 	}
@@ -3228,7 +3228,7 @@ PRINTDLG_PageDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
         PRINTDLG_PS_ChangePrinterA(hDlg, pda);
 	dm = GlobalLock(pda->pdlg.hDevMode);
 	if(dm){
-	    dm->dmDefaultSource = 15; /*FIXME: Automatic select. Does it always 15 at start? */
+	    dm->u1.s1.dmDefaultSource = 15; /*FIXME: Automatic select. Does it always 15 at start? */
 	    PRINTDLG_PaperSizeA(&(pda->pdlg), dm->u1.s1.dmPaperSize, &pda->curdlg.ptPaperSize);
             GlobalUnlock(pda->pdlg.hDevMode);
 	    pda->curdlg.ptPaperSize.x = _c_10mm2size(pda->dlga, pda->curdlg.ptPaperSize.x);
diff --git a/dlls/comdlg32/printdlg16.c b/dlls/comdlg32/printdlg16.c
index a4d2244..b23ef0b 100644
--- a/dlls/comdlg32/printdlg16.c
+++ b/dlls/comdlg32/printdlg16.c
@@ -148,13 +148,13 @@ static LRESULT PRINTDLG_WMInitDialog16(HWND hDlg, WPARAM wParam, PRINT_PTRA16* p
 
 	    pdm = GlobalLock16(lppd->hDevMode);
 	    if(pdm) {
-		switch (pdm->dmPrintQuality) {
+		switch (pdm->u1.s1.dmPrintQuality) {
 		case DMRES_HIGH		: strcpy(buf,"High");break;
 		case DMRES_MEDIUM	: strcpy(buf,"Medium");break;
 		case DMRES_LOW		: strcpy(buf,"Low");break;
 		case DMRES_DRAFT	: strcpy(buf,"Draft");break;
 		case 0			: strcpy(buf,"Default");break;
-		default			: sprintf(buf,"%ddpi",pdm->dmPrintQuality);break;
+		default			: sprintf(buf,"%ddpi",pdm->u1.s1.dmPrintQuality);break;
 		}
 	        GlobalUnlock16(lppd->hDevMode);
 	    } else
diff --git a/dlls/wineps.drv/driver.c b/dlls/wineps.drv/driver.c
index 4981b14..b4f98fb 100644
--- a/dlls/wineps.drv/driver.c
+++ b/dlls/wineps.drv/driver.c
@@ -104,35 +104,35 @@ void PSDRV_MergeDevmodes(PSDRV_DEVMODEA *dm1, PSDRV_DEVMODEA *dm2,
     }
 
     if(dm2->dmPublic.dmFields & DM_SCALE) {
-        dm1->dmPublic.dmScale = dm2->dmPublic.dmScale;
-	TRACE("Changing Scale to %d\n", dm2->dmPublic.dmScale);
+        dm1->dmPublic.u1.s1.dmScale = dm2->dmPublic.u1.s1.dmScale;
+	TRACE("Changing Scale to %d\n", dm2->dmPublic.u1.s1.dmScale);
     }
 
     if(dm2->dmPublic.dmFields & DM_COPIES) {
-        dm1->dmPublic.dmCopies = dm2->dmPublic.dmCopies;
-	TRACE("Changing Copies to %d\n", dm2->dmPublic.dmCopies);
+        dm1->dmPublic.u1.s1.dmCopies = dm2->dmPublic.u1.s1.dmCopies;
+	TRACE("Changing Copies to %d\n", dm2->dmPublic.u1.s1.dmCopies);
     }
 
     if(dm2->dmPublic.dmFields & DM_DEFAULTSOURCE) {
         INPUTSLOT *slot;
 
 	for(slot = pi->ppd->InputSlots; slot; slot = slot->next) {
-	    if(slot->WinBin == dm2->dmPublic.dmDefaultSource)
+	    if(slot->WinBin == dm2->dmPublic.u1.s1.dmDefaultSource)
 	        break;
 	}
 	if(slot) {
-	    dm1->dmPublic.dmDefaultSource = dm2->dmPublic.dmDefaultSource;
+	    dm1->dmPublic.u1.s1.dmDefaultSource = dm2->dmPublic.u1.s1.dmDefaultSource;
 	    TRACE("Changing bin to '%s'\n", slot->FullName);
 	} else {
 	  TRACE("Trying to change to unsupported bin %d\n",
-		dm2->dmPublic.dmDefaultSource);
+		dm2->dmPublic.u1.s1.dmDefaultSource);
 	}
     }
 
    if (dm2->dmPublic.dmFields & DM_DEFAULTSOURCE )
-       dm1->dmPublic.dmDefaultSource = dm2->dmPublic.dmDefaultSource;
+       dm1->dmPublic.u1.s1.dmDefaultSource = dm2->dmPublic.u1.s1.dmDefaultSource;
    if (dm2->dmPublic.dmFields & DM_PRINTQUALITY )
-       dm1->dmPublic.dmPrintQuality = dm2->dmPublic.dmPrintQuality;
+       dm1->dmPublic.u1.s1.dmPrintQuality = dm2->dmPublic.u1.s1.dmPrintQuality;
    if (dm2->dmPublic.dmFields & DM_COLOR )
        dm1->dmPublic.dmColor = dm2->dmPublic.dmColor;
    if (dm2->dmPublic.dmFields & DM_DUPLEX && pi->ppd->DefaultDuplex && pi->ppd->DefaultDuplex->WinDuplex != 0)
@@ -152,11 +152,11 @@ void PSDRV_MergeDevmodes(PSDRV_DEVMODEA *dm1, PSDRV_DEVMODEA *dm2,
    if (dm2->dmPublic.dmFields & DM_PELSHEIGHT )
        dm1->dmPublic.dmPelsHeight = dm2->dmPublic.dmPelsHeight;
    if (dm2->dmPublic.dmFields & DM_DISPLAYFLAGS )
-       dm1->dmPublic.dmDisplayFlags = dm2->dmPublic.dmDisplayFlags;
+       dm1->dmPublic.u2.dmDisplayFlags = dm2->dmPublic.u2.dmDisplayFlags;
    if (dm2->dmPublic.dmFields & DM_DISPLAYFREQUENCY )
        dm1->dmPublic.dmDisplayFrequency = dm2->dmPublic.dmDisplayFrequency;
    if (dm2->dmPublic.dmFields & DM_POSITION )
-       dm1->dmPublic.u1.dmPosition = dm2->dmPublic.u1.dmPosition;
+       dm1->dmPublic.u1.s2.dmPosition = dm2->dmPublic.u1.s2.dmPosition;
    if (dm2->dmPublic.dmFields & DM_LOGPIXELS )
        dm1->dmPublic.dmLogPixels = dm2->dmPublic.dmLogPixels;
    if (dm2->dmPublic.dmFields & DM_ICMMETHOD )
diff --git a/dlls/wineps.drv/init.c b/dlls/wineps.drv/init.c
index 0c4f539..0024640 100644
--- a/dlls/wineps.drv/init.c
+++ b/dlls/wineps.drv/init.c
@@ -65,13 +65,13 @@ static const PSDRV_DEVMODEA DefaultDevmode =
 /* dmOrientation */	DMORIENT_PORTRAIT,
 /* dmPaperSize */	DMPAPER_LETTER,
 /* dmPaperLength */	2794,
-/* dmPaperWidth */      2159
-     }
-   },
+/* dmPaperWidth */      2159,
 /* dmScale */		100, /* ?? */
 /* dmCopies */		1,
 /* dmDefaultSource */	DMBIN_AUTO,
-/* dmPrintQuality */	0,
+/* dmPrintQuality */	0
+     }
+   },
 /* dmColor */		DMCOLOR_COLOR,
 /* dmDuplex */		DMDUP_SIMPLEX,
 /* dmYResolution */	0,
@@ -82,7 +82,9 @@ static const PSDRV_DEVMODEA DefaultDevmode =
 /* dmBitsPerPel */	0,
 /* dmPelsWidth */	0,
 /* dmPelsHeight */	0,
-/* dmDisplayFlags */	0,
+   { /* u2 */
+/* dmDisplayFlags */	0
+   },
 /* dmDisplayFrequency */ 0,
 /* dmICMMethod */       0,
 /* dmICMIntent */       0,
@@ -423,10 +425,10 @@ INT PSDRV_GetDeviceCaps( PSDRV_PDEVICE *physDev, INT cap )
         return DT_RASPRINTER;
     case HORZSIZE:
         return MulDiv(physDev->horzSize, 100,
-		      physDev->Devmode->dmPublic.dmScale);
+		      physDev->Devmode->dmPublic.u1.s1.dmScale);
     case VERTSIZE:
         return MulDiv(physDev->vertSize, 100,
-		      physDev->Devmode->dmPublic.dmScale);
+		      physDev->Devmode->dmPublic.u1.s1.dmScale);
     case HORZRES:
     case DESKTOPHORZRES:
         return physDev->horzRes;
@@ -475,10 +477,10 @@ INT PSDRV_GetDeviceCaps( PSDRV_PDEVICE *physDev, INT cap )
                            (double)physDev->pi->ppd->DefaultResolution );
     case LOGPIXELSX:
         return MulDiv(physDev->logPixelsX,
-		      physDev->Devmode->dmPublic.dmScale, 100);
+		      physDev->Devmode->dmPublic.u1.s1.dmScale, 100);
     case LOGPIXELSY:
         return MulDiv(physDev->logPixelsY,
-		      physDev->Devmode->dmPublic.dmScale, 100);
+		      physDev->Devmode->dmPublic.u1.s1.dmScale, 100);
     case SIZEPALETTE:
         return 0;
     case NUMRESERVED:
diff --git a/dlls/wineps.drv/ps.c b/dlls/wineps.drv/ps.c
index a856bd4..fdebf46 100644
--- a/dlls/wineps.drv/ps.c
+++ b/dlls/wineps.drv/ps.c
@@ -348,14 +348,14 @@ INT PSDRV_WriteHeader( PSDRV_PDEVICE *physDev, LPCSTR title )
 
     WriteSpool16( physDev->job.hJob, (LPSTR)psbeginsetup, strlen(psbeginsetup) );
 
-    if(physDev->Devmode->dmPublic.dmCopies > 1) {
+    if(physDev->Devmode->dmPublic.u1.s1.dmCopies > 1) {
         char copies_buf[100];
-        sprintf(copies_buf, "mark {\n << /NumCopies %d >> setpagedevice\n} stopped cleartomark\n", physDev->Devmode->dmPublic.dmCopies);
+        sprintf(copies_buf, "mark {\n << /NumCopies %d >> setpagedevice\n} stopped cleartomark\n", physDev->Devmode->dmPublic.u1.s1.dmCopies);
         WriteSpool16(physDev->job.hJob, copies_buf, strlen(copies_buf));
     }
 
     for(slot = physDev->pi->ppd->InputSlots; slot; slot = slot->next) {
-        if(slot->WinBin == physDev->Devmode->dmPublic.dmDefaultSource) {
+        if(slot->WinBin == physDev->Devmode->dmPublic.u1.s1.dmDefaultSource) {
 	    if(slot->InvocationString) {
 	        PSDRV_WriteFeature(physDev->job.hJob, "*InputSlot", slot->Name,
 			     slot->InvocationString);
diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index 19c9a92..e560f6a 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -3687,10 +3687,10 @@ static void WINSPOOL_GetDefaultDevMode(
 	dm.u1.s1.dmPaperLength = 2970;
 	dm.u1.s1.dmPaperWidth = 2100;
 
-	dm.dmScale = 100;
-	dm.dmCopies = 1;
-	dm.dmDefaultSource = DMBIN_AUTO;
-	dm.dmPrintQuality = DMRES_MEDIUM;
+	dm.u1.s1.dmScale = 100;
+	dm.u1.s1.dmCopies = 1;
+	dm.u1.s1.dmDefaultSource = DMBIN_AUTO;
+	dm.u1.s1.dmPrintQuality = DMRES_MEDIUM;
 	/* dm.dmColor */
 	/* dm.dmDuplex */
 	dm.dmYResolution = 300; /* 300dpi */
@@ -3701,7 +3701,7 @@ static void WINSPOOL_GetDefaultDevMode(
 	/* dm.dmBitsPerPel */
 	/* dm.dmPelsWidth */
 	/* dm.dmPelsHeight */
-	/* dm.dmDisplayFlags */
+	/* dm.u2.dmDisplayFlags */
 	/* dm.dmDisplayFrequency */
 	/* dm.dmICMMethod */
 	/* dm.dmICMIntent */
diff --git a/include/wingdi.h b/include/wingdi.h
index 7d8c4a1..56e8301 100644
--- a/include/wingdi.h
+++ b/include/wingdi.h
@@ -2814,13 +2814,17 @@ typedef struct
 	short  dmPaperSize;
 	short  dmPaperLength;
 	short  dmPaperWidth;
+        short  dmScale;
+        short  dmCopies;
+        short  dmDefaultSource;
+        short  dmPrintQuality;
       } DUMMYSTRUCTNAME1;
-      POINTL dmPosition;
+      struct {
+        POINTL dmPosition;
+        DWORD dmDisplayOrientation;
+        DWORD dmDisplayFixedOutput;
+      } DUMMYSTRUCTNAME2;
     } DUMMYUNIONNAME1;
-    short  dmScale;
-    short  dmCopies;
-    short  dmDefaultSource;
-    short  dmPrintQuality;
     short  dmColor;
     short  dmDuplex;
     short  dmYResolution;
@@ -2831,7 +2835,10 @@ typedef struct
     DWORD  dmBitsPerPel;
     DWORD  dmPelsWidth;
     DWORD  dmPelsHeight;
-    DWORD  dmDisplayFlags;
+    union {
+      DWORD dmDisplayFlags;
+      DWORD dmNup;
+    } DUMMYUNIONNAME2;
     DWORD  dmDisplayFrequency;
     DWORD  dmICMMethod;
     DWORD  dmICMIntent;
@@ -2857,13 +2864,17 @@ typedef struct
 	short  dmPaperSize;
 	short  dmPaperLength;
 	short  dmPaperWidth;
+        short  dmScale;
+        short  dmCopies;
+        short  dmDefaultSource;
+        short  dmPrintQuality;
       } DUMMYSTRUCTNAME1;
-      POINTL dmPosition;
+      struct {
+        POINTL dmPosition;
+        DWORD dmDisplayOrientation;
+        DWORD dmDisplayFixedOutput;
+      } DUMMYSTRUCTNAME2;
     } DUMMYUNIONNAME1;
-    short  dmScale;
-    short  dmCopies;
-    short  dmDefaultSource;
-    short  dmPrintQuality;
     short  dmColor;
     short  dmDuplex;
     short  dmYResolution;
@@ -2874,7 +2885,10 @@ typedef struct
     DWORD  dmBitsPerPel;
     DWORD  dmPelsWidth;
     DWORD  dmPelsHeight;
-    DWORD  dmDisplayFlags;
+    union {
+      DWORD dmDisplayFlags;
+      DWORD dmNup;
+    } DUMMYUNIONNAME2;
     DWORD  dmDisplayFrequency;
     DWORD  dmICMMethod;
     DWORD  dmICMIntent;
diff --git a/programs/cmdlgtst/cmdlgtst.c b/programs/cmdlgtst/cmdlgtst.c
index a4e0151..d9ae7a9 100644
--- a/programs/cmdlgtst/cmdlgtst.c
+++ b/programs/cmdlgtst/cmdlgtst.c
@@ -498,12 +498,12 @@ static void mw_PageSetup(HWND hWnd)
 			OF("dmPaperSize",	u1.s1.dmPaperSize,	DM_PAPERSIZE);
 			OF("dmPaperLength",	u1.s1.dmPaperLength,	DM_PAPERLENGTH);
 			OF("dmPaperWidth",	u1.s1.dmPaperWidth,	DM_PAPERWIDTH);
-			OF("dmScale",		dmScale,	DM_SCALE);
-			OF("dmCopies",		dmCopies,	DM_COPIES);
-			OF("dmDefaultSource",	dmDefaultSource,DM_DEFAULTSOURCE);
-			OF("dmPrintQuality",	dmPrintQuality,	DM_PRINTQUALITY);
+			OF("dmScale",		u1.s1.dmScale,	DM_SCALE);
+			OF("dmCopies",		u1.s1.dmCopies,	DM_COPIES);
+			OF("dmDefaultSource",	u1.s1.dmDefaultSource,DM_DEFAULTSOURCE);
+			OF("dmPrintQuality",	u1.s1.dmPrintQuality,	DM_PRINTQUALITY);
 			if(dm->dmFields &	DM_POSITION)
-				WINE_TRACE("        dmPosition(%d, %d)\n", dm->u1.dmPosition.x, dm->u1.dmPosition.y);
+				WINE_TRACE("        dmPosition(%d, %d)\n", dm->u1.s2.dmPosition.x, dm->u1.s2.dmPosition.y);
 			else
 				WINE_TRACE("        dmPosition NOT SET!\n");
 			OF("dmColor",		dmColor,	DM_COLOR);
-- 
1.5.3.4






More information about the wine-patches mailing list