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