/** * Create a new BackgroundPainter. The tiles used for painting will be cut non-uniformly, so that * the grid will be placed according to the given dimensions. * * @param image image name * @param leftWidth width of the left tile row * @param centerWidth width of the center tile row * @param topHeight height of the top tile row * @param centerHeight height of the center tile row */ public BackgroundPainter( String image, int leftWidth, int centerWidth, int topHeight, int centerHeight) { tileWidth = 0; tileHeight = 0; SpriteStore store = SpriteStore.get(); Sprite mother = store.getSprite(image); images = new Sprite[9]; int[] widths = new int[3]; widths[0] = leftWidth; widths[1] = centerWidth; widths[2] = mother.getWidth() - leftWidth - centerWidth; int[] heights = new int[3]; heights[0] = topHeight; heights[1] = centerHeight; heights[2] = mother.getHeight() - topHeight - centerHeight; int x = 0; int y = 0; int i = 0; for (int yInd = 0; yInd < 3; yInd++) { for (int xInd = 0; xInd < 3; xInd++) { images[i] = store.getTile(mother, x, y, widths[xInd], heights[yInd]); x += widths[xInd]; i++; } x = 0; y += heights[yInd]; } }
/** * Create a new BackgroundPainter. * * @param image image name. The image dimensions should be multiples of 3. The tiles used for * painting will be the image divided uniformly to three in both vertical and horizontal * directions */ public BackgroundPainter(String image) { SpriteStore store = SpriteStore.get(); Sprite mother = store.getSprite(image); this.tileWidth = mother.getWidth() / 3; this.tileHeight = mother.getHeight() / 3; images = new Sprite[9]; int i = 0; for (int y = 0; y < 3 * tileHeight; y += tileHeight) { for (int x = 0; x < 3 * tileWidth; x += tileWidth) { images[i] = store.getTile(mother, x, y, tileWidth, tileHeight); i++; } } }