Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 98289 invoked from network); 12 Nov 2007 08:19:54 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 12 Nov 2007 08:19:54 -0000 Received: (qmail 28932 invoked by uid 500); 12 Nov 2007 08:19:42 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 28904 invoked by uid 500); 12 Nov 2007 08:19:42 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 28893 invoked by uid 99); 12 Nov 2007 08:19:42 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 12 Nov 2007 00:19:42 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 12 Nov 2007 08:20:36 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id DBC3D1A9832; Mon, 12 Nov 2007 00:19:29 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r594044 - /harmony/enhanced/classlib/trunk/modules/print/src/main/java/windows/org/apache/harmony/x/print/WinPrintJob.java Date: Mon, 12 Nov 2007 08:19:29 -0000 To: commits@harmony.apache.org From: apavlenko@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071112081929.DBC3D1A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: apavlenko Date: Mon Nov 12 00:19:28 2007 New Revision: 594044 URL: http://svn.apache.org/viewvc?rev=594044&view=rev Log: Fixed issue with printing of non-existing pages Modified: harmony/enhanced/classlib/trunk/modules/print/src/main/java/windows/org/apache/harmony/x/print/WinPrintJob.java Modified: harmony/enhanced/classlib/trunk/modules/print/src/main/java/windows/org/apache/harmony/x/print/WinPrintJob.java URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/print/src/main/java/windows/org/apache/harmony/x/print/WinPrintJob.java?rev=594044&r1=594043&r2=594044&view=diff ============================================================================== --- harmony/enhanced/classlib/trunk/modules/print/src/main/java/windows/org/apache/harmony/x/print/WinPrintJob.java (original) +++ harmony/enhanced/classlib/trunk/modules/print/src/main/java/windows/org/apache/harmony/x/print/WinPrintJob.java Mon Nov 12 00:19:28 2007 @@ -19,8 +19,12 @@ import java.awt.Color; import java.awt.Component; import java.awt.Frame; +import java.awt.Graphics; import java.awt.Graphics2D; +import java.awt.GraphicsConfiguration; import java.awt.Image; +import java.awt.Rectangle; +import java.awt.font.GlyphVector; import java.awt.print.PageFormat; import java.awt.print.Pageable; import java.awt.print.Paper; @@ -61,6 +65,7 @@ import javax.print.event.PrintJobEvent; import javax.print.event.PrintJobListener; +import org.apache.harmony.awt.gl.CommonGraphics2D; import org.apache.harmony.awt.gl.windows.WinGDIPGraphics2D; class WinPrintJob implements CancelablePrintJob { @@ -404,14 +409,26 @@ private int printPrintable(final Printable p, final long pdc, final PageFormat format, final int pageIndex) throws PrintException { - final int result; + int result = Printable.PAGE_EXISTS; try { - WinPrinterFactory.startPage(pdc); - result = p.print(getGraphics(pdc, format), format, pageIndex); - WinPrinterFactory.endPage(pdc); - } catch (final PrinterException ex) { - throw new PrintException(ex); + // Before drawing on printer's device context trying to draw on + // a dummy graphics to ensure that the page exists. + result = p.print(new DummyGraphics2D((int) format.getWidth(), + (int) format.getHeight()), format, pageIndex); + } catch (final Exception ex) { + // ignore + } + + if (result == Printable.PAGE_EXISTS) { + try { + WinPrinterFactory.startPage(pdc); + result = p.print(getGraphics(pdc, format), format, + pageIndex); + WinPrinterFactory.endPage(pdc); + } catch (final PrinterException ex) { + throw new PrintException(ex); + } } return result; @@ -530,6 +547,30 @@ } return format; + } + } + + private static class DummyGraphics2D extends CommonGraphics2D { + DummyGraphics2D(final int width, final int height) { + setClip(new Rectangle(width, height)); + } + + public void drawGlyphVector(GlyphVector g, float x, float y) { + } + + public void drawString(String s, float x, float y) { + } + + public GraphicsConfiguration getDeviceConfiguration() { + return null; + } + + public void copyArea(int sx, int sy, int width, int height, int dx, + int dy) { + } + + public Graphics create() { + return this; } } }