Changeset 792
- Timestamp:
- 01/30/14 15:55:59 (10 years ago)
- Location:
- trunk/src/org/expeditee
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/expeditee/io/PDF2Writer.java
r789 r792 100 100 @Override 101 101 protected void writePicture(Picture pic) throws IOException { 102 Image image = pic.get CroppedImage();102 Image image = pic.getImageToDraw(); 103 103 try { 104 104 PdfContentByte cb = _pdfWriter.getDirectContent(); 105 105 com.lowagie.text.Image iTextImage = com.lowagie.text.Image.getInstance(image, null); 106 iTextImage.setAbsolutePosition(pic.getX(), _pdfWriter.getPageSize().getHeight() - pic.getY() - pic.getHeight()); 107 iTextImage.setRotationDegrees((float) - pic.getRotate()); 106 // System.out.println(pic.getScale()); 107 // iTextImage.scalePercent(pic.getScale() * 100); 108 iTextImage.setAbsolutePosition(pic.getPolygon().getBounds().x, _pdfWriter.getPageSize().getHeight() - pic.getPolygon().getBounds().y - image.getHeight(null)); 109 // iTextImage.setRotationDegrees((float) - pic.getRotate()); 108 110 cb.addImage(iTextImage); 109 111 } catch (DocumentException e) { … … 113 115 114 116 private List<Line> seenLines = new LinkedList<Line>(); 115 private List<Item> seenArrowHeads = new LinkedList<Item>();116 117 @Override 117 118 protected void writeLine(Line line) throws IOException { -
trunk/src/org/expeditee/items/Picture.java
r726 r792 9 9 import java.awt.Polygon; 10 10 import java.awt.Rectangle; 11 import java.awt.RenderingHints; 11 12 import java.awt.Shape; 12 13 import java.awt.Stroke; … … 16 17 import java.awt.image.BufferedImage; 17 18 import java.awt.image.CropImageFilter; 19 import java.awt.image.DataBufferInt; 18 20 import java.awt.image.FilteredImageSource; 19 21 import java.awt.image.ImageObserver; … … 21 23 import java.io.IOException; 22 24 import java.text.DecimalFormat; 25 import java.util.Arrays; 23 26 24 27 import javax.imageio.ImageIO; … … 55 58 56 59 protected Image _image = null; 60 protected Image _imageToDraw = null; 57 61 58 62 private int _scaleType = RATIO; … … 202 206 _scale = 1F; 203 207 } 208 209 updateImageToDraw(); 204 210 } 205 211 … … 332 338 public void setWidth(Integer width) { 333 339 _scale = width * 1F / (_end.x - _start.x); 340 _imageToDraw = null; 334 341 } 335 342 … … 368 375 } 369 376 370 public void paintImageTiling(Graphics2D g) { 377 protected void updateImageToDraw() { 378 _imageToDraw = null; 371 379 if (_image == null) { 372 380 return; … … 437 445 } 438 446 439 AffineTransform at = new AffineTransform(); 440 at.translate(dX1, dY1); 441 at.rotate(Math.PI * _rotate / 180, tmp.getWidth() / 2, tmp.getHeight() / 2); 442 g.drawImage(tmp, at, _imageObserver); 443 // g.drawImage(tmp, dX1, dY1, dX2, dY2, 0, 0, tmp.getWidth(), tmp.getHeight(), _imageObserver); 447 double angle = Math.PI * _rotate / 180; 448 double sin = Math.abs(Math.sin(angle)), cos = Math.abs(Math.cos(angle)); 449 int w = tmp.getWidth(), h = tmp.getHeight(); 450 int neww = (int)Math.floor(w * cos + h * sin), newh = (int)Math.floor(h * cos + w * sin); 451 452 BufferedImage rotated = new BufferedImage(neww, newh, BufferedImage.TYPE_INT_ARGB); 453 Arrays.fill(((DataBufferInt)rotated.getRaster().getDataBuffer()).getData(), 0); 454 455 Graphics2D g = rotated.createGraphics(); 456 g.translate((neww - w) / 2, (newh - h) / 2); 457 g.rotate(angle, tmp.getWidth() / 2, tmp.getHeight() / 2); 458 g.drawRenderedImage(tmp, null); 459 460 _imageToDraw = rotated;//.getScaledInstance(rotated.getWidth(), rotated.getHeight(), Image.SCALE_REPLICATE); 461 } 462 463 public Image getImageToDraw() { 464 return _imageToDraw; 465 } 466 467 // TODO: 468 // - Fix positioning (need to use something like polygon position) 469 // - Use anti-aliasing for rotation 470 471 public void paintImageTiling(Graphics2D g) { 472 473 // BufferedImage tmp = getImageToDraw(); 474 // if(tmp == null) { 475 // return; 476 // } 477 // tmp. 478 // g.drawImage(tmp, at, _imageObserver); 479 if(_imageToDraw == null) { 480 updateImageToDraw(); 481 } 482 Rectangle b = getPolygon().getBounds(); 483 g.drawImage(_imageToDraw, b.x + 1, b.y + 1, _imageObserver); 444 484 } 445 485 … … 519 559 Picture p = createPicture(); 520 560 p._image = _image; 561 p._imageToDraw = null; 521 562 p._mode = _mode; 522 563 // Doing Duplicate item duplicates link mark which we dont want to do … … 575 616 public void setScale(float scale) { 576 617 _scale = scale; 618 _imageToDraw = null; 577 619 } 578 620 … … 629 671 updateSource(); 630 672 updatePolygon(); 673 updateImageToDraw(); 631 674 // Make sure items that are resized display the border 632 675 invalidateAll(); … … 791 834 updateSource(); 792 835 super.translate(origin, ratio); 836 _imageToDraw = null; 793 837 } 794 838 … … 817 861 setScale(getScale() * scale); 818 862 super.scale(scale, originX, originY); 863 _imageToDraw = null; 819 864 } 820 865 821 866 public void setFlipX(boolean flip) { 822 867 _flipX = flip; 868 _imageToDraw = null; 823 869 } 824 870 825 871 public void setFlipY(boolean flip) { 826 872 _flipY = flip; 873 _imageToDraw = null; 827 874 } 828 875 … … 839 886 updateSource(); 840 887 updatePolygon(); 888 _imageToDraw = null; 841 889 } 842 890
Note:
See TracChangeset
for help on using the changeset viewer.