IndexColorModelTest.java



/**
 * Rasterのピクセル値をカラーマップから与える実験
 */
import java.awt.*;
import java.awt.image.*;

public class IndexColorModelTest extends Canvas {

  /** BufferedImage のオブジェクト */
    public BufferedImage image;

  /** Raster のオブジェクト */
    public WritableRaster raster;

  /** ColorModel のオブジェクト */
    public IndexColorModel model;

  /** DataBuffer のオブジェクト */
    public DataBufferByte buffer;

  /** コンストラクタ */
    public IndexColorModelTest() {

        super();
        setSize( 256, 256 );

        byte[] r = new byte[16];
        byte[] g = new byte[16];
        byte[] b = new byte[16];
        for( int i=0; i<16; i++ ) {
            r[i] = (byte)( i*16 );
            g[i] = (byte)0;
            b[i] = (byte)0;
        }

        model = new IndexColorModel( 8, 16, r, g, b );

        raster = model.createCompatibleWritableRaster( 4, 4 );

        buffer = (DataBufferByte)(raster.getDataBuffer());
        for( int i=0; i<16; i++ )
            buffer.setElem( i, (byte)i );

        image = new BufferedImage( model, raster, false,
                                   System.getProperties() );
    }

  /** 描画メソッド */

    public void paint( Graphics g ) {

        g.drawImage( image, 0, 0, 256, 256, this );
    }

  /** 最初に呼び出されるメソッド */

    public static void main( String argv[] ) {

        Frame frame = new Frame( "Index Color Model Test" );
        IndexColorModelTest canvas = new IndexColorModelTest(); 
        frame.add( canvas, "Center" );
        frame.pack();
        frame.setVisible( true );
    }
}