FileDocCategorySizeDatePackage
MediaSize.javaAPI DocJava SE 6 API27268Tue Jun 10 00:26:24 BST 2008javax.print.attribute.standard

MediaSize

public class MediaSize extends Size2DSyntax implements Attribute
Class MediaSize is a two-dimensional size valued printing attribute class that indicates the dimensions of the medium in a portrait orientation, with the X dimension running along the bottom edge and the Y dimension running along the left edge. Thus, the Y dimension must be greater than or equal to the X dimension. Class MediaSize declares many standard media size values, organized into nested classes for ISO, JIS, North American, engineering, and other media.

MediaSize is not yet used to specify media. Its current role is as a mapping for named media (see {@link MediaSizeName MediaSizeName}). Clients can use the mapping method MediaSize.getMediaSizeForName(MediaSizeName) to find the physical dimensions of the MediaSizeName instances enumerated in this API. This is useful for clients which need this information to format & paginate printing.

author
Phil Race, Alan Kaminsky

Fields Summary
private static final long
serialVersionUID
private MediaSizeName
mediaName
private static HashMap
mediaMap
private static Vector
sizeVector
Constructors Summary
public MediaSize(float x, float y, int units)
Construct a new media size attribute from the given floating-point values.

param
x X dimension.
param
y Y dimension.
param
units Unit conversion factor, e.g. Size2DSyntax.INCH or Size2DSyntax.MM.
exception
IllegalArgumentException (Unchecked exception) Thrown if x < 0 or y < 0 or units < 1 or x > y.

 
                                                                                  
          
	super (x, y, units);
	if (x > y) {
	    throw new IllegalArgumentException("X dimension > Y dimension");
	}
	sizeVector.add(this);
    
public MediaSize(int x, int y, int units)
Construct a new media size attribute from the given integer values.

param
x X dimension.
param
y Y dimension.
param
units Unit conversion factor, e.g. Size2DSyntax.INCH or Size2DSyntax.MM.
exception
IllegalArgumentException (Unchecked exception) Thrown if x < 0 or y < 0 or units < 1 or x > y.

	super (x, y, units);
	if (x > y) {
	    throw new IllegalArgumentException("X dimension > Y dimension");
	}
	sizeVector.add(this);
    
public MediaSize(float x, float y, int units, MediaSizeName media)
Construct a new media size attribute from the given floating-point values.

param
x X dimension.
param
y Y dimension.
param
units Unit conversion factor, e.g. Size2DSyntax.INCH or Size2DSyntax.MM.
param
media a media name to associate with this MediaSize
exception
IllegalArgumentException (Unchecked exception) Thrown if x < 0 or y < 0 or units < 1 or x > y.

	super (x, y, units);
	if (x > y) {
	    throw new IllegalArgumentException("X dimension > Y dimension");
	}
	mediaName = media;
	mediaMap.put(mediaName, this);
	sizeVector.add(this);
    
public MediaSize(int x, int y, int units, MediaSizeName media)
Construct a new media size attribute from the given integer values.

param
x X dimension.
param
y Y dimension.
param
units Unit conversion factor, e.g. Size2DSyntax.INCH or Size2DSyntax.MM.
param
media a media name to associate with this MediaSize
exception
IllegalArgumentException (Unchecked exception) Thrown if x < 0 or y < 0 or units < 1 or x > y.

	super (x, y, units);
	if (x > y) {
	    throw new IllegalArgumentException("X dimension > Y dimension");
	}
	mediaName = media;
	mediaMap.put(mediaName, this);
	sizeVector.add(this);
    
Methods Summary
public booleanequals(java.lang.Object object)
Returns whether this media size attribute is equivalent to the passed in object. To be equivalent, all of the following conditions must be true:
  1. object is not null.
  2. object is an instance of class MediaSize.
  3. This media size attribute's X dimension is equal to object's X dimension.
  4. This media size attribute's Y dimension is equal to object's Y dimension.

param
object Object to compare to.
return
True if object is equivalent to this media size attribute, false otherwise.

	return (super.equals(object) && object instanceof MediaSize);
    
public static javax.print.attribute.standard.MediaSizeNamefindMedia(float x, float y, int units)
The specified dimensions are used to locate a matching MediaSize instance from amongst all the standard MediaSize instances. If there is no exact match, the closest match is used.

The MediaSize is in turn used to locate the MediaSizeName object. This method may return null if the closest matching MediaSize has no corresponding Media instance.

This method is useful for clients which have only dimensions and want to find a Media which corresponds to the dimensions.

param
x - X dimension
param
y - Y dimension.
param
units Unit conversion factor, e.g. Size2DSyntax.INCH or Size2DSyntax.MM
return
MediaSizeName matching these dimensions, or null.
exception
IllegalArgumentException if x <= 0, y <= 0, or units < 1


	MediaSize match = MediaSize.ISO.A4;

	if (x <= 0.0f || y <= 0.0f || units < 1) {
	    throw new IllegalArgumentException("args must be +ve values");
	}

	double ls = x * x + y * y;
	double tmp_ls;
	float []dim;
	float diffx = x;
	float diffy = y;

	for (int i=0; i < sizeVector.size() ; i++) {
	    MediaSize mediaSize = (MediaSize)sizeVector.elementAt(i);
	    dim = mediaSize.getSize(units);
	    if (x == dim[0] && y == dim[1]) {
		match = mediaSize;
		break;
	    } else {
		diffx = x - dim[0];
		diffy = y - dim[1];
		tmp_ls = diffx * diffx + diffy * diffy;
		if (tmp_ls < ls) {
		    ls = tmp_ls;
		    match = mediaSize;
		}
	    }
	}

	return match.getMediaSizeName();
    
public final java.lang.ClassgetCategory()
Get the printing attribute class which is to be used as the "category" for this printing attribute value.

For class MediaSize and any vendor-defined subclasses, the category is class MediaSize itself.

return
Printing attribute class (category), an instance of class {@link java.lang.Class java.lang.Class}.

	return MediaSize.class;
    
public static javax.print.attribute.standard.MediaSizegetMediaSizeForName(javax.print.attribute.standard.MediaSizeName media)
Get the MediaSize for the specified named media.

param
media - the name of the media for which the size is sought
return
size of the media, or null if this media is not associated with any size.

	return (MediaSize)mediaMap.get(media);
    
public javax.print.attribute.standard.MediaSizeNamegetMediaSizeName()
Get the media name, if any, for this size.

return
the name for this media size, or null if no name was associated with this size (an anonymous size).

	return mediaName;
    
public final java.lang.StringgetName()
Get the name of the category of which this attribute value is an instance.

For class MediaSize and any vendor-defined subclasses, the category name is "media-size".

return
Attribute category name.

	return "media-size";