ImageRegion.java

00001 package edu.stanford.hci.r3.paper.regions;
00002 
00003 import java.awt.Dimension;
00004 import java.awt.geom.Rectangle2D;
00005 import java.io.File;
00006 
00007 import edu.stanford.hci.r3.paper.Region;
00008 import edu.stanford.hci.r3.render.RegionRenderer;
00009 import edu.stanford.hci.r3.render.regions.ImageRenderer;
00010 import edu.stanford.hci.r3.units.Pixels;
00011 import edu.stanford.hci.r3.units.Units;
00012 import edu.stanford.hci.r3.util.graphics.ImageUtils;
00013 
00025 public class ImageRegion extends Region {
00026 
00027         private File imageFile;
00028 
00032         private Rectangle2D imageRect;
00033 
00037         private double pixelsPerInch;
00038 
00047         public ImageRegion(String name, File imgFile, Units originX, Units originY) {
00048                 this(name, imgFile, originX, originY, new Pixels(1, 72));
00049         }
00050 
00057         public ImageRegion(String name, File imgFile, Units originX, Units originY,
00058                         Pixels pixelConversion) {
00059                 super(name, originX); // initialize units
00060 
00061                 // figure out the shape of this image, by loading it and determining the dimensions
00062                 final Dimension dimension = ImageUtils.readSize(imgFile);
00063 
00064                 // infer the physical size of the photo from this value
00065                 pixelsPerInch = pixelConversion.getPixelsPerInch();
00066 
00067                 imageFile = imgFile;
00068 
00069                 // my units (actually, just originX, as we passed it in earlier)
00070                 final Units u = getUnits();
00071 
00072                 // create a Rectangle from origin X, Y, with the correct dimensions (72 pixels per inch)
00073                 final Rectangle2D.Double rect = new Rectangle2D.Double(originX.getValue(), originY
00074                                 .getValueIn(u), new Pixels(dimension.getWidth(), pixelsPerInch).getValueIn(u),
00075                                 new Pixels(dimension.getHeight(), pixelsPerInch).getValueIn(u));
00076                 // System.out.println(rect);
00077                 setShape(rect);
00078                 imageRect = rect;
00079 
00080                 setName("An Image Region: " + imgFile.getName());
00081         }
00082 
00086         public File getFile() {
00087                 return imageFile;
00088         }
00089 
00093         public double getHeightVal() {
00094                 return imageRect.getHeight() * scaleY;
00095         }
00096 
00100         public double getPixelsPerInch() {
00101                 return pixelsPerInch;
00102         }
00103 
00107         public RegionRenderer getRenderer() {
00108                 return new ImageRenderer(this);
00109         }
00110 
00114         public double getWidthVal() {
00115                 return imageRect.getWidth() * scaleX;
00116         }
00117 
00124         public double getX() {
00125                 return imageRect.getX();
00126         }
00127 
00134         public double getY() {
00135                 return imageRect.getY();
00136         }
00137 
00141         public String toString() {
00142                 return "Image: {" + getX() + ", " + getY() + ", " + getWidthVal() + ", " + getHeightVal()
00143                                 + "} in " + getUnits().getUnitName();
00144         }
00145 }

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