/* ダブルバッファ Canvas for MIDP Ver 0.00 */ /* */ /* */ /* by Atsushi 2000/7/24 */ // package lib.midp; import javax.microedition.lcdui.*; public class DoubleBufferedCanvas extends Canvas { /* --- Field --- */ private Image buffer; private Graphics g; /* --- Constructor --- */ public DoubleBufferedCanvas() { } /* --- バッファ情報 --- */ public Image getBuffer() { if (buffer==null) { initBuffer(); } return buffer; } public Graphics getBufferGraphics() { if (buffer==null) { initBuffer(); } return g; } /* --- 描画処理 --- */ public void paint(Graphics g) { int x,y,bufferWidth,bufferHeight; int color; if (buffer==null) { initBuffer(); } bufferWidth =buffer.getWidth (); bufferHeight=buffer.getHeight(); if ((getWidth ()!=bufferWidth) || (getHeight()!=bufferHeight)) { initBuffer(); } x=(getWidth ()-bufferWidth )/2; y=(getHeight()-bufferHeight)/2; color=g.getColor(); g.setColor(0,0,0); if (y>0) g.fillRect(0,0 ,bufferWidth , y); if (y<0) g.fillRect(0,bufferHeight+y,bufferWidth ,-y); if (x>0) g.fillRect(0 ,0, x,bufferHeight); if (x<0) g.fillRect(bufferWidth +x,0,-x,bufferHeight); g.setColor(color); paintBuffer(g,x,y); } protected void paintBuffer(Graphics g,int x,int y) { g.drawImage(buffer,x,y,Graphics.TOP | Graphics.LEFT); } private void initBuffer() { if (getWidth()<=0 || getHeight()<=0) return; buffer=Image.createImage(getWidth(),getHeight()); g=buffer.getGraphics(); initGraphics(); } protected void initGraphics() {} }