Rectangle.java

package ac.essex.ooechs.imaging.commons.texture; 
 
import ac.essex.ooechs.imaging.commons.StatisticsSolver; 
import ac.essex.ooechs.imaging.commons.PixelLoader; 
import ac.essex.ooechs.imaging.commons.fast.FastStatistics; 
 
/** 
 * 
 * <p> 
 * Gets image intensity statistics about a Rectangular region on an image 
 * </p> 
 * 
 * <p/> 
 * This program is free software; you can redistribute it and/or 
 * modify it under the terms of the GNU General Public License 
 * as published by the Free Software Foundation; either version 2 
 * of the License, or (at your option) any later version, 
 * provided that any use properly credits the author. 
 * This program is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
 * GNU General Public License for more details at http://www.gnu.org 
 * </p> 
 * 
 * @author Olly Oechsle, University of Essex, Date: 07-Dec-2007 
 * @version 1.0 
 */ 
public class Rectangle implements AbstractShape { 
 
    protected int width, height; 
 
    public Rectangle(int width, int height) { 
        this.width = width; 
        this.height = height; 
    } 
 
    public FastStatistics getStatistics(PixelLoader image, int x, int y) { 
 
        FastStatistics solver = new FastStatistics(); 
 
        for (int dy = 0; dy < height; dy++)  { 
            for (int dx = 0; dx < width; dx++)  { 
                try { 
                solver.addData(image.getGreyValue(x + dx, y + dy)); 
                } catch (ArrayIndexOutOfBoundsException e)  { 
                    throw new RuntimeException("Array Index out of bounds: " + (x + dx) + "," + (y + dy)); 
                } 
            } 
        } 
 
        return solver; 
 
    } 
 
    public int getWidth() { 
        return width; 
    } 
 
    public int getHeight() { 
        return height; 
    } 
     
}