From: Michael T H. <mic...@us...> - 2003-10-21 02:01:08
|
Update of /cvsroot/jmol/Jmol/src/org/openscience/jmol/app In directory sc8-pr-cvs1:/tmp/cvs-serv12607/src/org/openscience/jmol/app Modified Files: DisplayPanel.java Log Message: printing is now scaled down to fit the page Index: DisplayPanel.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/app/DisplayPanel.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- DisplayPanel.java 20 Oct 2003 14:03:55 -0000 1.20 +++ DisplayPanel.java 20 Oct 2003 14:42:34 -0000 1.21 @@ -113,10 +113,27 @@ if (pageIndex > 0) return Printable.NO_SUCH_PAGE; rectClip.x = rectClip.y = 0; - rectClip.width = viewer.getScreenWidth(); - rectClip.height = viewer.getScreenHeight(); + int screenWidth = rectClip.width = viewer.getScreenWidth(); + int screenHeight = rectClip.height = viewer.getScreenHeight(); Image image = viewer.renderScreenImage(rectClip); - g.drawImage(image, (int)pf.getImageableX(), (int)pf.getImageableY(), null); + int pageX = (int)pf.getImageableX(); + int pageY = (int)pf.getImageableY(); + int pageWidth = (int)pf.getImageableWidth(); + int pageHeight = (int)pf.getImageableHeight(); + float scaleWidth = pageWidth / (float)screenWidth; + float scaleHeight = pageHeight / (float)screenHeight; + float scale = (scaleWidth < scaleHeight ? scaleWidth : scaleHeight); + if (scale < 1) { + int width =(int)(screenWidth * scale); + int height =(int)(screenHeight * scale); + g2.setRenderingHint(RenderingHints.KEY_RENDERING, + RenderingHints.VALUE_RENDER_QUALITY); + g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, + RenderingHints.VALUE_INTERPOLATION_BICUBIC); + g2.drawImage(image, pageX, pageY, width, height, null); + } else { + g2.drawImage(image, pageX, pageY, null); + } return Printable.PAGE_EXISTS; } |