FileDocCategorySizeDatePackage
MiniColorChooser.javaAPI DocJ2ME MIDP 2.03851Thu Nov 07 12:02:16 GMT 2002example.chooser

MiniColorChooser

public class MiniColorChooser extends Canvas
A Color chooser. This screen can be used to display and choose colors. The current color is always available via the getColor methods. It can be set with setColor.

Fields Summary
int
rgbColor
current color
int
ndx
current index
static final int
BORDER
Border width
static final int
BAR_H
Color bar height
Constructors Summary
public MiniColorChooser()
Create a new MiniColorChooser for a single color.

    
                 
      
	setColor(0xffff00);
    
Methods Summary
public intgetColor()
Gets the current color.

return
an integer in form 0x00RRGGBB
see
#setColor

        return rgbColor;
    
protected voidkeyPressed(int key)
Left and Right are used to change which color bar to change Up and Down are used to increase/decrease the value of that bar.

param
key was pressed

	int action = getGameAction(key);
	int dir = 0;
	switch (action) {
	case RIGHT: dir += 1; break;
	case LEFT: dir -= 1; break;
	case UP: ndx -= 1; break;
	case DOWN: ndx += 1; break;
	default:
	    return;		// nothing we recognize, exit
	}
	
	// Limit selection to r,g,b and palette 
	if (ndx < 0)
	    ndx = 0;
	if (ndx > 2)
	    ndx = 2;
	if (ndx >= 0) {
	    int v = (rgbColor >> (ndx*8)) & 0xff;
	    v += dir * 0x20;
	    if (v < 0)
		v = 0;
	    if (v > 255)
		v = 255;
	    int mask = 0xff << (ndx*8);
	    rgbColor = (rgbColor & ~mask) | v << (ndx*8);
	}
	repaint();
    
public voidkeyRepeated(int key)
Handle repeat as in pressed.

param
key was pressed

	keyPressed(key);
    
protected voidpaint(Graphics g)
Paint the canvas with the current color and controls to change it.

param
g the graphics context to draw to the screen.


                               
        

	int w = getWidth();
	int h = getHeight();

	int sample_w = w - 1;
	int sample_h = h - (BAR_H + BORDER) * 3;
	int sample_y = BORDER;

	int b_y = sample_y + sample_h + BORDER*2;
	int g_y = b_y + BAR_H;
	int r_y = g_y + BAR_H;
	

	// Fill the background
	g.setColor(0x000000);
	g.fillRect(0, 0, w, h);

	// Fill in the color sample
	g.setColor(rgbColor);
	g.fillRect(BORDER, sample_y, sample_w, sample_h);

	// Draw the colorbars
	int blue = (rgbColor >> 0) & 0xff;
	g.setColor(0, 0, 255);
	g.fillRect(20, b_y, blue / 4, 10);

	int green = (rgbColor >> 8) & 0xff;
	g.setColor(0, 255, 0);
	g.fillRect(20, g_y, green / 4, 10);

	int red = (rgbColor >> 16) & 0xff;
	g.setColor(255, 0, 0);
	g.fillRect(20, r_y, red / 4, 10);

	g.setColor(255, 255, 255);
	g.drawString(Integer.toString(blue), 
		     18, b_y-3,  Graphics.RIGHT|Graphics.TOP);
	g.drawString(Integer.toString(green), 
		     18, g_y-3,  Graphics.RIGHT|Graphics.TOP);
	g.drawString(Integer.toString(red), 
		     18, r_y-3,  Graphics.RIGHT|Graphics.TOP);

	if (ndx >= 0) {
	    int y = b_y + ndx * BAR_H;
	    g.drawRect(20, y, 63, 10);
	}

    
public voidsetColor(int RGB)
Sets the current color to the specified RGB values. All subsequent rendering operations will use this specified color. The RGB value passed in is interpreted with the least significant eight bits giving the blue component, the next eight more significant bits giving the green component, and the next eight more significant bits giving the red component. That is to say, the color component is specified like 0x00RRGGBB.

param
RGB The color being set.

	rgbColor = RGB & 0x00ffffff;