From 90c9b3ae9a089fc1093dc93df84f343387f9e2de Mon Sep 17 00:00:00 2001 From: Michael Pfeiffer Date: Sat, 2 Oct 2004 05:26:45 +0000 Subject: [PATCH] Fixed scaling problem. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9156 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/print/drivers/postscript/PS.cpp | 20 +++++++++++--------- src/add-ons/print/drivers/postscript/PS.h | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/add-ons/print/drivers/postscript/PS.cpp b/src/add-ons/print/drivers/postscript/PS.cpp index 52611c35c3..fd3ef8cf85 100644 --- a/src/add-ons/print/drivers/postscript/PS.cpp +++ b/src/add-ons/print/drivers/postscript/PS.cpp @@ -48,6 +48,8 @@ bool PSDriver::startPage(int page) { page ++; writeSpoolString("%%%%Page: %d %d\n", page, page); + writeSpoolString("gsave\n"); + setupCTM(); return true; } @@ -55,6 +57,7 @@ bool PSDriver::endPage(int) { try { fPrintedPages ++; + writeSpoolString("grestore\n"); writeSpoolString("showpage\n"); return true; } @@ -63,6 +66,14 @@ bool PSDriver::endPage(int) } } +void PSDriver::setupCTM() { + // move origin from bottom left to top left + writeSpoolString("0 %f translate\n", getJobData()->getPaperRect().Height()); + // y values increase from top to bottom + // units of measure is dpi + writeSpoolString("72 %d div 72 -%d div scale\n", 2*getJobData()->getXres(), 2*getJobData()->getYres()); +} + bool PSDriver::endDoc(bool) { try { @@ -235,15 +246,6 @@ void PSDriver::jobStart() writeSpoolString("%%%%BeginDefaults\n"); writeSpoolString("%%%%PageMedia: Plain\n"); writeSpoolString("%%%%EndDefaults\n"); - - // setup CTM - writeSpoolString("%%%%BeginSetup\n"); - // move origin from bottom left to top left - writeSpoolString("0 %f translate\n", getJobData()->getPaperRect().Height()); - // y values increase from top to bottom - // units of measure is dpi - writeSpoolString("72 %d div 72 -%d div scale\n", getJobData()->getXres(), getJobData()->getYres()); - writeSpoolString("%%%%EndSetup\n"); } void PSDriver::startRasterGraphics(int x, int y, int width, int height, int widthByte) diff --git a/src/add-ons/print/drivers/postscript/PS.h b/src/add-ons/print/drivers/postscript/PS.h index fd06e5941c..dd6370aa66 100644 --- a/src/add-ons/print/drivers/postscript/PS.h +++ b/src/add-ons/print/drivers/postscript/PS.h @@ -22,8 +22,8 @@ protected: virtual bool endDoc(bool success); private: + void setupCTM(); void jobStart(); - float scale(int d); void startRasterGraphics(int x, int y, int width, int height, int widthByte); void endRasterGraphics(); void rasterGraphics(