Alexandre Julliard : wineps: Add a helper function for paper size conversions.
Alexandre Julliard
julliard at winehq.org
Fri Apr 29 11:09:13 CDT 2011
Module: wine
Branch: master
Commit: ca3b82022762ff205ca82713eab39f3f7a541057
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ca3b82022762ff205ca82713eab39f3f7a541057
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Apr 28 20:59:27 2011 +0200
wineps: Add a helper function for paper size conversions.
---
dlls/wineps.drv/driver.c | 37 +++++++++++++++++--------------------
1 files changed, 17 insertions(+), 20 deletions(-)
diff --git a/dlls/wineps.drv/driver.c b/dlls/wineps.drv/driver.c
index 7b30f3f..ec16488 100644
--- a/dlls/wineps.drv/driver.c
+++ b/dlls/wineps.drv/driver.c
@@ -39,6 +39,11 @@
WINE_DEFAULT_DEBUG_CHANNEL(psdrv);
+/* convert points to paper size units (10th of a millimeter) */
+static inline int paper_size_from_points( float size )
+{
+ return size * 254 / 72;
+}
/************************************************************************
*
@@ -72,10 +77,8 @@ void PSDRV_MergeDevmodes(PSDRV_DEVMODEA *dm1, PSDRV_DEVMODEA *dm2,
}
if(&page->entry != &pi->ppd->PageSizes ) {
dm1->dmPublic.u1.s1.dmPaperSize = dm2->dmPublic.u1.s1.dmPaperSize;
- dm1->dmPublic.u1.s1.dmPaperWidth = page->PaperDimension->x *
- 254.0 / 72.0;
- dm1->dmPublic.u1.s1.dmPaperLength = page->PaperDimension->y *
- 254.0 / 72.0;
+ dm1->dmPublic.u1.s1.dmPaperWidth = paper_size_from_points( page->PaperDimension->x );
+ dm1->dmPublic.u1.s1.dmPaperLength = paper_size_from_points( page->PaperDimension->y );
dm1->dmPublic.dmFields &= ~(DM_PAPERLENGTH | DM_PAPERWIDTH);
dm1->dmPublic.dmFields |= DM_PAPERSIZE;
TRACE("Changing page to %s %d x %d\n", page->FullName,
@@ -458,8 +461,8 @@ DWORD CDECL PSDRV_DeviceCapabilities(LPSTR lpszDriver, LPCSTR lpszDevice, LPCSTR
TRACE("DC_PAPERSIZE: %f x %f\n", ps->PaperDimension->x, ps->PaperDimension->y);
i++;
if(lpszOutput != NULL) {
- pt->x = ps->PaperDimension->x * 254.0 / 72.0;
- pt->y = ps->PaperDimension->y * 254.0 / 72.0;
+ pt->x = paper_size_from_points( ps->PaperDimension->x );
+ pt->y = paper_size_from_points( ps->PaperDimension->y );
pt++;
}
}
@@ -564,33 +567,27 @@ DWORD CDECL PSDRV_DeviceCapabilities(LPSTR lpszDriver, LPCSTR lpszDevice, LPCSTR
case DC_MAXEXTENT:
{
PAGESIZE *ps;
- POINT ptMax;
- ptMax.x = ptMax.y = 0;
+ float x = 0, y = 0;
LIST_FOR_EACH_ENTRY(ps, &pi->ppd->PageSizes, PAGESIZE, entry)
{
- if(ps->PaperDimension->x > ptMax.x)
- ptMax.x = ps->PaperDimension->x;
- if(ps->PaperDimension->y > ptMax.y)
- ptMax.y = ps->PaperDimension->y;
+ if (ps->PaperDimension->x > x) x = ps->PaperDimension->x;
+ if (ps->PaperDimension->y > y) y = ps->PaperDimension->y;
}
- return MAKELONG(ptMax.x * 254.0 / 72.0, ptMax.y * 254.0 / 72.0 );
+ return MAKELONG( paper_size_from_points(x), paper_size_from_points(y) );
}
case DC_MINEXTENT:
{
PAGESIZE *ps;
- POINT ptMin;
- ptMin.x = ptMin.y = -1;
+ float x = 1e6, y = 1e6;
LIST_FOR_EACH_ENTRY(ps, &pi->ppd->PageSizes, PAGESIZE, entry)
{
- if(ptMin.x == -1 || ps->PaperDimension->x < ptMin.x)
- ptMin.x = ps->PaperDimension->x;
- if(ptMin.y == -1 || ps->PaperDimension->y < ptMin.y)
- ptMin.y = ps->PaperDimension->y;
+ if (ps->PaperDimension->x < x) x = ps->PaperDimension->x;
+ if (ps->PaperDimension->y < y) y = ps->PaperDimension->y;
}
- return MAKELONG(ptMin.x * 254.0 / 72.0, ptMin.y * 254.0 / 72.0);
+ return MAKELONG( paper_size_from_points(x), paper_size_from_points(y) );
}
case DC_SIZE:
More information about the wine-cvs
mailing list