Changeset 793
- Timestamp:
- 01/30/14 16:09:19 (10 years ago)
- Location:
- trunk/src/org/expeditee
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/expeditee/io/PDF2Writer.java
r792 r793 100 100 @Override 101 101 protected void writePicture(Picture pic) throws IOException { 102 Image image = pic.get ImageToDraw();102 Image image = pic.getCroppedImage(); 103 103 try { 104 104 PdfContentByte cb = _pdfWriter.getDirectContent(); 105 105 com.lowagie.text.Image iTextImage = com.lowagie.text.Image.getInstance(image, null); 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()); 106 iTextImage.setAbsolutePosition(pic.getX(), _pdfWriter.getPageSize().getHeight() - pic.getY() - pic.getHeight()); 107 iTextImage.scalePercent(pic.getScale() * 100); 108 iTextImage.setRotationDegrees((float) - pic.getRotate()); 110 109 cb.addImage(iTextImage); 111 110 } catch (DocumentException e) { -
trunk/src/org/expeditee/items/Picture.java
r792 r793 9 9 import java.awt.Polygon; 10 10 import java.awt.Rectangle; 11 import java.awt.RenderingHints;12 11 import java.awt.Shape; 13 12 import java.awt.Stroke; … … 17 16 import java.awt.image.BufferedImage; 18 17 import java.awt.image.CropImageFilter; 19 import java.awt.image.DataBufferInt;20 18 import java.awt.image.FilteredImageSource; 21 19 import java.awt.image.ImageObserver; … … 23 21 import java.io.IOException; 24 22 import java.text.DecimalFormat; 25 import java.util.Arrays;26 23 27 24 import javax.imageio.ImageIO; … … 58 55 59 56 protected Image _image = null; 60 protected Image _imageToDraw = null;61 57 62 58 private int _scaleType = RATIO; … … 206 202 _scale = 1F; 207 203 } 208 209 updateImageToDraw();210 204 } 211 205 … … 338 332 public void setWidth(Integer width) { 339 333 _scale = width * 1F / (_end.x - _start.x); 340 _imageToDraw = null;341 334 } 342 335 … … 375 368 } 376 369 377 protected void updateImageToDraw() { 378 _imageToDraw = null; 370 public void paintImageTiling(Graphics2D g) { 379 371 if (_image == null) { 380 372 return; … … 445 437 } 446 438 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); 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); 484 444 } 485 445 … … 559 519 Picture p = createPicture(); 560 520 p._image = _image; 561 p._imageToDraw = null;562 521 p._mode = _mode; 563 522 // Doing Duplicate item duplicates link mark which we dont want to do … … 616 575 public void setScale(float scale) { 617 576 _scale = scale; 618 _imageToDraw = null;619 577 } 620 578 … … 671 629 updateSource(); 672 630 updatePolygon(); 673 updateImageToDraw();674 631 // Make sure items that are resized display the border 675 632 invalidateAll(); … … 834 791 updateSource(); 835 792 super.translate(origin, ratio); 836 _imageToDraw = null;837 793 } 838 794 … … 861 817 setScale(getScale() * scale); 862 818 super.scale(scale, originX, originY); 863 _imageToDraw = null;864 819 } 865 820 866 821 public void setFlipX(boolean flip) { 867 822 _flipX = flip; 868 _imageToDraw = null;869 823 } 870 824 871 825 public void setFlipY(boolean flip) { 872 826 _flipY = flip; 873 _imageToDraw = null;874 827 } 875 828 … … 886 839 updateSource(); 887 840 updatePolygon(); 888 _imageToDraw = null;889 841 } 890 842
Note:
See TracChangeset
for help on using the changeset viewer.