001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package javax.print.attribute.standard;
019:
020: import javax.print.attribute.Attribute;
021: import javax.print.attribute.DocAttribute;
022: import javax.print.attribute.PrintJobAttribute;
023: import javax.print.attribute.PrintRequestAttribute;
024:
025: public final class MediaPrintableArea implements DocAttribute,
026: PrintJobAttribute, PrintRequestAttribute {
027: private static final long serialVersionUID = -1597171464050795793L;
028:
029: public static final int INCH = 25400;
030:
031: public static final int MM = 1000;
032:
033: private final int x;
034:
035: private final int y;
036:
037: private final int width;
038:
039: private final int height;
040:
041: public MediaPrintableArea(int x, int y, int width, int height,
042: int units) {
043: if ((x < 0) || (y < 0) || (width <= 0) || (height <= 0)
044: || (units < 1)) {
045: throw new IllegalArgumentException(
046: "Valid values are: x >= 0, "
047: + "y >= 0, width > 0, height > 0, units >= 1");
048: }
049: this .x = x * units;
050: this .y = y * units;
051: this .width = width * units;
052: this .height = height * units;
053: }
054:
055: public MediaPrintableArea(float x, float y, float width,
056: float height, int units) {
057: if ((x < 0.0f) || (y < 0.0f) || (width <= 0.0f)
058: || (height <= 0.0f) || (units < 1)) {
059: throw new IllegalArgumentException(
060: "Valid values are: x >= 0.0, "
061: + "y >= 0.0, width > 0.0, height > 0.0, units > 1");
062: }
063: this .x = Math.round(x * units);
064: this .y = Math.round(y * units);
065: this .width = Math.round(width * units);
066: this .height = Math.round(height * units);
067: }
068:
069: @Override
070: public boolean equals(Object object) {
071: boolean outcome = false;
072: if (object instanceof MediaPrintableArea) {
073: MediaPrintableArea mpArea = (MediaPrintableArea) object;
074: if ((x == mpArea.x) && (y == mpArea.y)
075: && (width == mpArea.width)
076: && (height == mpArea.height)) {
077: outcome = true;
078: }
079: }
080: return outcome;
081: }
082:
083: public final Class<? extends Attribute> getCategory() {
084: return MediaPrintableArea.class;
085: }
086:
087: public final String getName() {
088: return "media-printable-area";
089: }
090:
091: public float getX(int units) {
092: if (units < 1) {
093: throw new IllegalArgumentException("units is less than 1");
094: }
095: return ((float) x) / units;
096: }
097:
098: public float getY(int units) {
099: if (units < 1) {
100: throw new IllegalArgumentException("units is less than 1");
101: }
102: return ((float) y) / units;
103: }
104:
105: public float getWidth(int units) {
106: if (units < 1) {
107: throw new IllegalArgumentException("units is less than 1");
108: }
109: return ((float) width) / units;
110: }
111:
112: public float getHeight(int units) {
113: if (units < 1) {
114: throw new IllegalArgumentException("units is less than 1");
115: }
116: return ((float) height) / units;
117: }
118:
119: public float[] getPrintableArea(int units) {
120: return new float[] { getX(units), getY(units), getWidth(units),
121: getHeight(units) };
122: }
123:
124: @Override
125: public int hashCode() {
126: return ((y + height) | ((x + width) << 16));
127: }
128:
129: @Override
130: public String toString() {
131: return toString(MM, "mm");
132: }
133:
134: public String toString(int units, String unitsName) {
135: if (unitsName == null) {
136: unitsName = "";
137: }
138: float[] pa = getPrintableArea(units);
139: return ("x=" + pa[0] + " y=" + pa[1] + " width=" + pa[2]
140: + " height=" + pa[3] + " " + unitsName);
141: }
142: }
|