Java tutorial
/** * * JFreeReport : a free Java reporting library * * * Project Info: http://reporting.pentaho.org/ * * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors. * * This library is free software; you can redistribute it and/or modify it under the terms * of the GNU Lesser General Public License as published by the Free Software Foundation; * either version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along with this * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307, USA. * * [Java is a trademark or registered trademark of Sun Microsystems, Inc. * in the United States and other countries.] * * ------------ * PageFormatFactory.java * ------------ * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors. */ import java.awt.Insets; import java.awt.print.PageFormat; import java.awt.print.Paper; import java.lang.reflect.Field; import sun.rmi.runtime.Log; /** * The PageFormatFactory is used to create PageFormats on a higher level. The Factory contains templates for all * PageSizes defined by Adobe: * <p/> * <a href="http://partners.adobe.com/asn/developer/pdfs/tn/5003.PPD_Spec_v4.3.pdf" >Postscript Specifications</a> * <p/> * Usage for creating an printjob on A4 paper with 2.5 cm border: * <pre> * Paper paper = PageFormatFactory.createPaper (PageSize.A4); * PageFormatFactory.setBordersMm (paper, 25, 25, 25, 25); * PageFormat format = PageFormatFactory.createPageFormat (paper, PageFormat.PORTRAIT); * </code> * <p/> * Defining a pageformat can be an ugly task and full of dependencies. The call to * PageFormatFactory.setBorders(...) will setup the paper's border and always assumes * that the paper is laid out in Portrait. * <p/> * Changing the PageFormat's orientation does not change the PageFormat's paper object, * but it changes the way, how the paper object is interpreted. * * @author Thomas Morgner */ public final class PageFormatFactory { /** * Constant for dots per inch. * * @deprecated Not used anywhere. */ public static final int DOTS_PER_INCH = 72; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PAPER11X17 = { 792, 1224 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PAPER10X11 = { 720, 792 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PAPER10X13 = { 720, 936 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PAPER10X14 = { 720, 1008 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PAPER12X11 = { 864, 792 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PAPER15X11 = { 1080, 792 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PAPER7X9 = { 504, 648 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PAPER8X10 = { 576, 720 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PAPER9X11 = { 648, 792 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PAPER9X12 = { 648, 864 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A0 = { 2384, 3370 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A1 = { 1684, 2384 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A2 = { 1191, 1684 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A3 = { 842, 1191 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A3_TRANSVERSE = { 842, 1191 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A3_EXTRA = { 913, 1262 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A3_EXTRATRANSVERSE = { 913, 1262 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A3_ROTATED = { 1191, 842 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A4 = { 595, 842 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A4_TRANSVERSE = { 595, 842 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A4_EXTRA = { 667, 914 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A4_PLUS = { 595, 936 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A4_ROTATED = { 842, 595 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A4_SMALL = { 595, 842 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A5 = { 420, 595 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A5_TRANSVERSE = { 420, 595 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A5_EXTRA = { 492, 668 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A5_ROTATED = { 595, 420 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A6 = { 297, 420 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A6_ROTATED = { 420, 297 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A7 = { 210, 297 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A8 = { 148, 210 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A9 = { 105, 148 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] A10 = { 73, 105 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ANSIC = { 1224, 1584 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ANSID = { 1584, 2448 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ANSIE = { 2448, 3168 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ARCHA = { 648, 864 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ARCHB = { 864, 1296 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ARCHC = { 1296, 1728 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ARCHD = { 1728, 2592 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ARCHE = { 2592, 3456 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B0 = { 2920, 4127 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B1 = { 2064, 2920 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B2 = { 1460, 2064 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B3 = { 1032, 1460 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B4 = { 729, 1032 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B4_ROTATED = { 1032, 729 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B5 = { 516, 729 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B5_TRANSVERSE = { 516, 729 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B5_ROTATED = { 729, 516 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B6 = { 363, 516 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B6_ROTATED = { 516, 363 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B7 = { 258, 363 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B8 = { 181, 258 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B9 = { 127, 181 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] B10 = { 91, 127 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] C4 = { 649, 918 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] C5 = { 459, 649 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] C6 = { 323, 459 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] COMM10 = { 297, 684 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] DL = { 312, 624 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] DOUBLEPOSTCARD = { 567, 419 }; // should be 419.5, but I ignore that.. /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] DOUBLEPOSTCARD_ROTATED = { 419, 567 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENV9 = { 279, 639 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENV10 = { 297, 684 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENV11 = { 324, 747 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENV12 = { 342, 792 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENV14 = { 360, 828 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVC0 = { 2599, 3676 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVC1 = { 1837, 2599 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVC2 = { 1298, 1837 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVC3 = { 918, 1296 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVC4 = { 649, 918 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVC5 = { 459, 649 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVC6 = { 323, 459 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVC65 = { 324, 648 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVC7 = { 230, 323 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVCHOU3 = { 340, 666 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVCHOU3_ROTATED = { 666, 340 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVCHOU4 = { 255, 581 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVCHOU4_ROTATED = { 581, 255 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVDL = { 312, 624 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVINVITE = { 624, 624 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVISOB4 = { 708, 1001 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVISOB5 = { 499, 709 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVISOB6 = { 499, 354 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVITALIAN = { 312, 652 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVELOPE = { 312, 652 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVKAKU2 = { 680, 941 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVKAKU2_ROTATED = { 941, 680 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVKAKU3 = { 612, 785 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVKAKU3_ROTATED = { 785, 612 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVMONARCH = { 279, 540 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPERSONAL = { 261, 468 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC1 = { 289, 468 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC1_ROTATED = { 468, 289 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC2 = { 289, 499 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC2_ROTATED = { 499, 289 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC3 = { 354, 499 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC3_ROTATED = { 499, 354 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC4 = { 312, 590 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC4_ROTATED = { 590, 312 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC5 = { 312, 624 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC5_ROTATED = { 624, 312 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC6 = { 340, 652 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC6_ROTATED = { 652, 340 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC7 = { 454, 652 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC7_ROTATED = { 652, 454 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC8 = { 340, 876 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC8_ROTATED = { 876, 340 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC9 = { 649, 918 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC9_ROTATED = { 918, 649 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC10 = { 918, 1298 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVPRC10_ROTATED = { 1298, 918 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVYOU4 = { 298, 666 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ENVYOU4_ROTATED = { 666, 298 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] EXECUTIVE = { 522, 756 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] FANFOLDUS = { 1071, 792 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] FANFOLDGERMAN = { 612, 864 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] FANFOLDGERMANLEGAL = { 612, 936 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] FOLIO = { 595, 935 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ISOB0 = { 2835, 4008 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ISOB1 = { 2004, 2835 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ISOB2 = { 1417, 2004 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ISOB3 = { 1001, 1417 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ISOB4 = { 709, 1001 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ISOB5 = { 499, 709 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ISOB5_EXTRA = { 570, 782 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ISOB6 = { 354, 499 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ISOB7 = { 249, 354 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ISOB8 = { 176, 249 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ISOB9 = { 125, 176 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] ISOB10 = { 88, 125 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] LEDGER = { 1224, 792 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] LEGAL = { 612, 1008 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] LEGAL_EXTRA = { 684, 1080 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] LETTER = { 612, 792 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] LETTER_TRANSVERSE = { 612, 792 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] LETTER_EXTRA = { 684, 864 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] LETTER_EXTRATRANSVERSE = { 684, 864 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] LETTER_PLUS = { 612, 914 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] LETTER_ROTATED = { 792, 612 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] LETTER_SMALL = { 612, 792 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] MONARCH = ENVMONARCH; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] NOTE = { 612, 792 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] POSTCARD = { 284, 419 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] POSTCARD_ROTATED = { 419, 284 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PRC16K = { 414, 610 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PRC16K_ROTATED = { 610, 414 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PRC32K = { 275, 428 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PRC32K_ROTATED = { 428, 275 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PRC32K_BIG = { 275, 428 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] PRC32K_BIGROTATED = { 428, 275 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] QUARTO = { 610, 780 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] STATEMENT = { 396, 612 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] SUPERA = { 643, 1009 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] SUPERB = { 864, 1380 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] TABLOID = { 792, 1224 }; /** * A standard paper size. * * @deprecated Using public static arrays is dangerous. */ public static final int[] TABLOIDEXTRA = { 864, 1296 }; /** * A single instance of the factory. */ private static PageFormatFactory singleton; /** * Default constructor. */ private PageFormatFactory() { } /** * Returns a single instance of the factory. * * @return an instance of a PageFormatFactory. */ public static PageFormatFactory getInstance() { if (singleton == null) { singleton = new PageFormatFactory(); } return singleton; } /** * Creates a paper by using the paper size in points found in the int-array. The array must have a length of 2 and the * first value of this array has to contain the width and the second the height parameter. The created Paper has no * ImagableArea defined. * * @param papersize the definition of the papersize in a 2-element int-array * @return the created paper */ public Paper createPaper(final int[] papersize) { if (papersize.length != 2) { throw new IllegalArgumentException("Paper must have a width and a height"); } return createPaper(papersize[0], papersize[1]); } /** * Creates a paper by using the paper size in points found in the int-array. The array must have a length of 2 and the * first value of this array has to contain the width and the second the height parameter. The created Paper has no * ImagableArea defined. * * @param papersize the definition of the papersize in a 2-element int-array * @return the created paper */ public Paper createPaper(final PageSize papersize) { return createPaper(papersize.getWidth(), papersize.getHeight()); } /** * Creates a paper by using the paper size in points. The created Paper has no ImagableArea defined. * * @param width the width of the paper in points * @param height the height of the paper in points * @return the created paper * @deprecated Use the double version instead. */ public Paper createPaper(final int width, final int height) { return createPaper((double) width, (double) height); } /** * Creates a paper by using the paper size in points. The created Paper has no ImagableArea defined. * * @param width the width of the paper in points * @param height the height of the paper in points * @return the created paper */ public Paper createPaper(final double width, final double height) { final Paper p = new Paper(); p.setSize(width, height); setBorders(p, 0, 0, 0, 0); return p; } /** * Defines the imageable area of the given paper by adjusting the border around the imagable area. The bordersizes are * given in points. * * @param paper the paper that should be modified * @param top the bordersize of the top-border * @param left the border in points in the left * @param bottom the border in points in the bottom * @param right the border in points in the right */ public void setBorders(final Paper paper, final double top, final double left, final double bottom, final double right) { final double w = paper.getWidth() - (right + left); final double h = paper.getHeight() - (bottom + top); paper.setImageableArea(left, top, w, h); } /** * Defines the imageable area of the given paper by adjusting the border around the imagable area. The bordersizes are * given in inches. * * @param paper the paper that should be modified * @param top the bordersize of the top-border * @param left the border in points in the left * @param bottom the border in points in the bottom * @param right the border in points in the right */ public void setBordersInch(final Paper paper, final double top, final double left, final double bottom, final double right) { setBorders(paper, convertInchToPoints(top), convertInchToPoints(left), convertInchToPoints(bottom), convertInchToPoints(right)); } /** * Defines the imageable area of the given paper by adjusting the border around the imagable area. The bordersizes are * given in millimeters. * * @param paper the paper that should be modified * @param top the bordersize of the top-border * @param left the border in points in the left * @param bottom the border in points in the bottom * @param right the border in points in the right */ public void setBordersMm(final Paper paper, final double top, final double left, final double bottom, final double right) { setBorders(paper, convertMmToPoints(top), convertMmToPoints(left), convertMmToPoints(bottom), convertMmToPoints(right)); } /** * Converts the given inch value to a valid point-value. * * @param inches the size in inch * @return the size in points */ public double convertInchToPoints(final double inches) { return inches * 72.0f; } /** * Converts the given millimeter value to a valid point-value. * * @param mm the size in inch * @return the size in points */ public double convertMmToPoints(final double mm) { return mm * (72.0d / 254.0d) * 10; } /** * Creates a new pageformat using the given paper and the given orientation. * * @param paper the paper to use in the new pageformat * @param orientation one of PageFormat.PORTRAIT, PageFormat.LANDSCAPE or PageFormat.REVERSE_LANDSCAPE * @return the created Pageformat * @throws NullPointerException if the paper given was null */ public PageFormat createPageFormat(final Paper paper, final int orientation) { if (paper == null) { throw new NullPointerException("Paper given must not be null"); } final PageFormat pf = new PageFormat(); pf.setPaper(paper); pf.setOrientation(orientation); return pf; } /** * Creates a paper by looking up the given Uppercase name in this classes defined constants. The value if looked up by * introspection, if the value is not defined in this class, null is returned. * * @param name the name of the constant defining the papersize * @return the defined paper or null, if the name was invalid. */ public Paper createPaper(final String name) { try { final Field f = PageSize.class.getDeclaredField(name); final Object o = f.get(null); if (o instanceof PageSize == false) { // Log.debug ("Is no valid pageformat definition"); return null; } final PageSize pageformat = (PageSize) o; return createPaper(pageformat); } catch (NoSuchFieldException nfe) { // Log.debug ("There is no pageformat " + name + " defined."); return null; } catch (IllegalAccessException aie) { // Log.debug ("There is no pageformat " + name + " accessible."); return null; } } /** * Logs the page format. * * @param pf the page format. */ public static void logPageFormat(final PageFormat pf) { System.out.println("PageFormat: Width: " + pf.getWidth() + " Height: " + pf.getHeight()); System.out.println("PageFormat: Image: X " + pf.getImageableX() + " Y " + pf.getImageableY() + " W: " + pf.getImageableWidth() + " H: " + pf.getImageableHeight()); System.out.println("PageFormat: Margins: X " + pf.getImageableX() + " Y " + pf.getImageableY() + " X2: " + (pf.getImageableWidth() + pf.getImageableX()) + " Y2: " + (pf.getImageableHeight() + pf.getImageableY())); } /** * Logs the paper size. * * @param pf the paper size. */ public static void logPaper(final Paper pf) { System.out.println("Paper: Width: " + pf.getWidth() + " Height: " + pf.getHeight()); System.out.println("Paper: Image: X " + pf.getImageableX() + " Y " + pf.getImageableY() + " H: " + pf.getImageableHeight() + " W: " + pf.getImageableWidth()); } /** * Tests, whether the given two page format objects are equal. * * @param pf1 the first page format that should be compared. * @param pf2 the second page format that should be compared. * @return true, if both page formats are equal, false otherwise. */ public static boolean isEqual(final PageFormat pf1, final PageFormat pf2) { if (pf1 == pf2) { return true; } if (pf1 == null || pf2 == null) { return false; } if (pf1.getOrientation() != pf2.getOrientation()) { return false; } final Paper p1 = pf1.getPaper(); final Paper p2 = pf2.getPaper(); if (p1.getWidth() != p2.getWidth()) { return false; } if (p1.getHeight() != p2.getHeight()) { return false; } if (p1.getImageableX() != p2.getImageableX()) { return false; } if (p1.getImageableY() != p2.getImageableY()) { return false; } if (p1.getImageableWidth() != p2.getImageableWidth()) { return false; } if (p1.getImageableHeight() != p2.getImageableHeight()) { return false; } return true; } /** * Returns the left border of the given paper. * * @param p the paper that defines the borders. * @return the left border. */ public double getLeftBorder(final Paper p) { return p.getImageableX(); } /** * Returns the right border of the given paper. * * @param p the paper that defines the borders. * @return the right border. */ public double getRightBorder(final Paper p) { return p.getWidth() - (p.getImageableX() + p.getImageableWidth()); } /** * Returns the top border of the given paper. * * @param p the paper that defines the borders. * @return the top border. */ public double getTopBorder(final Paper p) { return p.getImageableY(); } /** * Returns the bottom border of the given paper. * * @param p the paper that defines the borders. * @return the bottom border. */ public double getBottomBorder(final Paper p) { return p.getHeight() - (p.getImageableY() + p.getImageableHeight()); } /** * Resolves a page format, so that the result can be serialized. * * @param format the page format that should be prepared for serialisation. * @return the prepared page format data. * @deprecated This functionality is part of JCommon-Serializer */ public Object[] resolvePageFormat(final PageFormat format) { final Integer orientation = new Integer(format.getOrientation()); final Paper p = format.getPaper(); final float[] fdim = new float[] { (float) p.getWidth(), (float) p.getHeight() }; final float[] rect = new float[] { (float) p.getImageableX(), (float) p.getImageableY(), (float) p.getImageableWidth(), (float) p.getImageableHeight() }; return new Object[] { orientation, fdim, rect }; } /** * Restores a page format after it has been serialized. * * @param data the serialized page format data. * @return the restored page format. * @deprecated This functionality is part of JCommon-Serializer */ public PageFormat createPageFormat(final Object[] data) { final Integer orientation = (Integer) data[0]; final float[] dim = (float[]) data[1]; final float[] rect = (float[]) data[2]; final Paper p = new Paper(); p.setSize(dim[0], dim[1]); p.setImageableArea(rect[0], rect[1], rect[2], rect[3]); final PageFormat format = new PageFormat(); format.setPaper(p); format.setOrientation(orientation.intValue()); return format; } public Insets getPageMargins(final PageFormat format) { final int marginLeft = (int) format.getImageableX(); final int marginRight = (int) (format.getWidth() - format.getImageableWidth() - format.getImageableX()); final int marginTop = (int) (format.getImageableY()); final int marginBottom = (int) (format.getHeight() - format.getImageableHeight() - format.getImageableY()); return new Insets(marginTop, marginLeft, marginBottom, marginRight); } } /** * * JFreeReport : a free Java reporting library * * * Project Info: http://reporting.pentaho.org/ * * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors. * * This library is free software; you can redistribute it and/or modify it under the terms * of the GNU Lesser General Public License as published by the Free Software Foundation; * either version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along with this * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307, USA. * * [Java is a trademark or registered trademark of Sun Microsystems, Inc. * in the United States and other countries.] * * ------------ * PageSize.java * ------------ * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors. */ /** * A class defining a page-dimension. * * @author Thomas Morgner */ final class PageSize { /** * A standard paper size. */ public static final PageSize PAPER11X17 = new PageSize(792, 1224); /** * A standard paper size. */ public static final PageSize PAPER10X11 = new PageSize(720, 792); /** * A standard paper size. */ public static final PageSize PAPER10X13 = new PageSize(720, 936); /** * A standard paper size. */ public static final PageSize PAPER10X14 = new PageSize(720, 1008); /** * A standard paper size. */ public static final PageSize PAPER12X11 = new PageSize(864, 792); /** * A standard paper size. */ public static final PageSize PAPER15X11 = new PageSize(1080, 792); /** * A standard paper size. */ public static final PageSize PAPER7X9 = new PageSize(504, 648); /** * A standard paper size. */ public static final PageSize PAPER8X10 = new PageSize(576, 720); /** * A standard paper size. */ public static final PageSize PAPER9X11 = new PageSize(648, 792); /** * A standard paper size. */ public static final PageSize PAPER9X12 = new PageSize(648, 864); /** * A standard paper size. */ public static final PageSize A0 = new PageSize(2384, 3370); /** * A standard paper size. */ public static final PageSize A1 = new PageSize(1684, 2384); /** * A standard paper size. */ public static final PageSize A2 = new PageSize(1191, 1684); /** * A standard paper size. */ public static final PageSize A3 = new PageSize(842, 1191); /** * A standard paper size. */ public static final PageSize A3_TRANSVERSE = new PageSize(842, 1191); /** * A standard paper size. */ public static final PageSize A3_EXTRA = new PageSize(913, 1262); /** * A standard paper size. */ public static final PageSize A3_EXTRATRANSVERSE = new PageSize(913, 1262); /** * A standard paper size. */ public static final PageSize A3_ROTATED = new PageSize(1191, 842); /** * A standard paper size. */ public static final PageSize A4 = new PageSize(595, 842); /** * A standard paper size. */ public static final PageSize A4_TRANSVERSE = new PageSize(595, 842); /** * A standard paper size. */ public static final PageSize A4_EXTRA = new PageSize(667, 914); /** * A standard paper size. */ public static final PageSize A4_PLUS = new PageSize(595, 936); /** * A standard paper size. */ public static final PageSize A4_ROTATED = new PageSize(842, 595); /** * A standard paper size. */ public static final PageSize A4_SMALL = new PageSize(595, 842); /** * A standard paper size. */ public static final PageSize A5 = new PageSize(420, 595); /** * A standard paper size. */ public static final PageSize A5_TRANSVERSE = new PageSize(420, 595); /** * A standard paper size. */ public static final PageSize A5_EXTRA = new PageSize(492, 668); /** * A standard paper size. */ public static final PageSize A5_ROTATED = new PageSize(595, 420); /** * A standard paper size. */ public static final PageSize A6 = new PageSize(297, 420); /** * A standard paper size. */ public static final PageSize A6_ROTATED = new PageSize(420, 297); /** * A standard paper size. */ public static final PageSize A7 = new PageSize(210, 297); /** * A standard paper size. */ public static final PageSize A8 = new PageSize(148, 210); /** * A standard paper size. */ public static final PageSize A9 = new PageSize(105, 148); /** * A standard paper size. */ public static final PageSize A10 = new PageSize(73, 105); /** * A standard paper size. */ public static final PageSize ANSIC = new PageSize(1224, 1584); /** * A standard paper size. */ public static final PageSize ANSID = new PageSize(1584, 2448); /** * A standard paper size. */ public static final PageSize ANSIE = new PageSize(2448, 3168); /** * A standard paper size. */ public static final PageSize ARCHA = new PageSize(648, 864); /** * A standard paper size. */ public static final PageSize ARCHB = new PageSize(864, 1296); /** * A standard paper size. */ public static final PageSize ARCHC = new PageSize(1296, 1728); /** * A standard paper size. */ public static final PageSize ARCHD = new PageSize(1728, 2592); /** * A standard paper size. */ public static final PageSize ARCHE = new PageSize(2592, 3456); /** * A standard paper size. */ public static final PageSize B0 = new PageSize(2920, 4127); /** * A standard paper size. */ public static final PageSize B1 = new PageSize(2064, 2920); /** * A standard paper size. */ public static final PageSize B2 = new PageSize(1460, 2064); /** * A standard paper size. */ public static final PageSize B3 = new PageSize(1032, 1460); /** * A standard paper size. */ public static final PageSize B4 = new PageSize(729, 1032); /** * A standard paper size. */ public static final PageSize B4_ROTATED = new PageSize(1032, 729); /** * A standard paper size. */ public static final PageSize B5 = new PageSize(516, 729); /** * A standard paper size. */ public static final PageSize B5_TRANSVERSE = new PageSize(516, 729); /** * A standard paper size. */ public static final PageSize B5_ROTATED = new PageSize(729, 516); /** * A standard paper size. */ public static final PageSize B6 = new PageSize(363, 516); /** * A standard paper size. */ public static final PageSize B6_ROTATED = new PageSize(516, 363); /** * A standard paper size. */ public static final PageSize B7 = new PageSize(258, 363); /** * A standard paper size. */ public static final PageSize B8 = new PageSize(181, 258); /** * A standard paper size. */ public static final PageSize B9 = new PageSize(127, 181); /** * A standard paper size. */ public static final PageSize B10 = new PageSize(91, 127); /** * A standard paper size. */ public static final PageSize C4 = new PageSize(649, 918); /** * A standard paper size. */ public static final PageSize C5 = new PageSize(459, 649); /** * A standard paper size. */ public static final PageSize C6 = new PageSize(323, 459); /** * A standard paper size. */ public static final PageSize COMM10 = new PageSize(297, 684); /** * A standard paper size. */ public static final PageSize DL = new PageSize(312, 624); /** * A standard paper size. */ public static final PageSize DOUBLEPOSTCARD = new PageSize(567, 419); // should be 419.5, but I ignore that.. /** * A standard paper size. */ public static final PageSize DOUBLEPOSTCARD_ROTATED = new PageSize(419, 567); /** * A standard paper size. */ public static final PageSize ENV9 = new PageSize(279, 639); /** * A standard paper size. */ public static final PageSize ENV10 = new PageSize(297, 684); /** * A standard paper size. */ public static final PageSize ENV11 = new PageSize(324, 747); /** * A standard paper size. */ public static final PageSize ENV12 = new PageSize(342, 792); /** * A standard paper size. */ public static final PageSize ENV14 = new PageSize(360, 828); /** * A standard paper size. */ public static final PageSize ENVC0 = new PageSize(2599, 3676); /** * A standard paper size. */ public static final PageSize ENVC1 = new PageSize(1837, 2599); /** * A standard paper size. */ public static final PageSize ENVC2 = new PageSize(1298, 1837); /** * A standard paper size. */ public static final PageSize ENVC3 = new PageSize(918, 1296); /** * A standard paper size. */ public static final PageSize ENVC4 = new PageSize(649, 918); /** * A standard paper size. */ public static final PageSize ENVC5 = new PageSize(459, 649); /** * A standard paper size. */ public static final PageSize ENVC6 = new PageSize(323, 459); /** * A standard paper size. */ public static final PageSize ENVC65 = new PageSize(324, 648); /** * A standard paper size. */ public static final PageSize ENVC7 = new PageSize(230, 323); /** * A standard paper size. */ public static final PageSize ENVCHOU3 = new PageSize(340, 666); /** * A standard paper size. */ public static final PageSize ENVCHOU3_ROTATED = new PageSize(666, 340); /** * A standard paper size. */ public static final PageSize ENVCHOU4 = new PageSize(255, 581); /** * A standard paper size. */ public static final PageSize ENVCHOU4_ROTATED = new PageSize(581, 255); /** * A standard paper size. */ public static final PageSize ENVDL = new PageSize(312, 624); /** * A standard paper size. */ public static final PageSize ENVINVITE = new PageSize(624, 624); /** * A standard paper size. */ public static final PageSize ENVISOB4 = new PageSize(708, 1001); /** * A standard paper size. */ public static final PageSize ENVISOB5 = new PageSize(499, 709); /** * A standard paper size. */ public static final PageSize ENVISOB6 = new PageSize(499, 354); /** * A standard paper size. */ public static final PageSize ENVITALIAN = new PageSize(312, 652); /** * A standard paper size. */ public static final PageSize ENVELOPE = new PageSize(312, 652); /** * A standard paper size. */ public static final PageSize ENVKAKU2 = new PageSize(680, 941); /** * A standard paper size. */ public static final PageSize ENVKAKU2_ROTATED = new PageSize(941, 680); /** * A standard paper size. */ public static final PageSize ENVKAKU3 = new PageSize(612, 785); /** * A standard paper size. */ public static final PageSize ENVKAKU3_ROTATED = new PageSize(785, 612); /** * A standard paper size. */ public static final PageSize ENVMONARCH = new PageSize(279, 540); /** * A standard paper size. */ public static final PageSize ENVPERSONAL = new PageSize(261, 468); /** * A standard paper size. */ public static final PageSize ENVPRC1 = new PageSize(289, 468); /** * A standard paper size. */ public static final PageSize ENVPRC1_ROTATED = new PageSize(468, 289); /** * A standard paper size. */ public static final PageSize ENVPRC2 = new PageSize(289, 499); /** * A standard paper size. */ public static final PageSize ENVPRC2_ROTATED = new PageSize(499, 289); /** * A standard paper size. */ public static final PageSize ENVPRC3 = new PageSize(354, 499); /** * A standard paper size. */ public static final PageSize ENVPRC3_ROTATED = new PageSize(499, 354); /** * A standard paper size. */ public static final PageSize ENVPRC4 = new PageSize(312, 590); /** * A standard paper size. */ public static final PageSize ENVPRC4_ROTATED = new PageSize(590, 312); /** * A standard paper size. */ public static final PageSize ENVPRC5 = new PageSize(312, 624); /** * A standard paper size. */ public static final PageSize ENVPRC5_ROTATED = new PageSize(624, 312); /** * A standard paper size. */ public static final PageSize ENVPRC6 = new PageSize(340, 652); /** * A standard paper size. */ public static final PageSize ENVPRC6_ROTATED = new PageSize(652, 340); /** * A standard paper size. */ public static final PageSize ENVPRC7 = new PageSize(454, 652); /** * A standard paper size. */ public static final PageSize ENVPRC7_ROTATED = new PageSize(652, 454); /** * A standard paper size. */ public static final PageSize ENVPRC8 = new PageSize(340, 876); /** * A standard paper size. */ public static final PageSize ENVPRC8_ROTATED = new PageSize(876, 340); /** * A standard paper size. */ public static final PageSize ENVPRC9 = new PageSize(649, 918); /** * A standard paper size. */ public static final PageSize ENVPRC9_ROTATED = new PageSize(918, 649); /** * A standard paper size. */ public static final PageSize ENVPRC10 = new PageSize(918, 1298); /** * A standard paper size. */ public static final PageSize ENVPRC10_ROTATED = new PageSize(1298, 918); /** * A standard paper size. */ public static final PageSize ENVYOU4 = new PageSize(298, 666); /** * A standard paper size. */ public static final PageSize ENVYOU4_ROTATED = new PageSize(666, 298); /** * A standard paper size. */ public static final PageSize EXECUTIVE = new PageSize(522, 756); /** * A standard paper size. */ public static final PageSize FANFOLDUS = new PageSize(1071, 792); /** * A standard paper size. */ public static final PageSize FANFOLDGERMAN = new PageSize(612, 864); /** * A standard paper size. */ public static final PageSize FANFOLDGERMANLEGAL = new PageSize(612, 936); /** * A standard paper size. */ public static final PageSize FOLIO = new PageSize(595, 935); /** * A standard paper size. */ public static final PageSize ISOB0 = new PageSize(2835, 4008); /** * A standard paper size. */ public static final PageSize ISOB1 = new PageSize(2004, 2835); /** * A standard paper size. */ public static final PageSize ISOB2 = new PageSize(1417, 2004); /** * A standard paper size. */ public static final PageSize ISOB3 = new PageSize(1001, 1417); /** * A standard paper size. */ public static final PageSize ISOB4 = new PageSize(709, 1001); /** * A standard paper size. */ public static final PageSize ISOB5 = new PageSize(499, 709); /** * A standard paper size. */ public static final PageSize ISOB5_EXTRA = new PageSize(570, 782); /** * A standard paper size. */ public static final PageSize ISOB6 = new PageSize(354, 499); /** * A standard paper size. */ public static final PageSize ISOB7 = new PageSize(249, 354); /** * A standard paper size. */ public static final PageSize ISOB8 = new PageSize(176, 249); /** * A standard paper size. */ public static final PageSize ISOB9 = new PageSize(125, 176); /** * A standard paper size. */ public static final PageSize ISOB10 = new PageSize(88, 125); /** * A standard paper size. */ public static final PageSize LEDGER = new PageSize(1224, 792); /** * A standard paper size. */ public static final PageSize LEGAL = new PageSize(612, 1008); /** * A standard paper size. */ public static final PageSize LEGAL_EXTRA = new PageSize(684, 1080); /** * A standard paper size. */ public static final PageSize LETTER = new PageSize(612, 792); /** * A standard paper size. */ public static final PageSize LETTER_TRANSVERSE = new PageSize(612, 792); /** * A standard paper size. */ public static final PageSize LETTER_EXTRA = new PageSize(684, 864); /** * A standard paper size. */ public static final PageSize LETTER_EXTRATRANSVERSE = new PageSize(684, 864); /** * A standard paper size. */ public static final PageSize LETTER_PLUS = new PageSize(612, 914); /** * A standard paper size. */ public static final PageSize LETTER_ROTATED = new PageSize(792, 612); /** * A standard paper size. */ public static final PageSize LETTER_SMALL = new PageSize(612, 792); /** * A standard paper size. */ public static final PageSize MONARCH = ENVMONARCH; /** * A standard paper size. */ public static final PageSize NOTE = new PageSize(612, 792); /** * A standard paper size. */ public static final PageSize POSTCARD = new PageSize(284, 419); /** * A standard paper size. */ public static final PageSize POSTCARD_ROTATED = new PageSize(419, 284); /** * A standard paper size. */ public static final PageSize PRC16K = new PageSize(414, 610); /** * A standard paper size. */ public static final PageSize PRC16K_ROTATED = new PageSize(610, 414); /** * A standard paper size. */ public static final PageSize PRC32K = new PageSize(275, 428); /** * A standard paper size. */ public static final PageSize PRC32K_ROTATED = new PageSize(428, 275); /** * A standard paper size. */ public static final PageSize PRC32K_BIG = new PageSize(275, 428); /** * A standard paper size. */ public static final PageSize PRC32K_BIGROTATED = new PageSize(428, 275); /** * A standard paper size. */ public static final PageSize QUARTO = new PageSize(610, 780); /** * A standard paper size. */ public static final PageSize STATEMENT = new PageSize(396, 612); /** * A standard paper size. */ public static final PageSize SUPERA = new PageSize(643, 1009); /** * A standard paper size. */ public static final PageSize SUPERB = new PageSize(864, 1380); /** * A standard paper size. */ public static final PageSize TABLOID = new PageSize(792, 1224); /** * A standard paper size. */ public static final PageSize TABLOIDEXTRA = new PageSize(864, 1296); /** * The width of the page in point. */ private double width; /** * The height of the page in point. */ private double height; /** * Creates a new page-size object with the given width and height. * * @param width the width in point. * @param height the height in point. */ public PageSize(final double width, final double height) { this.width = width; this.height = height; } /** * Returns the page's width. * * @return the width in point. */ public double getWidth() { return width; } /** * Returns the page's height. * * @return the height in point. */ public double getHeight() { return height; } /** * Compares this page size with the given object. * * @param o the other object. * @return true, if the given object is also a PageSize object and has the same width and height, false otherwise. */ public boolean equals(final Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } final PageSize pageSize = (PageSize) o; if (equal(pageSize.height, height) == false) { return false; } if (equal(pageSize.width, width) == false) { return false; } return true; } /** * An internal helper method that compares two doubles for equality. * @param d1 the one double. * @param d2 the other double. * @return true, if both doubles are binary equal, false otherwise. */ private boolean equal(final double d1, final double d2) { return Double.doubleToLongBits(d1) == Double.doubleToLongBits(d2); } /** * Computes a hashcode for this page-size. * * @return the hashcode. */ public int hashCode() { long temp = width != +0.0d ? Double.doubleToLongBits(width) : 0L; int result = (int) (temp ^ (temp >>> 32)); temp = height != +0.0d ? Double.doubleToLongBits(height) : 0L; result = 29 * result + (int) (temp ^ (temp >>> 32)); return result; } }