GNU Classpath (0.20) | |
Frames | No Frames |
1: /* PageFormat.java -- Information about the page format 2: Copyright (C) 1999 Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: 39: package java.awt.print; 40: 41: /** 42: * This class contains information about the desired page format to 43: * use for printing a particular set of pages. 44: * 45: * @author Aaron M. Renn (arenn@urbanophile.com) 46: */ 47: public class PageFormat implements Cloneable 48: { 49: 50: /* 51: * Static Variables 52: */ 53: 54: /** 55: * A constant for a landscaped page orientation. Used by 56: * <code>getOrientation</code> and <code>setOrientation</code>. 57: */ 58: public static final int LANDSCAPE = 0; 59: 60: /** 61: * A constant for a portrait page orientation. Used by 62: * <code>getOrientation</code> and <code>setOrientation</code>. 63: */ 64: public static final int PORTRAIT = 1; 65: 66: /** 67: * A constant for a reversed landscaped page orientation. This is 68: * the orientation used by Macintosh's for landscape. The origin is 69: * in the upper right hand corner instead of the upper left. The 70: * X and Y axes are reversed. Used by <code>getOrientation</code> and 71: * <code>setOrientation</code>. 72: */ 73: public static final int REVERSE_LANDSCAPE = 2; 74: 75: /*************************************************************************/ 76: 77: /* 78: * Instance Variables 79: */ 80: 81: // The page orientation 82: private int orientation; 83: 84: // The paper type 85: private Paper paper; 86: 87: /*************************************************************************/ 88: 89: /* 90: * Constructors 91: */ 92: 93: /** 94: * This method creates a default page layout, which will be in portrait 95: * format. 96: */ 97: public 98: PageFormat() 99: { 100: this.paper = new Paper(); 101: this.orientation = PORTRAIT; 102: } 103: 104: /*************************************************************************/ 105: 106: /* 107: * Instance Methods 108: */ 109: 110: /** 111: * This method returns the width of the page, in 1/72nd's of an inch. The 112: * "width" measured depends on orientation. 113: * 114: * @return The width of the page. 115: */ 116: public double 117: getWidth() 118: { 119: return(paper.getWidth()); 120: } 121: 122: /*************************************************************************/ 123: 124: /** 125: * This method returns the height of the page, in 1/72nd's of an inch. 126: * The "height" measured depends on the orientation. 127: * 128: * @return The height of the page. 129: */ 130: public double 131: getHeight() 132: { 133: return(paper.getHeight()); 134: } 135: 136: /*************************************************************************/ 137: 138: /** 139: * This method returns the X coordinate value of the upper leftmost 140: * drawable area of the paper. 141: * 142: * @return The upper leftmost imageable X coordinate. 143: */ 144: public double 145: getImageableX() 146: { 147: return(paper.getImageableX()); 148: } 149: 150: /*************************************************************************/ 151: 152: /** 153: * This method returns the Y coordinate value of the upper leftmost 154: * drawable area of the paper. 155: * 156: * @return The upper leftmost imageable Y coordinate. 157: */ 158: public double 159: getImageableY() 160: { 161: return(paper.getImageableY()); 162: } 163: 164: /*************************************************************************/ 165: 166: /** 167: * This method returns the imageable width of the paper, in 1/72nd's of 168: * an inch. 169: * 170: * @return The imageable width of the paper. 171: */ 172: public double 173: getImageableWidth() 174: { 175: return(paper.getImageableWidth()); 176: } 177: 178: /*************************************************************************/ 179: 180: /** 181: * This method returns the imageable height of the paper, in 1/72nd's of 182: * an inch. 183: * 184: * @return The imageable height of the paper. 185: */ 186: public double getImageableHeight() 187: { 188: return(paper.getImageableHeight()); 189: } 190: 191: /*************************************************************************/ 192: 193: /** 194: * Returns a copy of the <code>paper</code> object being used for this 195: * page format. 196: * 197: * @return A copy of the <code>Paper</code> object for this format. 198: */ 199: public Paper 200: getPaper() 201: { 202: return((Paper)paper.clone()); 203: } 204: 205: /*************************************************************************/ 206: 207: /** 208: * Sets the <code>Paper</code> object to be used by this page format. 209: * 210: * @param paper The new <code>Paper</code> object for this page format. 211: */ 212: public void 213: setPaper(Paper paper) 214: { 215: this.paper = paper; 216: } 217: 218: /*************************************************************************/ 219: 220: /** 221: * This method returns the current page orientation. The value returned 222: * will be one of the page orientation constants from this class. 223: * 224: * @return The current page orientation. 225: */ 226: public int 227: getOrientation() 228: { 229: return(orientation); 230: } 231: 232: /*************************************************************************/ 233: 234: /** 235: * This method sets the page orientation for this format to the 236: * specified value. It must be one of the page orientation constants 237: * from this class or an exception will be thrown. 238: * 239: * @param orientation The new page orientation. 240: * 241: * @exception IllegalArgumentException If the specified page orientation 242: * value is not one of the constants from this class. 243: */ 244: public void 245: setOrientation(int orientation) throws IllegalArgumentException 246: { 247: if ((orientation != PORTRAIT) && 248: (orientation != LANDSCAPE) && 249: (orientation != REVERSE_LANDSCAPE)) 250: throw new IllegalArgumentException("Bad page orientation value: " + 251: orientation); 252: 253: this.orientation = orientation; 254: } 255: 256: /*************************************************************************/ 257: 258: /** 259: * This method returns a matrix used for transforming user space 260: * coordinates to page coordinates. The value returned will be six 261: * doubles as described in <code>java.awt.geom.AffineTransform</code>. 262: * 263: * @return The transformation matrix for this page format. 264: */ 265: public double[] 266: getMatrix() 267: { 268: throw new RuntimeException("Not implemented since I don't know what to do"); 269: } 270: 271: /*************************************************************************/ 272: 273: /** 274: * This method returns a copy of this object. 275: * 276: * @return A copy of this object. 277: */ 278: public Object 279: clone() 280: { 281: try 282: { 283: return(super.clone()); 284: } 285: catch(CloneNotSupportedException e) 286: { 287: return(null); 288: } 289: } 290: 291: } // class PageFormat
GNU Classpath (0.20) |