OSDN Git Service

Initial revision
[pf3gnuchains/gcc-fork.git] / libjava / classpath / java / awt / PageAttributes.java
1 /* PageAttributes.java -- 
2    Copyright (C) 2002, 2005  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;
40
41 import java.util.Locale;
42
43 /**
44  * Missing Documentation
45  *
46  * @author Eric Blake (ebb9@email.byu.edu)
47  * @since 1.3
48  * @status updated to 1.4, but missing documentation
49  */
50 public final class PageAttributes implements Cloneable
51 {
52   public static final class ColorType extends AttributeValue
53   {
54     private static final String[] NAMES = { "color", "monochrome" };
55     public static final ColorType COLOR = new ColorType(0);
56     public static final ColorType MONOCHROME = new ColorType(1);
57     private ColorType(int value)
58     {
59       super(value, NAMES);
60     }
61   } // class ColorType
62   public static final class MediaType extends AttributeValue
63   {
64     private static final String[] NAMES
65       = { "iso-4a0", "iso-2a0", "iso-a0", "iso-a1", "iso-a2", "iso-a3",
66           "iso-a4", "iso-a5", "iso-a6", "iso-a7", "iso-a8", "iso-a9",
67           "iso-a10", "iso-b0", "iso-b1", "iso-b2", "iso-b3", "iso-b4",
68           "iso-b5", "iso-b6", "iso-b7", "iso-b8", "iso-b9", "iso-b10",
69           "jis-b0", "jis-b1", "jis-b2", "jis-b3", "jis-b4", "jis-b5",
70           "jis-b6", "jis-b7", "jis-b8", "jis-b9", "jis-b10", "iso-c0",
71           "iso-c1", "iso-c2", "iso-c3", "iso-c4", "iso-c5", "iso-c6",
72           "iso-c7", "iso-c8", "iso-c9", "iso-c10", "iso-designated-long",
73           "executive", "folio", "invoice", "ledger", "na-letter", "na-legal",
74           "quarto", "a", "b", "c", "d", "e", "na-10x15-envelope",
75           "na-10x14-envelope", "na-10x13-envelope", "na-9x12-envelope",
76           "na-9x11-envelope", "na-7x9-envelope", "na-6x9-envelope",
77           "na-number-9-envelope", "na-number-10-envelope",
78           "na-number-11-envelope", "na-number-12-envelope",
79           "na-number-14-envelope", "invite-envelope", "italy-envelope",
80           "monarch-envelope", "personal-envelope" };
81     public static final MediaType ISO_4A0 = new MediaType(0);
82     public static final MediaType ISO_2A0 = new MediaType(1);
83     public static final MediaType ISO_A0 = new MediaType(2);
84     public static final MediaType ISO_A1 = new MediaType(3);
85     public static final MediaType ISO_A2 = new MediaType(4);
86     public static final MediaType ISO_A3 = new MediaType(5);
87     public static final MediaType ISO_A4 = new MediaType(6);
88     public static final MediaType ISO_A5 = new MediaType(7);
89     public static final MediaType ISO_A6 = new MediaType(8);
90     public static final MediaType ISO_A7 = new MediaType(9);
91     public static final MediaType ISO_A8 = new MediaType(10);
92     public static final MediaType ISO_A9 = new MediaType(11);
93     public static final MediaType ISO_A10 = new MediaType(12);
94     public static final MediaType ISO_B0 = new MediaType(13);
95     public static final MediaType ISO_B1 = new MediaType(14);
96     public static final MediaType ISO_B2 = new MediaType(15);
97     public static final MediaType ISO_B3 = new MediaType(16);
98     public static final MediaType ISO_B4 = new MediaType(17);
99     public static final MediaType ISO_B5 = new MediaType(18);
100     public static final MediaType ISO_B6 = new MediaType(19);
101     public static final MediaType ISO_B7 = new MediaType(20);
102     public static final MediaType ISO_B8 = new MediaType(21);
103     public static final MediaType ISO_B9 = new MediaType(22);
104     public static final MediaType ISO_B10 = new MediaType(23);
105     public static final MediaType JIS_B0 = new MediaType(24);
106     public static final MediaType JIS_B1 = new MediaType(25);
107     public static final MediaType JIS_B2 = new MediaType(26);
108     public static final MediaType JIS_B3 = new MediaType(27);
109     public static final MediaType JIS_B4 = new MediaType(28);
110     public static final MediaType JIS_B5 = new MediaType(29);
111     public static final MediaType JIS_B6 = new MediaType(30);
112     public static final MediaType JIS_B7 = new MediaType(31);
113     public static final MediaType JIS_B8 = new MediaType(32);
114     public static final MediaType JIS_B9 = new MediaType(33);
115     public static final MediaType JIS_B10 = new MediaType(34);
116     public static final MediaType ISO_C0 = new MediaType(35);
117     public static final MediaType ISO_C1 = new MediaType(36);
118     public static final MediaType ISO_C2 = new MediaType(37);
119     public static final MediaType ISO_C3 = new MediaType(38);
120     public static final MediaType ISO_C4 = new MediaType(39);
121     public static final MediaType ISO_C5 = new MediaType(40);
122     public static final MediaType ISO_C6 = new MediaType(41);
123     public static final MediaType ISO_C7 = new MediaType(42);
124     public static final MediaType ISO_C8 = new MediaType(43);
125     public static final MediaType ISO_C9 = new MediaType(44);
126     public static final MediaType ISO_C10 = new MediaType(45);
127     public static final MediaType ISO_DESIGNATED_LONG = new MediaType(46);
128     public static final MediaType EXECUTIVE = new MediaType(47);
129     public static final MediaType FOLIO = new MediaType(48);
130     public static final MediaType INVOICE = new MediaType(49);
131     public static final MediaType LEDGER = new MediaType(50);
132     public static final MediaType NA_LETTER = new MediaType(51);
133     public static final MediaType NA_LEGAL = new MediaType(52);
134     public static final MediaType QUARTO = new MediaType(53);
135     public static final MediaType A = new MediaType(54);
136     public static final MediaType B = new MediaType(55);
137     public static final MediaType C = new MediaType(56);
138     public static final MediaType D = new MediaType(57);
139     public static final MediaType E = new MediaType(58);
140     public static final MediaType NA_10X15_ENVELOPE = new MediaType(59);
141     public static final MediaType NA_10X14_ENVELOPE = new MediaType(60);
142     public static final MediaType NA_10X13_ENVELOPE = new MediaType(61);
143     public static final MediaType NA_9X12_ENVELOPE = new MediaType(62);
144     public static final MediaType NA_9X11_ENVELOPE = new MediaType(63);
145     public static final MediaType NA_7X9_ENVELOPE = new MediaType(64);
146     public static final MediaType NA_6X9_ENVELOPE = new MediaType(65);
147     public static final MediaType NA_NUMBER_9_ENVELOPE = new MediaType(66);
148     public static final MediaType NA_NUMBER_10_ENVELOPE = new MediaType(67);
149     public static final MediaType NA_NUMBER_11_ENVELOPE = new MediaType(68);
150     public static final MediaType NA_NUMBER_12_ENVELOPE = new MediaType(69);
151     public static final MediaType NA_NUMBER_14_ENVELOPE = new MediaType(70);
152     public static final MediaType INVITE_ENVELOPE = new MediaType(71);
153     public static final MediaType ITALY_ENVELOPE = new MediaType(72);
154     public static final MediaType MONARCH_ENVELOPE = new MediaType(73);
155     public static final MediaType PERSONAL_ENVELOPE = new MediaType(74);
156     public static final MediaType A0 = ISO_A0;
157     public static final MediaType A1 = ISO_A1;
158     public static final MediaType A2 = ISO_A2;
159     public static final MediaType A3 = ISO_A3;
160     public static final MediaType A4 = ISO_A4;
161     public static final MediaType A5 = ISO_A5;
162     public static final MediaType A6 = ISO_A6;
163     public static final MediaType A7 = ISO_A7;
164     public static final MediaType A8 = ISO_A8;
165     public static final MediaType A9 = ISO_A9;
166     public static final MediaType A10 = ISO_A10;
167     public static final MediaType B0 = ISO_B0;
168     public static final MediaType B1 = ISO_B1;
169     public static final MediaType B2 = ISO_B2;
170     public static final MediaType B3 = ISO_B3;
171     public static final MediaType B4 = ISO_B4;
172     public static final MediaType ISO_B4_ENVELOPE = ISO_B4;
173     public static final MediaType B5 = ISO_B5;
174     public static final MediaType ISO_B5_ENVELOPE = ISO_B4;
175     public static final MediaType B6 = ISO_B6;
176     public static final MediaType B7 = ISO_B7;
177     public static final MediaType B8 = ISO_B8;
178     public static final MediaType B9 = ISO_B9;
179     public static final MediaType B10 = ISO_B10;
180     public static final MediaType C0 = ISO_B0;
181     public static final MediaType ISO_C0_ENVELOPE = ISO_C0;
182     public static final MediaType C1 = ISO_C1;
183     public static final MediaType ISO_C1_ENVELOPE = ISO_C1;
184     public static final MediaType C2 = ISO_C2;
185     public static final MediaType ISO_C2_ENVELOPE = ISO_C2;
186     public static final MediaType C3 = ISO_C3;
187     public static final MediaType ISO_C3_ENVELOPE = ISO_C3;
188     public static final MediaType C4 = ISO_C4;
189     public static final MediaType ISO_C4_ENVELOPE = ISO_C4;
190     public static final MediaType C5 = ISO_C5;
191     public static final MediaType ISO_C5_ENVELOPE = ISO_C5;
192     public static final MediaType C6 = ISO_C6;
193     public static final MediaType ISO_C6_ENVELOPE = ISO_C6;
194     public static final MediaType C7 = ISO_C7;
195     public static final MediaType ISO_C7_ENVELOPE = ISO_C7;
196     public static final MediaType C8 = ISO_C8;
197     public static final MediaType ISO_C8_ENVELOPE = ISO_C8;
198     public static final MediaType C9 = ISO_C9;
199     public static final MediaType ISO_C9_ENVELOPE = ISO_C9;
200     public static final MediaType C10 = ISO_C10;
201     public static final MediaType ISO_C10_ENVELOPE = ISO_C10;
202     public static final MediaType ISO_DESIGNATED_LONG_ENVELOPE
203       = ISO_DESIGNATED_LONG;
204     public static final MediaType STATEMENT = INVOICE;
205     public static final MediaType TABLOID = LEDGER;
206     public static final MediaType LETTER = NA_LETTER;
207     public static final MediaType NOTE = NA_LETTER;
208     public static final MediaType LEGAL = NA_LEGAL;
209     public static final MediaType ENV_10X15 = NA_10X15_ENVELOPE;
210     public static final MediaType ENV_10X14 = NA_10X14_ENVELOPE;
211     public static final MediaType ENV_10X13 = NA_10X13_ENVELOPE;
212     public static final MediaType ENV_9X12 = NA_9X12_ENVELOPE;
213     public static final MediaType ENV_9X11 = NA_9X11_ENVELOPE;
214     public static final MediaType ENV_7X9 = NA_7X9_ENVELOPE;
215     public static final MediaType ENV_6X9 = NA_6X9_ENVELOPE;
216     public static final MediaType ENV_9 = NA_NUMBER_9_ENVELOPE;
217     public static final MediaType ENV_10 = NA_NUMBER_10_ENVELOPE;
218     public static final MediaType ENV_11 = NA_NUMBER_11_ENVELOPE;
219     public static final MediaType ENV_12 = NA_NUMBER_12_ENVELOPE;
220     public static final MediaType ENV_14 = NA_NUMBER_14_ENVELOPE;
221     public static final MediaType ENV_INVITE = INVITE_ENVELOPE;
222     public static final MediaType ENV_ITALY = ITALY_ENVELOPE;
223     public static final MediaType ENV_MONARCH = MONARCH_ENVELOPE;
224     public static final MediaType ENV_PERSONAL = PERSONAL_ENVELOPE;
225     public static final MediaType INVITE = INVITE_ENVELOPE;
226     public static final MediaType ITALY = ITALY_ENVELOPE;
227     public static final MediaType MONARCH = MONARCH_ENVELOPE;
228     public static final MediaType PERSONAL = PERSONAL_ENVELOPE;
229     private MediaType(int value)
230     {
231       super(value, NAMES);
232     }
233   } // class MediaType
234   public static final class OrientationRequestedType extends AttributeValue
235   {
236     private static final String[] NAMES = { "portrait", "landscape" };
237     public static final OrientationRequestedType PORTRAIT
238       = new OrientationRequestedType(0);
239     public static final OrientationRequestedType LANDSCAPE
240       = new OrientationRequestedType(1);
241     private OrientationRequestedType(int value)
242     {
243       super(value, NAMES);
244     }
245   } // class OrientationRequestedType
246   public static final class OriginType extends AttributeValue
247   {
248     private static final String[] NAMES = { "physical", "printable" };
249     public static final OriginType PHYSICAL = new OriginType(0);
250     public static final OriginType PRINTABLE = new OriginType(1);
251     private OriginType(int value)
252     {
253       super(value, NAMES);
254     }
255   } // class OriginType
256   public static final class PrintQualityType extends AttributeValue
257   {
258     private static final String[] NAMES = { "high", "normal", "draft" };
259     public static final PrintQualityType HIGH = new PrintQualityType(0);
260     public static final PrintQualityType NORMAL = new PrintQualityType(1);
261     public static final PrintQualityType DRAFT = new PrintQualityType(2);
262     private PrintQualityType(int value)
263     {
264       super(value, NAMES);
265     }
266   } // class PrintQualityType
267
268 \f
269   private ColorType color;
270   private MediaType media;
271   private OrientationRequestedType orientation;
272   private OriginType origin;
273   private PrintQualityType quality;
274   private int resolutionX;
275   private int resolutionY;
276   private int resolutionScale;
277   public PageAttributes()
278   {
279     color = ColorType.MONOCHROME;
280     setMediaToDefault();
281     orientation = OrientationRequestedType.PORTRAIT;
282     origin = OriginType.PHYSICAL;
283     quality = PrintQualityType.NORMAL;
284     setPrinterResolutionToDefault();
285   }
286
287   public PageAttributes(PageAttributes attr)
288   {
289     set(attr);
290   }
291
292   public PageAttributes(ColorType color, MediaType media,
293                         OrientationRequestedType orientation,
294                         OriginType origin, PrintQualityType quality,
295                         int[] resolution)
296   {
297     if (color == null || media == null || orientation == null
298         || origin == null || quality == null)
299       throw new IllegalArgumentException();
300     setPrinterResolution(resolution);
301     this.color = color;
302     this.media = media;
303     this.orientation = orientation;
304     this.origin = origin;
305     this.quality = quality;
306   }
307
308   public Object clone()
309   {
310     return new PageAttributes(this);
311   }
312
313   public void set(PageAttributes attr)
314   {
315     color = attr.color;
316     media = attr.media;
317     orientation = attr.orientation;
318     origin = attr.origin;
319     quality = attr.quality;
320     resolutionX = attr.resolutionX;
321     resolutionY = attr.resolutionY;
322     resolutionScale = attr.resolutionScale;
323   }
324
325   public ColorType getColor()
326   {
327     return color;
328   }
329
330   public void setColor(ColorType color)
331   {
332     if (color == null)
333       throw new IllegalArgumentException();
334     this.color = color;
335   }
336
337   public MediaType getMedia()
338   {
339     return media;
340   }
341
342   public void setMedia(MediaType media)
343   {
344     if (media == null)
345       throw new IllegalArgumentException();
346     this.media = media;
347   }
348
349   public void setMediaToDefault()
350   {
351     String country = Locale.getDefault().getCountry();
352     media = ("US".equals(country) || "CA".equals(country)) ? MediaType.LETTER
353       : MediaType.A4;
354   }
355
356   public OrientationRequestedType getOrientationRequested()
357   {
358     return orientation;
359   }
360
361   public void setOrientationRequested(OrientationRequestedType orientation)
362   {
363     if (orientation == null)
364       throw new IllegalArgumentException();
365     this.orientation = orientation;
366   }
367
368   public void setOrientationRequested(int orientation)
369   {
370     if (orientation == 3)
371       this.orientation = OrientationRequestedType.PORTRAIT;
372     else if (orientation == 4)
373       this.orientation = OrientationRequestedType.LANDSCAPE;
374     else
375       throw new IllegalArgumentException();
376   }
377
378   public void setOrientationRequestedToDefault()
379   {
380     orientation = OrientationRequestedType.PORTRAIT;
381   }
382
383   public OriginType getOrigin()
384   {
385     return origin;
386   }
387
388   public void setOrigin(OriginType origin)
389   {
390     if (origin == null)
391       throw new IllegalArgumentException();
392     this.origin = origin;
393   }
394
395   public PrintQualityType getPrintQuality()
396   {
397     return quality;
398   }
399
400   public void setPrintQuality(PrintQualityType quality)
401   {
402     if (quality == null)
403       throw new IllegalArgumentException();
404     this.quality = quality;
405   }
406
407   public void setPrintQuality(int quality)
408   {
409     if (quality == 3)
410       this.quality = PrintQualityType.DRAFT;
411     else if (quality == 4)
412       this.quality = PrintQualityType.NORMAL;
413     else if (quality == 5)
414       this.quality = PrintQualityType.HIGH;
415     else
416       throw new IllegalArgumentException();
417   }
418
419   public void setPrintQualityToDefault()
420   {
421     quality = PrintQualityType.NORMAL;
422   }
423
424   public int[] getPrinterResolution()
425   {
426     return new int[] { resolutionX, resolutionY, resolutionScale };
427   }
428
429   public void setPrinterResolution(int[] resolution)
430   {
431     if (resolution == null || resolution.length != 3 || resolution[0] <= 0
432         || resolution[1] <= 0 || resolution[2] < 3 || resolution[2] > 4)
433       throw new IllegalArgumentException();
434     resolutionX = resolution[0];
435     resolutionY = resolution[1];
436     resolutionScale = resolution[2];
437   }
438
439   public void setPrinterResolution(int resolution)
440   {
441     if (resolution <= 0)
442       throw new IllegalArgumentException();
443     resolutionX = resolution;
444     resolutionY = resolution;
445     resolutionScale = 3;
446   }
447
448   public void setPrinterResolutionToDefault()
449   {
450     resolutionX = 72;
451     resolutionY = 72;
452     resolutionScale = 3;
453   }
454
455   public boolean equals(Object o)
456   {
457     if (this == o)
458       return true;
459     if (! (o instanceof PageAttributes))
460       return false;
461     PageAttributes pa = (PageAttributes) o;
462     return color == pa.color && media == pa.media
463       && orientation == pa.orientation && origin == pa.origin
464       && quality == pa.quality && resolutionX == pa.resolutionX
465       && resolutionY == pa.resolutionY
466       && resolutionScale == pa.resolutionScale;
467   }
468   public int hashCode()
469   {
470     return (color.value << 31) ^ (media.value << 24)
471       ^ (orientation.value << 23) ^ (origin.value << 22)
472       ^ (quality.value << 20) ^ (resolutionScale << 19)
473       ^ (resolutionY << 10) ^ resolutionX;
474   }
475   public String toString()
476   {
477     return "color=" + color + ",media=" + media + ",orientation-requested="
478       + orientation + ",origin=" + origin + ",print-quality=" + quality
479       + ",printer-resolution=[" + resolutionX + ',' + resolutionY + ','
480       + resolutionScale + ']';
481   }
482 } // class PageAttributes