1 51 package org.apache.fop.fo.pagination; 52 53 import org.apache.fop.fo.FObj; 55 import org.apache.fop.fo.PropertyList; 56 import org.apache.fop.fo.properties.Overflow; 57 import org.apache.fop.apps.FOPException; 58 import org.apache.fop.layout.RegionArea; 59 import org.apache.fop.layout.BodyRegionArea; 60 import org.apache.fop.layout.BorderAndPadding; 61 import org.apache.fop.layout.BackgroundProps; 62 import org.apache.fop.layout.MarginProps; 63 64 71 public class RegionBody extends Region { 72 73 74 public static class Maker extends FObj.Maker { 75 public FObj make(FObj parent, PropertyList propertyList, 76 String systemId, int line, int column) 77 throws FOPException { 78 return new RegionBody(parent, propertyList, systemId, line, column); 79 } 80 81 } 82 83 public static FObj.Maker maker() { 84 return new RegionBody.Maker(); 85 } 86 87 public static final String REGION_CLASS = "body"; 88 89 protected RegionBody(FObj parent, PropertyList propertyList, 90 String systemId, int line, int column) 91 throws FOPException { 92 super(parent, propertyList, systemId, line, column); 93 } 94 95 public String getName() { 96 return "fo:region-body"; 97 } 98 99 RegionArea makeRegionArea(int allocationRectangleXPosition, 100 int allocationRectangleYPosition, 101 int allocationRectangleWidth, 102 int allocationRectangleHeight) { 103 104 BorderAndPadding bap = propMgr.getBorderAndPadding(); 106 BackgroundProps bProps = propMgr.getBackgroundProps(); 107 108 MarginProps mProps = propMgr.getMarginProps(); 110 111 117 BodyRegionArea body = new BodyRegionArea(allocationRectangleXPosition 118 + mProps.marginLeft, 119 allocationRectangleYPosition 120 - mProps.marginTop, 121 allocationRectangleWidth 122 - mProps.marginLeft 123 - mProps.marginRight, 124 allocationRectangleHeight 125 - mProps.marginTop 126 - mProps.marginBottom); 127 128 body.setBackground(propMgr.getBackgroundProps()); 129 130 int overflow = this.properties.get("overflow").getEnum(); 131 String columnCountAsString = 132 this.properties.get("column-count").getString(); 133 int columnCount = 1; 134 try { 135 if( columnCountAsString.charAt(0) >= '0' && columnCountAsString.charAt(0)<= '9') { 136 columnCount = Integer.parseInt(columnCountAsString); 137 } else { 138 log.error("Bad value on region body 'column-count'"); 139 } 140 } catch (NumberFormatException nfe) { 141 log.error("Bad value on region body 'column-count'"); 142 columnCount = 1; 143 } 144 if ((columnCount > 1) && (overflow == Overflow.SCROLL)) { 145 log.error("Setting 'column-count' to 1 because " 148 + "'overflow' is set to 'scroll'"); 149 columnCount = 1; 150 } 151 body.setColumnCount(columnCount); 152 153 int columnGap = 154 this.properties.get("column-gap").getLength().mvalue(); 155 body.setColumnGap(columnGap); 156 157 return body; 158 } 159 160 protected String getDefaultRegionName() { 161 return "xsl-region-body"; 162 } 163 164 public String getRegionClass() { 165 return REGION_CLASS; 166 } 167 168 } 169 | Popular Tags |