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:
77:
78:
79:
80:
81:
82:
83: MediaSize tmp = MediaSize.ISO.A0;
84: tmp = MediaSize.JIS.B0;
85: tmp = MediaSize.Engineering.A;
86: tmp = MediaSize.NA.LEGAL;
87: tmp = MediaSize.Other.EXECUTIVE;
88: }
89:
90: private MediaSizeName mediaName;
91:
92:
106: public MediaSize(float x, float y, int units)
107: {
108: super(x, y, units);
109: mediaCache.add(this);
110: }
111:
112:
128: public MediaSize(float x, float y, int units, MediaSizeName media)
129: {
130: super(x, y, units);
131: mediaName = media;
132: mediaCache.add(this);
133: }
134:
135:
149: public MediaSize(int x, int y, int units)
150: {
151: super(x, y, units);
152: mediaCache.add(this);
153: }
154:
155:
171: public MediaSize(int x, int y, int units, MediaSizeName media)
172: {
173: super(x, y, units);
174: mediaName = media;
175: mediaCache.add(this);
176: }
177:
178:
183: public final Class getCategory()
184: {
185: return MediaSize.class;
186: }
187:
188:
199: public static MediaSizeName findMedia(float x, float y, int units)
200: {
201: if (x <= 0.0f || y <= 0.0f)
202: throw new IllegalArgumentException(
203: "x and/or y may not be less or equal 0");
204:
205: if (units < 1)
206: throw new IllegalArgumentException("units may not be less then 1");
207:
208: MediaSize bestMatch = null;
209: int bestDistance = Integer.MAX_VALUE;
210:
211: int xMicro = (int) x * units;
212: int yMicro = (int) y * units;
213:
214: for (int i = 0; i < mediaCache.size(); i++)
215: {
216: MediaSize size = (MediaSize) mediaCache.get(i);
217: int dist = (Math.abs(size.getXMicrometers() - xMicro)
218: + Math.abs(size.getYMicrometers() - yMicro));
219:
220: if (dist < bestDistance)
221: {
222: bestMatch = size;
223: bestDistance = dist;
224: }
225: }
226:
227: return bestMatch.getMediaSizeName();
228: }
229:
230:
238: public static MediaSize getMediaSizeForName(MediaSizeName media)
239: {
240: for (int i = 0; i < mediaCache.size(); i++)
241: {
242: MediaSize size = (MediaSize) mediaCache.get(i);
243:
244: if (size.getMediaSizeName().equals(media))
245: return size;
246: }
247:
248: return null;
249: }
250:
251:
259: public boolean equals(Object obj)
260: {
261: if (!(obj instanceof MediaSize))
262: return false;
263:
264: MediaSize tmp = (MediaSize) obj;
265: return (tmp.getXMicrometers() == this.getXMicrometers()
266: && tmp.getYMicrometers() == this.getYMicrometers());
267: }
268:
269:
274: public MediaSizeName getMediaSizeName()
275: {
276: return mediaName;
277: }
278:
279:
284: public final String getName()
285: {
286: return "media-size";
287: }
288:
289:
294: public static final class ISO
295: {
296: private ISO()
297: {
298:
299: }
300:
301:
304: public static final MediaSize A0 = new MediaSize(841, 1189,
305: MediaSize.MM,
306: MediaSizeName.ISO_A0);
307:
308:
311: public static final MediaSize A1 = new MediaSize(594, 841, MediaSize.MM,
312: MediaSizeName.ISO_A1);
313:
314:
317: public static final MediaSize A2 = new MediaSize(420, 594, MediaSize.MM, MediaSizeName.ISO_A2);
318:
319:
322: public static final MediaSize A3 = new MediaSize(297, 420, MediaSize.MM, MediaSizeName.ISO_A3);
323:
324:
327: public static final MediaSize A4 = new MediaSize(210, 297, MediaSize.MM, MediaSizeName.ISO_A4);
328:
329:
332: public static final MediaSize A5 = new MediaSize(148, 210, MediaSize.MM, MediaSizeName.ISO_A5);
333:
334:
337: public static final MediaSize A6 = new MediaSize(105, 148, MediaSize.MM, MediaSizeName.ISO_A6);
338:
339:
342: public static final MediaSize A7 = new MediaSize(74, 105, MediaSize.MM, MediaSizeName.ISO_A7);
343:
344:
347: public static final MediaSize A8 = new MediaSize(52, 74, MediaSize.MM, MediaSizeName.ISO_A8);
348:
349:
352: public static final MediaSize A9 = new MediaSize(37, 52, MediaSize.MM, MediaSizeName.ISO_A9);
353:
354:
357: public static final MediaSize A10 = new MediaSize(26, 37, MediaSize.MM, MediaSizeName.ISO_A10);
358:
359:
360:
363: public static final MediaSize B0 = new MediaSize(1000, 1414, MediaSize.MM, MediaSizeName.ISO_B0);
364:
365:
368: public static final MediaSize B1 = new MediaSize(707, 1000, MediaSize.MM, MediaSizeName.ISO_B1);
369:
370:
373: public static final MediaSize B2 = new MediaSize(500, 707, MediaSize.MM, MediaSizeName.ISO_B2);
374:
375:
378: public static final MediaSize B3 = new MediaSize(353, 500, MediaSize.MM, MediaSizeName.ISO_B3);
379:
380:
383: public static final MediaSize B4 = new MediaSize(250, 353, MediaSize.MM, MediaSizeName.ISO_B4);
384:
385:
388: public static final MediaSize B5 = new MediaSize(176, 250, MediaSize.MM, MediaSizeName.ISO_B5);
389:
390:
393: public static final MediaSize B6 = new MediaSize(125, 176, MediaSize.MM, MediaSizeName.ISO_B6);
394:
395:
398: public static final MediaSize B7 = new MediaSize(88, 125, MediaSize.MM, MediaSizeName.ISO_B7);
399:
400:
403: public static final MediaSize B8 = new MediaSize(62, 88, MediaSize.MM, MediaSizeName.ISO_B8);
404:
405:
408: public static final MediaSize B9 = new MediaSize(44, 62, MediaSize.MM, MediaSizeName.ISO_B9);
409:
410:
413: public static final MediaSize B10 = new MediaSize(31, 44, MediaSize.MM, MediaSizeName.ISO_B10);
414:
415:
418: public static final MediaSize C3 = new MediaSize(324, 458, MediaSize.MM, MediaSizeName.ISO_C3);
419:
420:
423: public static final MediaSize C4 = new MediaSize(229, 324, MediaSize.MM, MediaSizeName.ISO_C4);
424:
425:
428: public static final MediaSize C5 = new MediaSize(162, 229, MediaSize.MM, MediaSizeName.ISO_C5);
429:
430:
433: public static final MediaSize C6 = new MediaSize(114, 162, MediaSize.MM, MediaSizeName.ISO_C6);
434:
435:
438: public static final MediaSize DESIGNATED_LONG =
439: new MediaSize(324, 458, MediaSize.MM, MediaSizeName.ISO_DESIGNATED_LONG);
440: }
441:
442:
447: public static final class NA
448: {
449: private NA()
450: {
451:
452: }
453:
454:
457: public static final MediaSize LEGAL = new MediaSize(8.5f, 14f, MediaSize.INCH,
458: MediaSizeName.NA_LEGAL);
459:
460:
463: public static final MediaSize LETTER = new MediaSize(8.5f, 11f, MediaSize.INCH,
464: MediaSizeName.NA_LETTER);
465:
466:
469: public static final MediaSize NA_5X7 = new MediaSize(5, 7, MediaSize.INCH,
470: MediaSizeName.NA_5X7);
471:
472:
475: public static final MediaSize NA_8X10 = new MediaSize(8, 10, MediaSize.INCH,
476: MediaSizeName.NA_8X10);
477:
478:
481: public static final MediaSize NA_6X9_ENVELOPE = new MediaSize(6f, 9f,
482: MediaSize.INCH,
483: MediaSizeName.NA_6X9_ENVELOPE);
484:
485:
488: public static final MediaSize NA_7X9_ENVELOPE = new MediaSize(7f, 9f,
489: MediaSize.INCH,
490: MediaSizeName.NA_7X9_ENVELOPE);
491:
492:
495: public static final MediaSize NA_9x11_ENVELOPE = new MediaSize(9f, 11f,
496: MediaSize.INCH,
497: MediaSizeName.NA_9X11_ENVELOPE);
498:
499:
502: public static final MediaSize NA_9x12_ENVELOPE = new MediaSize(9f, 12f,
503: MediaSize.INCH,
504: MediaSizeName.NA_9X12_ENVELOPE);
505:
506:
507:
510: public static final MediaSize NA_10x13_ENVELOPE = new MediaSize(10f, 13f,
511: MediaSize.INCH,
512: MediaSizeName.NA_10X13_ENVELOPE);
513:
514:
517: public static final MediaSize NA_10x14_ENVELOPE = new MediaSize(10f, 14f,
518: MediaSize.INCH,
519: MediaSizeName.NA_10X14_ENVELOPE);
520:
521:
524: public static final MediaSize NA_10X15_ENVELOPE = new MediaSize(10f, 15f,
525: MediaSize.INCH,
526: MediaSizeName.NA_10X15_ENVELOPE);
527:
528:
531: public static final MediaSize NA_NUMBER_9_ENVELOPE = new MediaSize(3.875f, 8.875f,
532: MediaSize.INCH,
533: MediaSizeName.NA_NUMBER_9_ENVELOPE);
534:
535:
538: public static final MediaSize NA_NUMBER_10_ENVELOPE =
539: new MediaSize(4.125f, 9.5f, MediaSize.INCH, MediaSizeName.NA_NUMBER_10_ENVELOPE);
540:
541:
544: public static final MediaSize NA_NUMBER_11_ENVELOPE = new MediaSize(4.5f, 10.375f, MediaSize.INCH,
545: MediaSizeName.NA_NUMBER_11_ENVELOPE);
546:
547:
550: public static final MediaSize NA_NUMBER_12_ENVELOPE = new MediaSize(4.75f, 11f,
551: MediaSize.INCH,
552: MediaSizeName.NA_NUMBER_12_ENVELOPE);
553:
554:
557: public static final MediaSize NA_NUMBER_14_ENVELOPE = new MediaSize(5f, 11.5f,
558: MediaSize.INCH,
559: MediaSizeName.NA_NUMBER_14_ENVELOPE);
560: }
561:
562:
567: public static final class Engineering
568: {
569: private Engineering()
570: {
571:
572: }
573:
574:
577: public static final MediaSize A = new MediaSize(8.5f, 11f,
578: MediaSize.INCH, MediaSizeName.A);
579:
580:
583: public static final MediaSize B = new MediaSize(11f, 17f,
584: MediaSize.INCH, MediaSizeName.B);
585:
586:
589: public static final MediaSize C = new MediaSize(17f, 22f,
590: MediaSize.INCH, MediaSizeName.C);
591:
592:
595: public static final MediaSize D = new MediaSize(22f, 34f,
596: MediaSize.INCH, MediaSizeName.D);
597:
598:
601: public static final MediaSize E = new MediaSize(34f, 44f,
602: MediaSize.INCH, MediaSizeName.E);
603: }
604:
605:
610: public static final class JIS
611: {
612: private JIS()
613: {
614:
615: }
616:
617:
621: public static final MediaSize B0 = new MediaSize(1030, 1456, MediaSize.MM, MediaSizeName.JIS_B0);
622:
623:
627: public static final MediaSize B1 = new MediaSize(728, 1030, MediaSize.MM, MediaSizeName.JIS_B1);
628:
629:
633: public static final MediaSize B2 = new MediaSize(515, 728, MediaSize.MM, MediaSizeName.JIS_B2);
634:
635:
639: public static final MediaSize B3 = new MediaSize(364, 515, MediaSize.MM, MediaSizeName.JIS_B3);
640:
641:
645: public static final MediaSize B4 = new MediaSize(257, 364, MediaSize.MM, MediaSizeName.JIS_B4);
646:
647:
651: public static final MediaSize B5 = new MediaSize(182, 257, MediaSize.MM, MediaSizeName.JIS_B5);
652:
653:
657: public static final MediaSize B6 = new MediaSize(128, 182, MediaSize.MM, MediaSizeName.JIS_B6);
658:
659:
663: public static final MediaSize B7 = new MediaSize(91, 128, MediaSize.MM, MediaSizeName.JIS_B7);
664:
665:
669: public static final MediaSize B8 = new MediaSize(64, 91, MediaSize.MM, MediaSizeName.JIS_B8);
670:
671:
675: public static final MediaSize B9 = new MediaSize(45, 64, MediaSize.MM, MediaSizeName.JIS_B9);
676:
677:
681: public static final MediaSize B10 = new MediaSize(32, 45, MediaSize.MM, MediaSizeName.JIS_B10);
682:
683:
686: public static final MediaSize CHOU_1 = new MediaSize(142, 332, MediaSize.MM);
687:
688:
691: public static final MediaSize CHOU_2 = new MediaSize(119, 227, MediaSize.MM);
692:
693:
696: public static final MediaSize CHOU_3 = new MediaSize(120, 235, MediaSize.MM);
697:
698:
701: public static final MediaSize CHOU_4 = new MediaSize(90, 205, MediaSize.MM);
702:
703:
706: public static final MediaSize CHOU_30 = new MediaSize(92, 235, MediaSize.MM);
707:
708:
711: public static final MediaSize CHOU_40 = new MediaSize(90, 225, MediaSize.MM);
712:
713:
716: public static final MediaSize KAKU_0 = new MediaSize(287, 382, MediaSize.MM);
717:
718:
721: public static final MediaSize KAKU_1 = new MediaSize(270, 382, MediaSize.MM);
722:
723:
726: public static final MediaSize KAKU_2 = new MediaSize(240, 332, MediaSize.MM);
727:
728:
731: public static final MediaSize KAKU_20 = new MediaSize(229, 324, MediaSize.MM);
732:
733:
736: public static final MediaSize KAKU_3 = new MediaSize(216, 227, MediaSize.MM);
737:
738:
741: public static final MediaSize KAKU_4 = new MediaSize(197, 267, MediaSize.MM);
742:
743:
746: public static final MediaSize KAKU_5 = new MediaSize(190, 240, MediaSize.MM);
747:
748:
751: public static final MediaSize KAKU_6 = new MediaSize(162, 229, MediaSize.MM);
752:
753:
756: public static final MediaSize KAKU_7 = new MediaSize(142, 205, MediaSize.MM);
757:
758:
761: public static final MediaSize KAKU_8 = new MediaSize(119, 197, MediaSize.MM);
762:
763:
766: public static final MediaSize KAKU_A4 = new MediaSize(228, 312, MediaSize.MM);
767:
768:
771: public static final MediaSize YOU_1 = new MediaSize(120, 176, MediaSize.MM);
772:
773:
776: public static final MediaSize YOU_2 = new MediaSize(114, 162, MediaSize.MM);
777:
778:
781: public static final MediaSize YOU_3 = new MediaSize(98, 148, MediaSize.MM);
782:
783:
786: public static final MediaSize YOU_4 = new MediaSize(105, 235, MediaSize.MM);
787:
788:
791: public static final MediaSize YOU_5 = new MediaSize(95, 217, MediaSize.MM);
792:
793:
796: public static final MediaSize YOU_6 = new MediaSize(98, 190, MediaSize.MM);
797:
798:
801: public static final MediaSize YOU_7 = new MediaSize(92, 165, MediaSize.MM);
802: }
803:
804:
809: public static final class Other
810: {
811: private Other()
812: {
813:
814: }
815:
816:
819: public static final MediaSize EXECUTIVE = new MediaSize(7.25f, 10.5f,
820: MediaSize.INCH, MediaSizeName.EXECUTIVE);
821:
822:
825: public static final MediaSize FOLIO = new MediaSize(8.5f, 13f, MediaSize.INCH, MediaSizeName.FOLIO);
826:
827:
830: public static final MediaSize QUARTO = new MediaSize(8.5f, 10.83f, MediaSize.INCH,
831: MediaSizeName.QUARTO);
832:
833:
836: public static final MediaSize INVOICE = new MediaSize(5.5f, 8.5f,
837: MediaSize.INCH, MediaSizeName.INVOICE);
838:
839:
842: public static final MediaSize LEDGER = new MediaSize(11, 17, MediaSize.INCH,
843: MediaSizeName.LEDGER);
844:
845:
848: public static final MediaSize MONARCH_ENVELOPE = new MediaSize(3.87f, 7.5f,
849: MediaSize.INCH,
850: MediaSizeName.MONARCH_ENVELOPE);
851:
852:
855: public static final MediaSize PERSONAL_ENVELOPE = new MediaSize(3.625f, 6.5f, MediaSize.INCH,
856: MediaSizeName.PERSONAL_ENVELOPE);
857:
858:
861: public static final MediaSize ITALY_ENVELOPE = new MediaSize(110, 230,
862: MediaSize.MM,
863: MediaSizeName.ITALY_ENVELOPE);
864:
865:
868: public static final MediaSize JAPANESE_POSTCARD = new MediaSize(100, 148, MediaSize.MM, MediaSizeName.JAPANESE_POSTCARD);
869:
870:
873: public static final MediaSize JAPANESE_DOUBLE_POSTCARD = new MediaSize(148, 200, MediaSize.MM, MediaSizeName.JAPANESE_DOUBLE_POSTCARD);
874:
875:
879: public static final MediaSize TABLOID =
880: new MediaSize(11, 17, Size2DSyntax.INCH, MediaSizeName.TABLOID);
881: }
882: }