MiniColorChooserpublic 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 | rgbColorcurrent color | int | ndxcurrent index | static final int | BORDERBorder width | static final int | BAR_HColor bar height |
Constructors Summary |
---|
public MiniColorChooser()Create a new MiniColorChooser for a single color.
setColor(0xffff00);
|
Methods Summary |
---|
public int | getColor()Gets the current color.
return rgbColor;
| protected void | keyPressed(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.
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 void | keyRepeated(int key)Handle repeat as in pressed.
keyPressed(key);
| protected void | paint(Graphics g)Paint the canvas with the current color and controls to change it.
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 void | setColor(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.
rgbColor = RGB & 0x00ffffff;
|
|