Module: wine Branch: master Commit: 44d880b430e6c6f017950667a8d9fc70c2209ff2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=44d880b430e6c6f017950667a8...
Author: Huw Davies huw@codeweavers.com Date: Mon Apr 16 13:18:38 2012 +0100
wineps: Add a helper to find a page size.
---
dlls/wineps.drv/driver.c | 32 +++++++++++++++++++++----------- dlls/wineps.drv/ps.c | 13 +++---------- dlls/wineps.drv/psdrv.h | 1 + 3 files changed, 25 insertions(+), 21 deletions(-)
diff --git a/dlls/wineps.drv/driver.c b/dlls/wineps.drv/driver.c index 9e2753d..c9c5b19 100644 --- a/dlls/wineps.drv/driver.c +++ b/dlls/wineps.drv/driver.c @@ -56,6 +56,17 @@ INPUTSLOT *find_slot( PPD *ppd, PSDRV_DEVMODE *dm ) return NULL; }
+PAGESIZE *find_pagesize( PPD *ppd, PSDRV_DEVMODE *dm ) +{ + PAGESIZE *page; + + LIST_FOR_EACH_ENTRY( page, &ppd->PageSizes, PAGESIZE, entry ) + if (page->WinPage == dm->dmPublic.u1.s1.dmPaperSize) + return page; + + return NULL; +} + /************************************************************************ * * PSDRV_MergeDevmodes @@ -78,14 +89,12 @@ void PSDRV_MergeDevmodes( PSDRV_DEVMODE *dm1, PSDRV_DEVMODE *dm2, PRINTERINFO *p }
/* NB PaperWidth is always < PaperLength */ - if(dm2->dmPublic.dmFields & DM_PAPERSIZE) { - PAGESIZE *page; + if (dm2->dmPublic.dmFields & DM_PAPERSIZE) + { + PAGESIZE *page = find_pagesize( pi->ppd, dm2 );
- LIST_FOR_EACH_ENTRY(page, &pi->ppd->PageSizes, PAGESIZE, entry) { - if(page->WinPage == dm2->dmPublic.u1.s1.dmPaperSize) - break; - } - if(&page->entry != &pi->ppd->PageSizes ) { + if (page) + { dm1->dmPublic.u1.s1.dmPaperSize = dm2->dmPublic.u1.s1.dmPaperSize; dm1->dmPublic.u1.s1.dmPaperWidth = paper_size_from_points( page->PaperDimension->x ); dm1->dmPublic.u1.s1.dmPaperLength = paper_size_from_points( page->PaperDimension->y ); @@ -94,11 +103,12 @@ void PSDRV_MergeDevmodes( PSDRV_DEVMODE *dm1, PSDRV_DEVMODE *dm2, PRINTERINFO *p TRACE("Changing page to %s %d x %d\n", page->FullName, dm1->dmPublic.u1.s1.dmPaperWidth, dm1->dmPublic.u1.s1.dmPaperLength ); - } else { - TRACE("Trying to change to unsupported pagesize %d\n", - dm2->dmPublic.u1.s1.dmPaperSize); } - } else if((dm2->dmPublic.dmFields & DM_PAPERLENGTH) && + else + TRACE("Trying to change to unsupported pagesize %d\n", dm2->dmPublic.u1.s1.dmPaperSize); + } + + else if((dm2->dmPublic.dmFields & DM_PAPERLENGTH) && (dm2->dmPublic.dmFields & DM_PAPERWIDTH)) { dm1->dmPublic.u1.s1.dmPaperLength = dm2->dmPublic.u1.s1.dmPaperLength; dm1->dmPublic.u1.s1.dmPaperWidth = dm2->dmPublic.u1.s1.dmPaperWidth; diff --git a/dlls/wineps.drv/ps.c b/dlls/wineps.drv/ps.c index 1501d33..f4444e8 100644 --- a/dlls/wineps.drv/ps.c +++ b/dlls/wineps.drv/ps.c @@ -302,7 +302,7 @@ INT PSDRV_WriteHeader( PHYSDEV dev, LPCWSTR title ) PSDRV_PDEVICE *physDev = get_psdrv_dev( dev ); char *buf, *escaped_title; INPUTSLOT *slot = find_slot( physDev->pi->ppd, physDev->Devmode ); - PAGESIZE *page; + PAGESIZE *page = find_pagesize( physDev->pi->ppd, physDev->Devmode ); DUPLEX *duplex; int win_duplex; int llx, lly, urx, ury; @@ -353,15 +353,8 @@ INT PSDRV_WriteHeader( PHYSDEV dev, LPCWSTR title ) if (slot && slot->InvocationString) PSDRV_WriteFeature( dev, "*InputSlot", slot->Name, slot->InvocationString );
- LIST_FOR_EACH_ENTRY(page, &physDev->pi->ppd->PageSizes, PAGESIZE, entry) { - if(page->WinPage == physDev->Devmode->dmPublic.u1.s1.dmPaperSize) { - if(page->InvocationString) { - PSDRV_WriteFeature(dev, "*PageSize", page->Name, - page->InvocationString); - break; - } - } - } + if (page && page->InvocationString) + PSDRV_WriteFeature( dev, "*PageSize", page->Name, page->InvocationString );
win_duplex = physDev->Devmode->dmPublic.dmFields & DM_DUPLEX ? physDev->Devmode->dmPublic.dmDuplex : 0; diff --git a/dlls/wineps.drv/psdrv.h b/dlls/wineps.drv/psdrv.h index 911c1e4..f314dd9 100644 --- a/dlls/wineps.drv/psdrv.h +++ b/dlls/wineps.drv/psdrv.h @@ -402,6 +402,7 @@ extern HANDLE PSDRV_Heap DECLSPEC_HIDDEN; extern char *PSDRV_ANSIVector[256] DECLSPEC_HIDDEN;
extern INPUTSLOT *find_slot( PPD *ppd, PSDRV_DEVMODE *dm ); +extern PAGESIZE *find_pagesize( PPD *ppd, PSDRV_DEVMODE *dm );
/* GDI driver functions */ extern BOOL PSDRV_Arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,