Blob Blame Raw
--- cups-1.2.10/pdftops/PSOutputDev.cxx.str2348	2007-02-05 20:25:50.000000000 +0000
+++ cups-1.2.10/pdftops/PSOutputDev.cxx	2007-05-09 13:20:13.000000000 +0100
@@ -1159,7 +1159,14 @@
   }
 
   // Tell CUPS pstops filter not to do its own rotation...
-  writePSFmt("%%cupsRotation: %d\n", pageRotate);
+  int cups_rotate = 0;
+  int width = (int)ceil(mediaBox->x2 - mediaBox->x1);
+  int height = (int)ceil(mediaBox->y2 - mediaBox->y1);
+  int imgWidth = (int)ceil(cropBox->x2 - cropBox->x1);
+
+  if (width > height && width > imgWidth) cups_rotate = 90;
+
+  writePSFmt("%%cupsRotation: %d\n", cups_rotate);
 
   writePSFmt("%%Producer: xpdf/pdftops %s\n", xpdfVersion);
   xref->getDocInfo(&info);
@@ -2511,17 +2518,19 @@
       landscape = gFalse;
     } else {
       rotate = (360 - state->getRotate()) % 360;
+
+      fprintf(stderr, "DEBUG: Page rotate=%d, width=%d, height=%d, imgWidth=%d, imgHeight=%d\n",
+              state->getRotate(), width, height, imgWidth, imgHeight);
+
       if (rotate == 0 || rotate == 180) {
-	if ((width > height && imgWidth < imgHeight) ||
-	    (height > width && imgHeight < imgWidth)) {
+	if (width > height && width > imgWidth) {
 	  rotate += 90;
 	  landscape = gTrue;
 	} else {
 	  landscape = gFalse;
 	}
       } else { // rotate == 90 || rotate == 270
-	if ((width > height && imgWidth < imgHeight) ||
-	    (height > width && imgHeight < imgWidth)) {
+	if (height > width && height > imgWidth) {
 	  rotate = 270 - rotate;
 	  landscape = gTrue;
 	} else {
@@ -2529,6 +2538,7 @@
 	}
       }
     }
+
     writePSFmt("%%%%PageOrientation: %s\n",
 	       landscape ? "Landscape" : "Portrait");
     writePS("pdfStartPage\n");