Changeset 789 for trunk/src/org/expeditee/io
- Timestamp:
- 01/30/14 11:11:40 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/expeditee/io/PDF2Writer.java
r655 r789 3 3 import java.awt.Dimension; 4 4 import java.awt.Image; 5 import java.awt.Polygon; 5 6 import java.io.FileOutputStream; 6 7 import java.io.IOException; 7 8 import java.io.Writer; 8 9 import java.util.Collection; 10 import java.util.LinkedList; 9 11 import java.util.List; 10 12 … … 12 14 import org.expeditee.gui.FrameGraphics; 13 15 import org.expeditee.items.Item; 16 import org.expeditee.items.Line; 14 17 import org.expeditee.items.Picture; 15 18 import org.expeditee.items.Text; … … 100 103 try { 101 104 PdfContentByte cb = _pdfWriter.getDirectContent(); 102 com.lowagie.text.Image iTextImage = com.lowagie.text.Image 103 .getInstance(image, null); 105 com.lowagie.text.Image iTextImage = com.lowagie.text.Image.getInstance(image, null); 104 106 iTextImage.setAbsolutePosition(pic.getX(), _pdfWriter.getPageSize().getHeight() - pic.getY() - pic.getHeight()); 107 iTextImage.setRotationDegrees((float) - pic.getRotate()); 105 108 cb.addImage(iTextImage); 106 109 } catch (DocumentException e) { 107 110 e.printStackTrace(); 111 } 112 } 113 114 private List<Line> seenLines = new LinkedList<Line>(); 115 private List<Item> seenArrowHeads = new LinkedList<Item>(); 116 @Override 117 protected void writeLine(Line line) throws IOException { 118 if(seenLines.contains(line)) { 119 return; 120 } 121 PdfContentByte cb = _pdfWriter.getDirectContent(); 122 float height = _pdfWriter.getPageSize().getHeight(); 123 if(line.getStartItem().isEnclosed()) { 124 seenLines.add(line); 125 Line currentLine = line; 126 Item currentItem = line.getStartItem(); 127 cb.moveTo(currentItem.getX(), height - currentItem.getY()); 128 for(;;) { 129 currentItem = currentLine.getOppositeEnd(currentItem); 130 cb.lineTo(currentItem.getX(), height - currentItem.getY()); 131 for(Line l : currentItem.getLines()) { 132 if(l.equals(currentLine)) { 133 continue; 134 } 135 currentLine = l; 136 break; 137 } 138 if(currentLine == null || currentLine.equals(line)) { 139 break; 140 } 141 seenLines.add(currentLine); 142 } 143 cb.setColorFill(currentItem.getFillColor()); 144 cb.setColorStroke(currentLine.getColor()); 145 cb.closePathFillStroke(); 146 } else { 147 for(Item l : line.getStartItem().getAllConnected()) { 148 if(l instanceof Line && !seenLines.contains(l)) { 149 seenLines.add((Line) l); 150 Item start = ((Line) l).getStartItem(); 151 Item end = ((Line) l).getEndItem(); 152 cb.moveTo(start.getX(), height - start.getY()); 153 cb.lineTo(end.getX(), height - end.getY()); 154 cb.setColorStroke(l.getColor()); 155 cb.closePathStroke(); 156 Polygon arrow = ((Line) l).getStartArrow(); 157 if(arrow != null) { 158 cb.moveTo(arrow.xpoints[0], height - arrow.ypoints[0]); 159 for(int i = 1; i < arrow.npoints; i++) { 160 cb.lineTo(arrow.xpoints[i], height - arrow.ypoints[i]); 161 } 162 cb.setColorFill(l.getColor()); 163 cb.closePath(); 164 cb.fill(); 165 } 166 arrow = ((Line) l).getEndArrow(); 167 if(arrow != null) { 168 cb.moveTo(arrow.xpoints[0], height - arrow.ypoints[0]); 169 for(int i = 1; i < arrow.npoints; i++) { 170 cb.lineTo(arrow.xpoints[i], height - arrow.ypoints[i]); 171 } 172 cb.setColorFill(l.getColor()); 173 cb.closePath(); 174 cb.fill(); 175 } 176 } 177 } 108 178 } 109 179 }
Note:
See TracChangeset
for help on using the changeset viewer.