Source for java.awt.print.PageFormat

   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