package com.nutiteq.components; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; import com.nutiteq.utils.Utils; public class ImageBuffer { private Image[] bufferImages; private Graphics[] bufferGraphics; private int front; public ImageBuffer(final int numberOfImages, final int imageWidth, final int imageHeight) { bufferImages = new Image[numberOfImages]; bufferGraphics = new Graphics[numberOfImages]; for (int i = 0; i < bufferImages.length; i++) { bufferImages[i] = Image.createImage(imageWidth, imageHeight); bufferGraphics[i] = bufferImages[i].getGraphics(); } } public Image getFrontImage() { return bufferImages[front]; } public Graphics getBackGraphics() { return bufferGraphics[nextValue(front)]; } public Graphics getFrontGraphics() { return bufferGraphics[front]; } public void flip() { front = nextValue(front); } private int nextValue(final int bufferIndex) { final int result = bufferIndex + 1; return result < bufferImages.length ? result : 0; } public void resize(final int newWidth, final int newHeight) { for (int i = 0; i < bufferImages.length; i++) { bufferImages[i] = Utils.resizeImageAndCopyPrevious(newWidth, newHeight, bufferImages[i]); bufferGraphics[i] = bufferImages[i].getGraphics(); } } public void clean() { bufferImages = null; bufferGraphics = null; } }