001: /**
002: * ===========================================
003: * JFreeReport : a free Java reporting library
004: * ===========================================
005: *
006: * Project Info: http://reporting.pentaho.org/
007: *
008: * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors.
009: *
010: * This library is free software; you can redistribute it and/or modify it under the terms
011: * of the GNU Lesser General Public License as published by the Free Software Foundation;
012: * either version 2.1 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
015: * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016: * See the GNU Lesser General Public License for more details.
017: *
018: * You should have received a copy of the GNU Lesser General Public License along with this
019: * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
020: * Boston, MA 02111-1307, USA.
021: *
022: * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
023: * in the United States and other countries.]
024: *
025: * ------------
026: * PageDefinition.java
027: * ------------
028: * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors.
029: */package org.jfree.report;
030:
031: import java.awt.geom.Rectangle2D;
032: import java.awt.print.PageFormat;
033: import java.io.Serializable;
034:
035: /**
036: * A logical page definition for a report.
037: * <p/>
038: * Page oriented reports use the page definition to distribute the content of one logical page to the physical pages.
039: * The order of the physical pages in the page definition defines the content order in the generated documents.
040: * <p/>
041: * Flow oriented reports will use the page-definitions width as default width for the layouting.
042: * <p/>
043: * If a logical page is completly empty, it will be removed from the report and a pageCanceled event is fired. If a
044: * physical page within a non empty logical page is empty, if depends on the ReportProcessor whether the page is printed
045: * as empty page or whether it will be removed from the report.
046: * <p/>
047: * Areas of the logical page not covered by the physical pages will not cause errors, the content in these areas will be
048: * ignored and not printed.
049: * <p/>
050: * Page definitions must not be changed during the report processing, or funny things will happen.
051: *
052: * @author Thomas Morgner
053: */
054: public interface PageDefinition extends Cloneable, Serializable {
055: /**
056: * Returns the total width of the logical page.
057: *
058: * @return the width of the page.
059: */
060: public float getWidth();
061:
062: /**
063: * Returns the total height of the logical page.
064: *
065: * @return the height of the page.
066: */
067: public float getHeight();
068:
069: /**
070: * Returns the number of physical pages in this logical page definition.
071: *
072: * @return the number of physical pages in the page definition.
073: */
074: public int getPageCount();
075:
076: /**
077: * Returns all page positions as array.
078: *
079: * @return the collected page positions
080: * @see PageDefinition#getPagePosition(int)
081: */
082: public Rectangle2D[] getPagePositions();
083:
084: /**
085: * Describes the internal position of the given page within the logical page. The logical page does not include any
086: * page margins, the printable area for a page starts at (0,0).
087: *
088: * @param index the index of the physical pageformat
089: * @return the bounds for the page.
090: */
091: public Rectangle2D getPagePosition(int index);
092:
093: /**
094: * Returns the page format for the given page number. The page format contains local coordinates - that means that the
095: * point (0,0) denotes the upper left corner of this returned page format and not global coordinates.
096: *
097: * @param pos the position of the pageformat within the page
098: * @return the given pageformat.
099: */
100: public PageFormat getPageFormat(int pos);
101:
102: /**
103: * Creates a copy of the page definition.
104: *
105: * @return a copy of the page definition.
106: * @throws CloneNotSupportedException if cloning failed for some reason.
107: */
108: public Object clone() throws CloneNotSupportedException;
109: }
|