1 51 package org.apache.fop.layout; 52 53 import org.apache.fop.render.Renderer; 55 import org.apache.fop.fo.properties.Position; 56 57 import java.util.Iterator ; 59 60 public class SpanArea extends AreaContainer { 61 62 private int columnCount; 63 private int currentColumn = 1; 64 private int columnGap = 0; 65 66 private boolean isBalanced = false; 68 69 public SpanArea(FontState fontState, int xPosition, int yPosition, 70 int allocationWidth, int maxHeight, int columnCount, 71 int columnGap) { 72 super(fontState, xPosition, yPosition, allocationWidth, maxHeight, 73 Position.ABSOLUTE); 74 75 this.contentRectangleWidth = allocationWidth; 76 this.columnCount = columnCount; 77 this.columnGap = columnGap; 78 79 int columnWidth = (allocationWidth - columnGap * (columnCount - 1)) 80 / columnCount; 81 for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) { 82 int colXPosition = (xPosition 83 + columnIndex * (columnWidth + columnGap)); 84 int colYPosition = yPosition; 85 ColumnArea colArea = new ColumnArea(fontState, colXPosition, 86 colYPosition, columnWidth, 87 maxHeight, columnCount); 88 addChild(colArea); 89 colArea.setColumnIndex(columnIndex + 1); 90 } 91 } 92 93 public void render(Renderer renderer) { 94 renderer.renderSpanArea(this); 95 } 96 97 public void end() {} 98 99 public void start() {} 100 101 public int spaceLeft() { 102 return maxHeight - currentHeight; 103 } 104 105 public int getColumnCount() { 106 return columnCount; 107 } 108 109 public int getCurrentColumn() { 110 return currentColumn; 111 } 112 113 public void setCurrentColumn(int currentColumn) { 114 if (currentColumn <= columnCount) 115 this.currentColumn = currentColumn; 116 else 117 this.currentColumn = columnCount; 118 } 119 120 public AreaContainer getCurrentColumnArea() { 121 return (AreaContainer)getChildren().get(currentColumn - 1); 122 } 123 124 public boolean isBalanced() { 125 return isBalanced; 126 } 127 128 public void setIsBalanced() { 129 this.isBalanced = true; 130 } 131 132 public int getTotalContentHeight() { 133 int totalContentHeight = 0; 134 for (Iterator e = getChildren().iterator(); e.hasNext(); ) { 135 totalContentHeight += 136 ((AreaContainer)e.next()).getContentHeight(); 137 } 138 return totalContentHeight; 139 } 140 141 public int getMaxContentHeight() { 142 int maxContentHeight = 0; 143 for (Iterator e = getChildren().iterator(); e.hasNext(); ) { 144 AreaContainer nextElm = (AreaContainer)e.next(); 145 if (nextElm.getContentHeight() > maxContentHeight) 146 maxContentHeight = nextElm.getContentHeight(); 147 } 148 return maxContentHeight; 149 } 150 151 public void setPage(Page page) { 152 this.page = page; 153 for (Iterator e = getChildren().iterator(); e.hasNext(); ) { 154 ((AreaContainer)e.next()).setPage(page); 155 } 156 } 157 158 public boolean isLastColumn() { 159 return (currentColumn == columnCount); 160 } 161 162 } 163 | Popular Tags |