package plugins.svg; import java.awt.print.Paper; import java.util.HashMap; import java.util.Map; import javax.print.attribute.standard.MediaSize; import javax.print.attribute.standard.MediaSizeName; /** * @author Andy * * Class is resposible to provide all papers that could be used for PDF * export */ class ExportPdfPapers { /* * 72(dpi) / 25 (mm/inch) = 0.352 mm/px = (default value of transcoder) */ private static final double ppmm = 96 / 25.4; /** * map to store all papers */ Map paperFormats = new HashMap(); /** * constructor * * @param exportPdf */ public ExportPdfPapers() { initPapers(); } /** * * @return the names of the given paper formats */ String[] getPaperNames() { Object[] o_names = paperFormats.keySet().toArray(); String[] names = new String[o_names.length]; for (int i = 0; i < paperFormats.size(); i++) { names[i] = (String) o_names[i]; } return names; } /** * Initialize the list of papers * * for more papers see {@link http://en.wikipedia.org/wiki/Paper_size} */ private void initPapers() { // A -Papers addPaper(MediaSizeName.ISO_A2, "A2"); addPaper(MediaSizeName.ISO_A3, "A3"); addPaper(MediaSizeName.ISO_A4, "A4"); addPaper(MediaSizeName.ISO_A5, "A5"); // B - Papers addPaper(MediaSizeName.ISO_B2, "B2"); addPaper(MediaSizeName.ISO_B3, "B3"); addPaper(MediaSizeName.ISO_B4, "B4"); addPaper(MediaSizeName.ISO_B5, "B5"); } /** * Add a new paper to the list of papers * * @param name * @param displayName */ private void addPaper(MediaSizeName name, String displayName) { MediaSize mSize = MediaSize.getMediaSizeForName(name); Paper paper = new Paper(); paper.setSize(mSize.getX(MediaSize.MM) * ppmm, mSize.getY(MediaSize.MM) * ppmm); paperFormats.put(displayName, paper); } /** * Determine the paper from a given format string * * @param formats * string like A3 or A4 that is one of the values of * getPaperNames() * @return The paper for the given format */ Paper determinePaper(String format) { Object o = paperFormats.get(format); if (o != null && o instanceof Paper) { Paper result = (Paper) o; return result; } else { return null; } } }