From d43fdc5ab0f294d99280f8a6d002b98dc0c2dba2 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Thu, 1 Nov 2007 14:22:11 +0800 Subject: [PATCH] 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 e6c22cd004b..39ac750c3a3 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 a4d22445eb2..b23ef0ba4f2 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 4981b14a01b..b4f98fbf5de 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 0c4f539dcf4..0024640f4b9 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 a856bd4c33e..fdebf46afab 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 19c9a9202aa..e560f6af6da 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 7d8c4a1826e..56e83012cfa 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 a4e0151a9d0..d9ae7a9f79e 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);