1:
37:
38:
39: package ;
40:
41: import ;
42:
43: import ;
44: import ;
45:
46:
65: public class MediaSize extends Size2DSyntax
66: implements Attribute
67: {
68: private static final long serialVersionUID = -1967958664615414771L;
69:
70: private static ArrayList mediaCache;
71:
72: static
73: {
74: mediaCache = new ArrayList();
75:
76: MediaSize tmp = MediaSize.ISO.A0;
77: tmp = MediaSize.JIS.B0;
78: tmp = MediaSize.Engineering.A;
79: tmp = MediaSize.NA.LEGAL;
80: tmp = MediaSize.Other.EXECUTIVE;
81: }
82:
83: private MediaSizeName media;
84:
85:
94: public MediaSize(float x, float y, int units)
95: {
96: super(x, y, units);
97: mediaCache.add(this);
98: }
99:
100:
111: public MediaSize(float x, float y, int units, MediaSizeName media)
112: {
113: super(x, y, units);
114: this.media = media;
115: mediaCache.add(this);
116: }
117:
118:
127: public MediaSize(int x, int y, int units)
128: {
129: super(x, y, units);
130: mediaCache.add(this);
131: }
132:
133:
144: public MediaSize(int x, int y, int units, MediaSizeName media)
145: {
146: super(x, y, units);
147: this.media = media;
148: mediaCache.add(this);
149: }
150:
151:
156: public Class getCategory()
157: {
158: return MediaSize.class;
159: }
160:
161:
172: public static MediaSizeName findMedia(float x, float y, int units)
173: {
174: if (x <= 0.0f || y <= 0.0f)
175: throw new IllegalArgumentException(
176: "x and/or y may not be less or equal 0");
177:
178: if (units < 1)
179: throw new IllegalArgumentException("units may not be less then 1");
180:
181: MediaSize bestMatch = null;
182: int bestDistance = Integer.MAX_VALUE;
183:
184: int xMicro = (int) x * units;
185: int yMicro = (int) y * units;
186:
187: for (int i = 0; i < mediaCache.size(); i++)
188: {
189: MediaSize size = (MediaSize) mediaCache.get(i);
190: int dist = (Math.abs(size.getXMicrometers() - xMicro)
191: + Math.abs(size.getYMicrometers() - yMicro));
192:
193: if (dist < bestDistance)
194: {
195: bestMatch = size;
196: bestDistance = dist;
197: }
198: }
199:
200: return bestMatch.getMediaSizeName();
201: }
202:
203:
211: public static MediaSize getMediaSizeForName(MediaSizeName media)
212: {
213: for (int i = 0; i < mediaCache.size(); i++)
214: {
215: MediaSize size = (MediaSize) mediaCache.get(i);
216:
217: if (size.getMediaSizeName().equals(media))
218: return size;
219: }
220:
221: return null;
222: }
223:
224:
232: public boolean equals(Object obj)
233: {
234: if (!(obj instanceof MediaSize))
235: return false;
236:
237: MediaSize tmp = (MediaSize) obj;
238: return (tmp.getXMicrometers() == this.getXMicrometers()
239: && tmp.getYMicrometers() == this.getYMicrometers());
240: }
241:
242:
247: public MediaSizeName getMediaSizeName()
248: {
249: return media;
250: }
251:
252:
257: public String getName()
258: {
259: return "media-size";
260: }
261:
262:
267: public static final class ISO
268: {
269:
270:
273: public static final MediaSize A0 = new MediaSize(841, 1189,
274: MediaSize.MM,
275: MediaSizeName.ISO_A0);
276:
277:
280: public static final MediaSize A1 = new MediaSize(594, 841, MediaSize.MM,
281: MediaSizeName.ISO_A1);
282:
283:
286: public static final MediaSize A2 = new MediaSize(420, 594, MediaSize.MM, MediaSizeName.ISO_A2);
287:
288:
291: public static final MediaSize A3 = new MediaSize(297, 420, MediaSize.MM, MediaSizeName.ISO_A3);
292:
293:
296: public static final MediaSize A4 = new MediaSize(210, 297, MediaSize.MM, MediaSizeName.ISO_A4);
297:
298:
301: public static final MediaSize A5 = new MediaSize(148, 210, MediaSize.MM, MediaSizeName.ISO_A5);
302:
303:
306: public static final MediaSize A6 = new MediaSize(105, 148, MediaSize.MM, MediaSizeName.ISO_A6);
307:
308:
311: public static final MediaSize A7 = new MediaSize(74, 105, MediaSize.MM, MediaSizeName.ISO_A7);
312:
313:
316: public static final MediaSize A8 = new MediaSize(52, 74, MediaSize.MM, MediaSizeName.ISO_A8);
317:
318:
321: public static final MediaSize A9 = new MediaSize(37, 52, MediaSize.MM, MediaSizeName.ISO_A9);
322:
323:
326: public static final MediaSize A10 = new MediaSize(26, 37, MediaSize.MM, MediaSizeName.ISO_A10);
327:
328:
329:
332: public static final MediaSize B0 = new MediaSize(1000, 1414, MediaSize.MM, MediaSizeName.ISO_B0);
333:
334:
337: public static final MediaSize B1 = new MediaSize(707, 1000, MediaSize.MM, MediaSizeName.ISO_B1);
338:
339:
342: public static final MediaSize B2 = new MediaSize(500, 707, MediaSize.MM, MediaSizeName.ISO_B2);
343:
344:
347: public static final MediaSize B3 = new MediaSize(353, 500, MediaSize.MM, MediaSizeName.ISO_B3);
348:
349:
352: public static final MediaSize B4 = new MediaSize(250, 353, MediaSize.MM, MediaSizeName.ISO_B4);
353:
354:
357: public static final MediaSize B5 = new MediaSize(176, 250, MediaSize.MM, MediaSizeName.ISO_B5);
358:
359:
362: public static final MediaSize B6 = new MediaSize(125, 176, MediaSize.MM, MediaSizeName.ISO_B6);
363:
364:
367: public static final MediaSize B7 = new MediaSize(88, 125, MediaSize.MM, MediaSizeName.ISO_B7);
368:
369:
372: public static final MediaSize B8 = new MediaSize(62, 88, MediaSize.MM, MediaSizeName.ISO_B8);
373:
374:
377: public static final MediaSize B9 = new MediaSize(44, 62, MediaSize.MM, MediaSizeName.ISO_B9);
378:
379:
382: public static final MediaSize B10 = new MediaSize(31, 44, MediaSize.MM, MediaSizeName.ISO_B10);
383:
384:
387: public static final MediaSize C3 = new MediaSize(324, 458, MediaSize.MM, MediaSizeName.ISO_C3);
388:
389:
392: public static final MediaSize C4 = new MediaSize(229, 324, MediaSize.MM, MediaSizeName.ISO_C4);
393:
394:
397: public static final MediaSize C5 = new MediaSize(162, 229, MediaSize.MM, MediaSizeName.ISO_C5);
398:
399:
402: public static final MediaSize C6 = new MediaSize(114, 162, MediaSize.MM, MediaSizeName.ISO_C6);
403:
404:
407: public static final MediaSize DESIGNATED_LONG =
408: new MediaSize(324, 458, MediaSize.MM, MediaSizeName.ISO_DESIGNATED_LONG);
409: }
410:
411:
416: public static final class NA
417: {
418:
421: public static final MediaSize LEGAL = new MediaSize(8.5f, 14f, MediaSize.INCH,
422: MediaSizeName.NA_LEGAL);
423:
424:
427: public static final MediaSize LETTER = new MediaSize(8.5f, 11f, MediaSize.INCH,
428: MediaSizeName.NA_LETTER);
429:
430:
433: public static final MediaSize NA_5X7 = new MediaSize(5, 7, MediaSize.INCH,
434: MediaSizeName.NA_5X7);
435:
436:
439: public static final MediaSize NA_8X10 = new MediaSize(8, 10, MediaSize.INCH,
440: MediaSizeName.NA_8X10);
441:
442:
445: public static final MediaSize NA_6X9_ENVELOPE = new MediaSize(6f, 9f,
446: MediaSize.INCH,
447: MediaSizeName.NA_6X9_ENVELOPE);
448:
449:
452: public static final MediaSize NA_7X9_ENVELOPE = new MediaSize(7f, 9f,
453: MediaSize.INCH,
454: MediaSizeName.NA_7X9_ENVELOPE);
455:
456:
459: public static final MediaSize NA_9x11_ENVELOPE = new MediaSize(9f, 11f,
460: MediaSize.INCH,
461: MediaSizeName.NA_9X11_ENVELOPE);
462:
463:
466: public static final MediaSize NA_9x12_ENVELOPE = new MediaSize(9f, 12f,
467: MediaSize.INCH,
468: MediaSizeName.NA_9X12_ENVELOPE);
469:
470:
471:
474: public static final MediaSize NA_10x13_ENVELOPE = new MediaSize(10f, 13f,
475: MediaSize.INCH,
476: MediaSizeName.NA_10X13_ENVELOPE);
477:
478:
481: public static final MediaSize NA_10x14_ENVELOPE = new MediaSize(10f, 14f,
482: MediaSize.INCH,
483: MediaSizeName.NA_10X14_ENVELOPE);
484:
485:
488: public static final MediaSize NA_10X15_ENVELOPE = new MediaSize(10f, 15f,
489: MediaSize.INCH,
490: MediaSizeName.NA_10X15_ENVELOPE);
491:
492:
495: public static final MediaSize NA_NUMBER_9_ENVELOPE = new MediaSize(3.875f, 8.875f,
496: MediaSize.INCH,
497: MediaSizeName.NA_NUMBER_9_ENVELOPE);
498:
499:
502: public static final MediaSize NA_NUMBER_10_ENVELOPE =
503: new MediaSize(4.125f, 9.5f, MediaSize.INCH, MediaSizeName.NA_NUMBER_10_ENVELOPE);
504:
505:
508: public static final MediaSize NA_NUMBER_11_ENVELOPE = new MediaSize(4.5f, 10.375f, MediaSize.INCH,
509: MediaSizeName.NA_NUMBER_11_ENVELOPE);
510:
511:
514: public static final MediaSize NA_NUMBER_12_ENVELOPE = new MediaSize(4.75f, 11f,
515: MediaSize.INCH,
516: MediaSizeName.NA_NUMBER_12_ENVELOPE);
517:
518:
521: public static final MediaSize NA_NUMBER_14_ENVELOPE = new MediaSize(5f, 11.5f,
522: MediaSize.INCH,
523: MediaSizeName.NA_NUMBER_14_ENVELOPE);
524: }
525:
526:
531: public static final class Engineering
532: {
533:
536: public static final MediaSize A = new MediaSize(8.5f, 11f,
537: MediaSize.INCH, MediaSizeName.A);
538:
539:
542: public static final MediaSize B = new MediaSize(11f, 17f,
543: MediaSize.INCH, MediaSizeName.B);
544:
545:
548: public static final MediaSize C = new MediaSize(17f, 22f,
549: MediaSize.INCH, MediaSizeName.C);
550:
551:
554: public static final MediaSize D = new MediaSize(22f, 34f,
555: MediaSize.INCH, MediaSizeName.D);
556:
557:
560: public static final MediaSize E = new MediaSize(34f, 44f,
561: MediaSize.INCH, MediaSizeName.E);
562: }
563:
564:
569: public static final class JIS
570: {
571:
575: public static final MediaSize B0 = new MediaSize(1030, 1456, MediaSize.MM, MediaSizeName.JIS_B0);
576:
577:
581: public static final MediaSize B1 = new MediaSize(728, 1030, MediaSize.MM, MediaSizeName.JIS_B1);
582:
583:
587: public static final MediaSize B2 = new MediaSize(515, 728, MediaSize.MM, MediaSizeName.JIS_B2);
588:
589:
593: public static final MediaSize B3 = new MediaSize(364, 515, MediaSize.MM, MediaSizeName.JIS_B3);
594:
595:
599: public static final MediaSize B4 = new MediaSize(257, 364, MediaSize.MM, MediaSizeName.JIS_B4);
600:
601:
605: public static final MediaSize B5 = new MediaSize(182, 257, MediaSize.MM, MediaSizeName.JIS_B5);
606:
607:
611: public static final MediaSize B6 = new MediaSize(128, 182, MediaSize.MM, MediaSizeName.JIS_B6);
612:
613:
617: public static final MediaSize B7 = new MediaSize(91, 128, MediaSize.MM, MediaSizeName.JIS_B7);
618:
619:
623: public static final MediaSize B8 = new MediaSize(64, 91, MediaSize.MM, MediaSizeName.JIS_B8);
624:
625:
629: public static final MediaSize B9 = new MediaSize(45, 64, MediaSize.MM, MediaSizeName.JIS_B9);
630:
631:
635: public static final MediaSize B10 = new MediaSize(32, 45, MediaSize.MM, MediaSizeName.JIS_B10);
636:
637:
640: public static final MediaSize CHOU_1 = new MediaSize(142, 332, MediaSize.MM);
641:
642:
645: public static final MediaSize CHOU_2 = new MediaSize(119, 227, MediaSize.MM);
646:
647:
650: public static final MediaSize CHOU_3 = new MediaSize(120, 235, MediaSize.MM);
651:
652:
655: public static final MediaSize CHOU_4 = new MediaSize(90, 205, MediaSize.MM);
656:
657:
660: public static final MediaSize CHOU_30 = new MediaSize(92, 235, MediaSize.MM);
661:
662:
665: public static final MediaSize CHOU_40 = new MediaSize(90, 225, MediaSize.MM);
666:
667:
670: public static final MediaSize KAKU_0 = new MediaSize(287, 382, MediaSize.MM);
671:
672:
675: public static final MediaSize KAKU_1 = new MediaSize(270, 382, MediaSize.MM);
676:
677:
680: public static final MediaSize KAKU_2 = new MediaSize(240, 332, MediaSize.MM);
681:
682:
685: public static final MediaSize KAKU_20 = new MediaSize(229, 324, MediaSize.MM);
686:
687:
690: public static final MediaSize KAKU_3 = new MediaSize(216, 227, MediaSize.MM);
691:
692:
695: public static final MediaSize KAKU_4 = new MediaSize(197, 267, MediaSize.MM);
696:
697:
700: public static final MediaSize KAKU_5 = new MediaSize(190, 240, MediaSize.MM);
701:
702:
705: public static final MediaSize KAKU_6 = new MediaSize(162, 229, MediaSize.MM);
706:
707:
710: public static final MediaSize KAKU_7 = new MediaSize(142, 205, MediaSize.MM);
711:
712:
715: public static final MediaSize KAKU_8 = new MediaSize(119, 197, MediaSize.MM);
716:
717:
720: public static final MediaSize KAKU_A4 = new MediaSize(228, 312, MediaSize.MM);
721:
722:
725: public static final MediaSize YOU_1 = new MediaSize(120, 176, MediaSize.MM);
726:
727:
730: public static final MediaSize YOU_2 = new MediaSize(114, 162, MediaSize.MM);
731:
732:
735: public static final MediaSize YOU_3 = new MediaSize(98, 148, MediaSize.MM);
736:
737:
740: public static final MediaSize YOU_4 = new MediaSize(105, 235, MediaSize.MM);
741:
742:
745: public static final MediaSize YOU_5 = new MediaSize(95, 217, MediaSize.MM);
746:
747:
750: public static final MediaSize YOU_6 = new MediaSize(98, 190, MediaSize.MM);
751:
752:
755: public static final MediaSize YOU_7 = new MediaSize(92, 165, MediaSize.MM);
756: }
757:
758:
763: public static final class Other
764: {
765:
768: public static final MediaSize EXECUTIVE = new MediaSize(7.25f, 10.5f,
769: MediaSize.INCH, MediaSizeName.EXECUTIVE);
770:
771:
774: public static final MediaSize FOLIO = new MediaSize(8.5f, 13f, MediaSize.INCH, MediaSizeName.FOLIO);
775:
776:
779: public static final MediaSize QUARTO = new MediaSize(8.5f, 10.83f, MediaSize.INCH,
780: MediaSizeName.QUARTO);
781:
782:
785: public static final MediaSize INVOICE = new MediaSize(5.5f, 8.5f,
786: MediaSize.INCH, MediaSizeName.INVOICE);
787:
788:
791: public static final MediaSize LEDGER = new MediaSize(11, 17, MediaSize.INCH,
792: MediaSizeName.LEDGER);
793:
794:
797: public static final MediaSize MONARCH_ENVELOPE = new MediaSize(3.87f, 7.5f,
798: MediaSize.INCH,
799: MediaSizeName.MONARCH_ENVELOPE);
800:
801:
804: public static final MediaSize PERSONAL_ENVELOPE = new MediaSize(3.625f, 6.5f, MediaSize.INCH,
805: MediaSizeName.PERSONAL_ENVELOPE);
806:
807:
810: public static final MediaSize ITALY_ENVELOPE = new MediaSize(110, 230,
811: MediaSize.MM,
812: MediaSizeName.ITALY_ENVELOPE);
813:
814:
817: public static final MediaSize JAPANESE_POSTCARD = new MediaSize(100, 148, MediaSize.MM, MediaSizeName.JAPANESE_POSTCARD);
818:
819:
822: public static final MediaSize JAPANESE_DOUBLE_POSTCARD = new MediaSize(148, 200, MediaSize.MM, MediaSizeName.JAPANESE_DOUBLE_POSTCARD);
823: }
824: }