/*
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package java.awt.print;
import java.awt.geom.Rectangle2D;
The Paper
class describes the physical characteristics of
a piece of paper.
When creating a Paper
object, it is the application's
responsibility to ensure that the paper size and the imageable area
are compatible. For example, if the paper size is changed from
11 x 17 to 8.5 x 11, the application might need to reduce the
imageable area so that whatever is printed fits on the page.
See Also: - setSize(double, double)
- setImageableArea(double, double, double, double)
/**
* The <code>Paper</code> class describes the physical characteristics of
* a piece of paper.
* <p>
* When creating a <code>Paper</code> object, it is the application's
* responsibility to ensure that the paper size and the imageable area
* are compatible. For example, if the paper size is changed from
* 11 x 17 to 8.5 x 11, the application might need to reduce the
* imageable area so that whatever is printed fits on the page.
* <p>
* @see #setSize(double, double)
* @see #setImageableArea(double, double, double, double)
*/
public class Paper implements Cloneable {
/* Private Class Variables */
private static final int INCH = 72;
private static final double LETTER_WIDTH = 8.5 * INCH;
private static final double LETTER_HEIGHT = 11 * INCH;
/* Instance Variables */
The height of the physical page in 1/72nds
of an inch. The number is stored as a floating
point value rather than as an integer
to facilitate the conversion from metric
units to 1/72nds of an inch and then back.
(This may or may not be a good enough reason
for a float).
/**
* The height of the physical page in 1/72nds
* of an inch. The number is stored as a floating
* point value rather than as an integer
* to facilitate the conversion from metric
* units to 1/72nds of an inch and then back.
* (This may or may not be a good enough reason
* for a float).
*/
private double mHeight;
The width of the physical page in 1/72nds
of an inch.
/**
* The width of the physical page in 1/72nds
* of an inch.
*/
private double mWidth;
The area of the page on which drawing will
be visable. The area outside of this
rectangle but on the Page generally
reflects the printer's hardware margins.
The origin of the physical page is
at (0, 0) with this rectangle provided
in that coordinate system.
/**
* The area of the page on which drawing will
* be visable. The area outside of this
* rectangle but on the Page generally
* reflects the printer's hardware margins.
* The origin of the physical page is
* at (0, 0) with this rectangle provided
* in that coordinate system.
*/
private Rectangle2D mImageableArea;
/* Constructors */
Creates a letter sized piece of paper
with one inch margins.
/**
* Creates a letter sized piece of paper
* with one inch margins.
*/
public Paper() {
mHeight = LETTER_HEIGHT;
mWidth = LETTER_WIDTH;
mImageableArea = new Rectangle2D.Double(INCH, INCH,
mWidth - 2 * INCH,
mHeight - 2 * INCH);
}
/* Instance Methods */
Creates a copy of this Paper
with the same contents
as this Paper
.
Returns: a copy of this Paper
.
/**
* Creates a copy of this <code>Paper</code> with the same contents
* as this <code>Paper</code>.
* @return a copy of this <code>Paper</code>.
*/
public Object clone() {
Paper newPaper;
try {
/* It's okay to copy the reference to the imageable
* area into the clone since we always return a copy
* of the imageable area when asked for it.
*/
newPaper = (Paper) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
newPaper = null; // should never happen.
}
return newPaper;
}
Returns the height of the page in 1/72nds of an inch.
Returns: the height of the page described by this
Paper
.
/**
* Returns the height of the page in 1/72nds of an inch.
* @return the height of the page described by this
* <code>Paper</code>.
*/
public double getHeight() {
return mHeight;
}
Sets the width and height of this Paper
object, which represents the properties of the page onto
which printing occurs.
The dimensions are supplied in 1/72nds of
an inch.
Params: - width – the value to which to set this
Paper
object's width - height – the value to which to set this
Paper
object's height
/**
* Sets the width and height of this <code>Paper</code>
* object, which represents the properties of the page onto
* which printing occurs.
* The dimensions are supplied in 1/72nds of
* an inch.
* @param width the value to which to set this <code>Paper</code>
* object's width
* @param height the value to which to set this <code>Paper</code>
* object's height
*/
public void setSize(double width, double height) {
mWidth = width;
mHeight = height;
}
Returns the width of the page in 1/72nds
of an inch.
Returns: the width of the page described by this
Paper
.
/**
* Returns the width of the page in 1/72nds
* of an inch.
* @return the width of the page described by this
* <code>Paper</code>.
*/
public double getWidth() {
return mWidth;
}
Sets the imageable area of this Paper
. The
imageable area is the area on the page in which printing
occurs.
Params: - x – the X coordinate to which to set the
upper-left corner of the imageable area of this
Paper
- y – the Y coordinate to which to set the
upper-left corner of the imageable area of this
Paper
- width – the value to which to set the width of the
imageable area of this
Paper
- height – the value to which to set the height of the
imageable area of this
Paper
/**
* Sets the imageable area of this <code>Paper</code>. The
* imageable area is the area on the page in which printing
* occurs.
* @param x the X coordinate to which to set the
* upper-left corner of the imageable area of this <code>Paper</code>
* @param y the Y coordinate to which to set the
* upper-left corner of the imageable area of this <code>Paper</code>
* @param width the value to which to set the width of the
* imageable area of this <code>Paper</code>
* @param height the value to which to set the height of the
* imageable area of this <code>Paper</code>
*/
public void setImageableArea(double x, double y,
double width, double height) {
mImageableArea = new Rectangle2D.Double(x, y, width,height);
}
Returns the x coordinate of the upper-left corner of this
Paper
object's imageable area.
Returns: the x coordinate of the imageable area.
/**
* Returns the x coordinate of the upper-left corner of this
* <code>Paper</code> object's imageable area.
* @return the x coordinate of the imageable area.
*/
public double getImageableX() {
return mImageableArea.getX();
}
Returns the y coordinate of the upper-left corner of this
Paper
object's imageable area.
Returns: the y coordinate of the imageable area.
/**
* Returns the y coordinate of the upper-left corner of this
* <code>Paper</code> object's imageable area.
* @return the y coordinate of the imageable area.
*/
public double getImageableY() {
return mImageableArea.getY();
}
Returns the width of this Paper
object's imageable
area.
Returns: the width of the imageable area.
/**
* Returns the width of this <code>Paper</code> object's imageable
* area.
* @return the width of the imageable area.
*/
public double getImageableWidth() {
return mImageableArea.getWidth();
}
Returns the height of this Paper
object's imageable
area.
Returns: the height of the imageable area.
/**
* Returns the height of this <code>Paper</code> object's imageable
* area.
* @return the height of the imageable area.
*/
public double getImageableHeight() {
return mImageableArea.getHeight();
}
}