ImageRenderer.java

00001 package edu.stanford.hci.r3.render.regions;
00002 
00003 import java.awt.Graphics2D;
00004 import java.awt.geom.AffineTransform;
00005 import java.io.File;
00006 
00007 import javax.media.jai.PlanarImage;
00008 
00009 import edu.stanford.hci.r3.paper.regions.ImageRegion;
00010 import edu.stanford.hci.r3.render.RegionRenderer;
00011 import edu.stanford.hci.r3.units.Points;
00012 import edu.stanford.hci.r3.units.Units;
00013 import edu.stanford.hci.r3.util.graphics.ImageCache;
00014 
00026 public class ImageRenderer extends RegionRenderer {
00027 
00031         private ImageRegion imgRegion;
00032 
00036         public ImageRenderer(ImageRegion region) {
00037                 super(region);
00038                 imgRegion = region;
00039         }
00040 
00046         public void renderToG2D(Graphics2D g2d) {
00047                 if (RegionRenderer.DEBUG_REGIONS) {
00048                         super.renderToG2D(g2d);
00049                 }
00050                 // final AffineTransform oldTransform = new AffineTransform(g2d.getTransform());
00051                 final File file = imgRegion.getFile();
00052                 final Units units = imgRegion.getUnits();
00053                 final double ppi = imgRegion.getPixelsPerInch(); // default is 72
00054                 final double ppiConversion = 72 / ppi;
00055                 final double conv = units.getConversionTo(new Points());
00056                 final PlanarImage image = ImageCache.loadPlanarImage(file);
00057                 final AffineTransform transform = new AffineTransform();
00058 
00059                 // System.out.println(imgRegion);
00060 
00061                 // translate to the origin first!
00062                 transform.translate(imgRegion.getX() * conv, imgRegion.getY() * conv);
00063                 // resize the image based on its scale
00064                 transform.scale(imgRegion.getScaleX(), imgRegion.getScaleY());
00065                 // resize the image based on its pixelsPerInch
00066                 transform.scale(ppiConversion, ppiConversion);
00067                 g2d.drawRenderedImage(image, transform);
00068                 // g2d.setTransform(oldTransform);
00069         }
00070 }

Generated on Sat Apr 14 18:21:35 2007 for R3 Paper Toolkit by  doxygen 1.4.7