123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- /*-- $Id$ --
-
- ============================================================================
- The Apache Software License, Version 1.1
- ============================================================================
-
- Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modifica-
- tion, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- 3. The end-user documentation included with the redistribution, if any, must
- include the following acknowledgment: "This product includes software
- developed by the Apache Software Foundation (http://www.apache.org/)."
- Alternately, this acknowledgment may appear in the software itself, if
- and wherever such third-party acknowledgments normally appear.
-
- 4. The names "Fop" and "Apache Software Foundation" must not be used to
- endorse or promote products derived from this software without prior
- written permission. For written permission, please contact
- apache@apache.org.
-
- 5. Products derived from this software may not be called "Apache", nor may
- "Apache" appear in their name, without prior written permission of the
- Apache Software Foundation.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- This software consists of voluntary contributions made by many individuals
- on behalf of the Apache Software Foundation and was originally created by
- James Tauber <jtauber@jtauber.com>. For more information on the Apache
- Software Foundation, please see <http://www.apache.org/>.
-
- */
- package org.apache.fop.fo.pagination;
-
- // FOP
- import org.apache.fop.fo.*;
- import org.apache.fop.messaging.MessageHandler;
- import org.apache.fop.fo.properties.*;
- import org.apache.fop.layout.PageMaster;
- import org.apache.fop.layout.Region;
- import org.apache.fop.apps.FOPException;
-
- import java.util.Hashtable;
-
- public class SimplePageMaster extends FObj {
-
- public static class Maker extends FObj.Maker {
- public FObj make(FObj parent, PropertyList propertyList)
- throws FOPException {
- return new SimplePageMaster(parent, propertyList);
- }
- }
-
- public static FObj.Maker maker() {
- return new SimplePageMaster.Maker();
- }
-
- RegionBody regionBody;
- RegionBefore regionBefore;
- RegionAfter regionAfter;
- private Hashtable regions;
- private String masterName;
-
- LayoutMasterSet layoutMasterSet;
- PageMaster pageMaster;
-
- protected SimplePageMaster(FObj parent, PropertyList propertyList)
- throws FOPException {
- super(parent, propertyList);
- this.name = "fo:simple-page-master";
-
- this.regions = new Hashtable();
-
- if (parent.getName().equals("fo:layout-master-set")) {
- this.layoutMasterSet = (LayoutMasterSet) parent;
- String pm = this.properties.get("master-name").getString();
- if (pm.equals("")) {
- MessageHandler.errorln("WARNING: simple-page-master does not have "
- + "a master-name and so is being ignored");
- } else {
- this.layoutMasterSet.addSimplePageMaster(pm, this);
- this.masterName = pm;
- }
- } else {
- throw new FOPException("fo:simple-page-master must be child "
- + "of fo:layout-master-set, not "
- + parent.getName());
- }
- }
-
- protected void end() {
- int pageWidth = this.properties.get("page-width").getLength().mvalue();
- int pageHeight = this.properties.get("page-height").getLength().mvalue();
-
- int marginTop = this.properties.get("margin-top").getLength().mvalue();
- int marginBottom = this.properties.get("margin-bottom").getLength().mvalue();
- int marginLeft = this.properties.get("margin-left").getLength().mvalue();
- int marginRight = this.properties.get("margin-right").getLength().mvalue();
-
- int contentRectangleXPosition = marginLeft;
- int contentRectangleYPosition = pageHeight - marginTop;
- int contentRectangleWidth = pageWidth - marginLeft - marginRight;
- int contentRectangleHeight = pageHeight - marginTop - marginBottom;
-
- this.pageMaster = new PageMaster(pageWidth, pageHeight);
- this.pageMaster.addBody(this.regionBody.makeRegion(contentRectangleXPosition,
- contentRectangleYPosition,contentRectangleWidth,contentRectangleHeight));
-
- if (this.regionBefore != null)
- this.pageMaster.addBefore(this.regionBefore.makeRegion(contentRectangleXPosition,
- contentRectangleYPosition,contentRectangleWidth,contentRectangleHeight));
- if (this.regionAfter != null)
- this.pageMaster.addAfter(this.regionAfter.makeRegion(contentRectangleXPosition,
- contentRectangleYPosition,contentRectangleWidth,contentRectangleHeight));
- }
-
- public PageMaster getPageMaster() {
- return this.pageMaster;
- }
-
- public PageMaster getNextPageMaster() {
- return this.pageMaster;
- }
-
- protected void setRegionAfter(RegionAfter region)
- throws FOPException {
- if (regions.containsKey(region.getRegionName()))
- {
- throw new FOPException("region names must be unique"
- + " within simple-page-master '"
- + getMasterName() + "'");
- }
- else
- {
- regions.put(region.getRegionName(), region.getName());
- }
- this.regionAfter = region;
- }
-
- protected void setRegionBefore(RegionBefore region)
- throws FOPException {
- if (regions.containsKey(region.getRegionName()))
- {
- throw new FOPException("region names must be unique"
- + " within simple-page-master '"
- + getMasterName() + "'");
- }
- else
- {
- regions.put(region.getRegionName(), region.getName());
- }
- this.regionBefore = region;
- }
-
- protected void setRegionBody(RegionBody region)
- throws FOPException {
- if (regions.containsKey(region.getRegionName()))
- {
- throw new FOPException("region names must be unique"
- + " within simple-page-master '"
- + getMasterName() + "'");
- }
- else
- {
- regions.put(region.getRegionName(), region.getName());
- }
- this.regionBody = region;
- }
-
- public Hashtable getRegions()
- {
- return regions;
- }
-
- public String getMasterName()
- {
- return masterName;
- }
-
- }
|