// Copyright 2000, CERN, Geneva, Switzerland and University of Santa Cruz, California, U.S.A. package org.freehep.graphicsio; import java.awt.Dimension; import java.awt.Insets; import java.util.HashMap; import java.util.Map; /** * This class defines a set of constants which describe a page. Convenience * objects are provided for various margins, orientations, rescaling, and * standard page sizes. * <p> * In order to support more page formats (A0, A1 and A2), this class has been * slightly modified by Markus Strauch in 11/2007 for the Quick Sequence Diagram * Editor project. * * @author Charles Loomis * @author Mark Donszelmann * @version $Id: PageConstants.java,v 1.1.1.1 2009-11-19 14:41:04 strauch Exp $ */ public class PageConstants { private PageConstants() { } // Orientation public static final String ORIENTATION = "Orientation"; public static final String PORTRAIT = "Portrait"; public static final String LANDSCAPE = "Landscape"; public static final String BEST_FIT = "Best Fit"; public final static String[] getOrientationList() { return new String[] { PORTRAIT, LANDSCAPE, /* BEST_FIT */}; } // Page Sizes public static final String PAGE_SIZE = "PageSize"; public static final String INTERNATIONAL = "International"; public static final String A3 = "A3"; public static final String A4 = "A4"; public static final String A5 = "A5"; public static final String A6 = "A6"; // The following page sizes have been added my Markus Strauch // for Quick Sequence Diagram Editor public static final String A0 = "A0"; public static final String A1 = "A1"; public static final String A2 = "A2"; /** * Value for CUSTOM_PAGE_SIZE and Key for a Dimension object if custom size * is used */ public static final String CUSTOM_PAGE_SIZE = "Custom PageSize"; public static final String LETTER = "Letter"; public static final String LEGAL = "Legal"; public static final String EXECUTIVE = "Executive"; public static final String LEDGER = "Ledger"; public static final String[] getSizeList() { return new String[] { INTERNATIONAL, A4, LETTER, A3, LEGAL, A0, A1, A2, A5, A6, EXECUTIVE, LEDGER }; } public static final Dimension getSize(String size) { return getSize(size, PORTRAIT); } public static final Dimension getSize(String size, String orientation) { Dimension d = (Dimension) sizeTable.get(size); if (orientation.equals(PORTRAIT)) { return d; } else { return new Dimension(d.height, d.width); } } private static final Map sizeTable = new HashMap(); static { sizeTable.put(INTERNATIONAL, new Dimension(595, 791)); sizeTable.put(A0, new Dimension(2384, 3370)); sizeTable.put(A1, new Dimension(1684, 2384)); sizeTable.put(A2, new Dimension(1190, 1684)); sizeTable.put(A3, new Dimension(842, 1191)); sizeTable.put(A4, new Dimension(595, 842)); sizeTable.put(A5, new Dimension(420, 595)); sizeTable.put(A6, new Dimension(298, 420)); sizeTable.put(LETTER, new Dimension(612, 791)); sizeTable.put(LEGAL, new Dimension(612, 1009)); sizeTable.put(EXECUTIVE, new Dimension(539, 720)); sizeTable.put(LEDGER, new Dimension(791, 1225)); } // Margins public static final String PAGE_MARGINS = "PageMargins"; public static final String SMALL = "Small"; public static final String MEDIUM = "Medium"; public static final String LARGE = "Large"; private static final Map marginTable = new HashMap(); static { marginTable.put(SMALL, new Insets(20, 20, 20, 20)); marginTable.put(MEDIUM, new Insets(30, 30, 30, 30)); marginTable.put(LARGE, new Insets(40, 40, 40, 40)); } public static final Insets getMargins(String size) { return (Insets) marginTable.get(size); } public static final Insets getMargins(Insets insets, String orientation) { if (orientation.equals(PORTRAIT)) { return insets; } else { // turn page to right return new Insets(insets.left, insets.bottom, insets.right, insets.top); } } // Fit public static final String FIT_TO_PAGE = "FitToPage"; // FIXME: should move? public static final String TRANSPARENT = "Transparent"; public static final String BACKGROUND = "Background"; public static final String BACKGROUND_COLOR = "BackgroundColor"; }