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);
00060
00061
00062 final Dimension dimension = ImageUtils.readSize(imgFile);
00063
00064
00065 pixelsPerInch = pixelConversion.getPixelsPerInch();
00066
00067 imageFile = imgFile;
00068
00069
00070 final Units u = getUnits();
00071
00072
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
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 }