package wordcloud.image; import java.awt.image.BufferedImage; /** * Created by kenny on 7/4/14. */ public class CollisionRaster { private final int[][] data; private final int width; private final int height; public CollisionRaster(final BufferedImage bufferedImage) { this.width = bufferedImage.getWidth(); this.height = bufferedImage.getHeight(); data = new int[width][height]; for(int y = 0; y < height; y++) { for(int x = 0; x < width; x++) { data[x][y] = bufferedImage.getRGB(x, y); } } } public CollisionRaster(int width, int height) { this.width = width; this.height = height; data = new int[width][height]; } public int getRGB(int x, int y) { return data[x][y]; } public void setRGB(int x, int y, int rgb) { data[x][y] = rgb; } public void mask(final CollisionRaster collisionRaster, int x, int y) { final int maxHeight = Math.min(y + collisionRaster.getHeight(), height); final int maxWidth = Math.min(x + collisionRaster.getWidth(), width); for(int offY = y, offY2 = 0; offY < maxHeight; offY++, offY2++) { for(int offX = x, offX2 = 0; offX < maxWidth; offX++, offX2++) { if(!collisionRaster.isTransparent(offX2, offY2)) { data[offX][offY] = collisionRaster.getRGB(offX2, offY2); } } } } public boolean isTransparent(int x, int y) { return (data[x][y] & 0xFF000000) == 0x00000000; } public int getWidth() { return width; } public int getHeight() { return height; } }