MediaPrintableAreapublic final class MediaPrintableArea extends Object implements PrintJobAttribute, PrintRequestAttribute, DocAttributeClass MediaPrintableArea is a printing attribute used to distinguish
the printable and non-printable areas of media.
The printable area is specified to be a rectangle, within the overall
dimensions of a media.
Most printers cannot print on the entire surface of the media, due
to printer hardware limitations. This class can be used to query
the acceptable values for a supposed print job, and to request an area
within the constraints of the printable area to be used in a print job.
To query for the printable area, a client must supply a suitable context.
Without specifying at the very least the size of the media being used
no meaningful value for printable area can be obtained.
The attribute is not described in terms of the distance from the edge
of the paper, in part to emphasise that this attribute is not independent
of a particular media, but must be described within the context of a
choice of other attributes. Additionally it is usually more convenient
for a client to use the printable area.
The hardware's minimum margins is not just a property of the printer,
but may be a function of the media size, orientation, media type, and
any specified finishings.
PrintService provides the method to query the supported
values of an attribute in a suitable context :
See {@link javax.print.PrintService#getSupportedAttributeValues(Class,DocFlavor, AttributeSet) PrintService.getSupportedAttributeValues() }
The rectangular printable area is defined thus:
The (x,y) origin is positioned at the top-left of the paper in portrait
mode regardless of the orientation specified in the requesting context.
For example a printable area for A4 paper in portrait or landscape
orientation will have height > width.
A printable area attribute's values are stored
internally as integers in units of micrometers (µm), where 1 micrometer
= 10-6 meter = 1/1000 millimeter = 1/25400 inch. This permits
dimensions to be represented exactly to a precision of 1/1000 mm (= 1
µm) or 1/100 inch (= 254 µm). If fractional inches are expressed in
negative powers of two, this permits dimensions to be represented exactly to
a precision of 1/8 inch (= 3175 µm) but not 1/16 inch (because 1/16 inch
does not equal an integral number of µm).
IPP Compatibility: MediaPrintableArea is not an IPP attribute. |
Fields Summary |
---|
private int | x | private int | y | private int | w | private int | h | private int | units | private static final long | serialVersionUID | public static final int | INCHValue to indicate units of inches (in). It is actually the conversion
factor by which to multiply inches to yield µm (25400). | public static final int | MMValue to indicate units of millimeters (mm). It is actually the
conversion factor by which to multiply mm to yield µm (1000). |
Constructors Summary |
---|
public MediaPrintableArea(float x, float y, float w, float h, int units)Constructs a MediaPrintableArea object from floating point values.
if ((x < 0.0) || (y < 0.0) || (w <= 0.0) || (h <= 0.0) ||
(units < 1)) {
throw new IllegalArgumentException("0 or negative value argument");
}
this.x = (int) (x * units + 0.5f);
this.y = (int) (y * units + 0.5f);
this.w = (int) (w * units + 0.5f);
this.h = (int) (h * units + 0.5f);
| public MediaPrintableArea(int x, int y, int w, int h, int units)Constructs a MediaPrintableArea object from integer values.
if ((x < 0) || (y < 0) || (w <= 0) || (h <= 0) ||
(units < 1)) {
throw new IllegalArgumentException("0 or negative value argument");
}
this.x = x * units;
this.y = y * units;
this.w = w * units;
this.h = h * units;
|
Methods Summary |
---|
private static float | convertFromMicrometers(int x, int units)
if (units < 1) {
throw new IllegalArgumentException("units is < 1");
}
return ((float)x) / ((float)units);
| public boolean | equals(java.lang.Object object)Returns whether this media margins attribute is equivalent to the passed
in object.
To be equivalent, all of the following conditions must be true:
-
object is not null.
-
object is an instance of class MediaPrintableArea.
-
The origin and dimensions are the same.
boolean ret = false;
if (object instanceof MediaPrintableArea) {
MediaPrintableArea mm = (MediaPrintableArea)object;
if (x == mm.x && y == mm.y && w == mm.w && h == mm.h) {
ret = true;
}
}
return ret;
| public final java.lang.Class | getCategory()Get the printing attribute class which is to be used as the "category"
for this printing attribute value.
For class MediaPrintableArea, the category is
class MediaPrintableArea itself.
return MediaPrintableArea.class;
| public float | getHeight(int units)Get the height of the printable area in the specified units.
return convertFromMicrometers(h, units);
| public final java.lang.String | getName()Get the name of the category of which this attribute value is an
instance.
For class MediaPrintableArea,
the category name is "media-printable-area" .
This is not an IPP V1.1 attribute.
return "media-printable-area";
| public float[] | getPrintableArea(int units)Get the printable area as an array of 4 values in the order
x, y, w, h. The values returned are in the given units.
return new float[] { getX(units), getY(units),
getWidth(units), getHeight(units) };
| public float | getWidth(int units)Get the width of the printable area in the specified units.
return convertFromMicrometers(w, units);
| public float | getX(int units)Get the x location of the origin of the printable area in the
specified units.
return convertFromMicrometers(x, units);
| public float | getY(int units)Get the y location of the origin of the printable area in the
specified units.
return convertFromMicrometers(y, units);
| public int | hashCode()Returns a hash code value for this attribute.
return x + 37*y + 43*w + 47*h;
| public java.lang.String | toString(int units, java.lang.String unitsName)Returns a string version of this rectangular size attribute in the
given units.
if (unitsName == null) {
unitsName = "";
}
float []vals = getPrintableArea(units);
String str = "("+vals[0]+","+vals[1]+")->("+vals[2]+","+vals[3]+")";
return str + unitsName;
| public java.lang.String | toString()Returns a string version of this rectangular size attribute in mm.
return(toString(MM, "mm"));
|
|