8

Gaming API and Sound

public void setTransparentIndex(int index) throws

IndexOutOfBoundsException – Sets the current transparent index. Pixels that reference the transparent index in the palette are not drawn when the image is rendered. The effects of the new transparent index will be reflected in the next Image object that is created by calling getImage().

public int getPaletteSize() - Gets the number of entries in the palette.

public int getPaletteEntry(int index) throws

IndexOutOfBoundsException - Gets the specified entry in the palette. The method returns the current color value of the entry (0xRRGGBB format).

public void setPaletteEntry(int index, int color) throws IndexOutOfBoundsException – Sets the specified entry in the palette. The color must be specified using the MIDP color format (0xRRGGBB, the upper 8 bits are ignored). The effects of the new palette will be reflected in the next Image object that is created by calling getImage().

public int[] getPalette() – Gets the entire palette as an array of ints, each one representing a 24-bit RGB value. The method returns a new int array each time it is called, so this method should be used sparingly to avoid creating excessive garbage.

public void setPalette(int[] newPalette) throws

ArrayIndexOutOfBoundsException, NullPointerException, IllegalArgumentException - Sets the palette data for this image. The palette data must be specified using MIDP color format (0xRRGGBB, the upper 8 bits are ignored). The size of the new palette must be at least as large as the value returned by getPaletteSize(); additional palette entries, if present, are ignored. The effects of the new palette will be reflected in the next Image object that is created by calling getImage().

Using PalleteImage

PalleteImage enables a developer to adjust the colors of an image to match the capabilities of the device. It also enables reuse of image data by allowing the developer to change the color scheme. For example, a racing game may use a single PaletteImage of a car; the developer may then tweak the palette and generate a series of Images of differently colored cars, as seen below:

PaletteImage raceCar = new PaletteImage("car.png");

//Set the car color to red and retrieve the Image raceCar.setPaletteEntry(0, 0xFF0000);

Image redRaceCar = raceCar.getImage();

//Set the car color to blue and retrieve the Image

47

Page 47
Image 47
Motorola C370, C550, C450 technical manual Using PalleteImage, Public void setTransparentIndexint index throws