1 package org.columba.core.print; 17 18 import java.awt.Graphics ; 19 import java.awt.Graphics2D ; 20 import java.awt.print.PageFormat ; 21 import java.awt.print.Paper ; 22 import java.awt.print.Printable ; 23 import java.util.Iterator ; 24 import java.util.List ; 25 import java.util.Vector ; 26 27 public class cPage implements Printable { 28 public static final int PORTRAIT = 1; 29 30 public static final int LANDSCAPE = 2; 31 32 private cUnit leftMargin; 33 34 private cUnit rightMargin; 35 36 private cUnit topMargin; 37 38 private cUnit bottomMargin; 39 40 private cUnit gutter; 41 42 private List pageObjects; 43 44 private cSize pageSize; 45 46 private cDocument document; 47 48 public cPage(cDocument d) { 49 pageObjects = new Vector (); 50 51 leftMargin = new cCmUnit(); 52 rightMargin = new cCmUnit(); 53 topMargin = new cCmUnit(); 54 bottomMargin = new cCmUnit(); 55 gutter = new cCmUnit(); 56 57 document = d; 58 } 59 60 public int countObjects() { 61 return pageObjects.size(); 62 } 63 64 public int print(Graphics g, PageFormat pf, int pi) { 65 Graphics2D g2d = (Graphics2D ) g; 66 Paper paper = pf.getPaper(); 67 68 leftMargin.setPoints(paper.getImageableX()); 69 rightMargin.setPoints(paper.getWidth() 70 - (paper.getImageableX() + paper.getImageableWidth())); 71 bottomMargin.setPoints(paper.getHeight() 72 - (paper.getImageableY() + paper.getImageableHeight())); 73 topMargin.setPoints(paper.getImageableY()); 74 75 cPointUnit width = new cPointUnit(paper.getImageableWidth()); 76 cPointUnit height = new cPointUnit(paper.getImageableHeight()); 77 78 pageSize = new cSize(width, height); 79 80 cPrintObject header = document.getHeader(); 81 82 if (header != null) { 83 header.setPage(this); 84 header.print(g2d); 85 } 86 87 for (Iterator it = pageObjects.iterator(); it.hasNext();) { 88 ((cPrintObject) it.next()).print(g2d); 89 90 } 93 94 cPrintObject footer = document.getFooter(); 95 96 if (footer != null) { 97 footer.setPage(this); 98 footer.print(g2d); 99 } 100 101 return PAGE_EXISTS; 102 } 103 104 public cDocument getDocument() { 105 return document; 106 } 107 108 public void setDocument(cDocument d) { 109 document = d; 110 } 111 112 public void setLeftMargin(cUnit m) { 113 leftMargin = m; 114 } 115 116 public void setRightMargin(cUnit m) { 117 rightMargin = m; 118 } 119 120 public void setTopMargin(cUnit m) { 121 topMargin = m; 122 } 123 124 public void setBottomMargin(cUnit m) { 125 bottomMargin = m; 126 } 127 128 public void setGutter(cUnit m) { 129 gutter = m; 130 } 131 132 public void add(cPrintObject po) { 133 po.setPage(this); 134 pageObjects.add(po); 135 } 136 137 public cPoint getPrintableAreaOrigin() { 138 cPoint origin; 139 cUnit headerMargin = new cCmUnit(); 140 141 cPrintObject header = document.getHeader(); 142 143 if (header != null) { 144 headerMargin = header.getSize(pageSize.getWidth()).getHeight(); 145 } 146 147 origin = new cPoint(leftMargin.add(gutter), topMargin.add(headerMargin)); 148 149 return origin; 150 } 151 152 public cSize getPrintableAreaSize() { 153 cUnit headerMargin = new cCmUnit(); 154 155 cPrintObject header = document.getHeader(); 156 157 if (header != null) { 158 headerMargin.addI(header.getSize(pageSize.getWidth()).getHeight()); 159 } 160 161 cPrintObject footer = document.getFooter(); 162 163 if (footer != null) { 164 headerMargin.addI(footer.getSize(pageSize.getWidth()).getHeight()); 165 } 166 167 return pageSize.subHeight(headerMargin); 168 } 169 } 170 | Popular Tags |