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
00051 final File file = imgRegion.getFile();
00052 final Units units = imgRegion.getUnits();
00053 final double ppi = imgRegion.getPixelsPerInch();
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
00060
00061
00062 transform.translate(imgRegion.getX() * conv, imgRegion.getY() * conv);
00063
00064 transform.scale(imgRegion.getScaleX(), imgRegion.getScaleY());
00065
00066 transform.scale(ppiConversion, ppiConversion);
00067 g2d.drawRenderedImage(image, transform);
00068
00069 }
00070 }