com.docomostar.ui
クラス PalettedImage

Object
  上位を拡張 com.docomostar.ui.Image
      上位を拡張 com.docomostar.ui.PalettedImage

public abstract class PalettedImage
extends Image

パレットを設定できるイメージを定義します。 PalettedImage クラスのオブジェクトはイメージの情報とパレットの情報を別々に持ち、 パレットを後から入れ替えることによって色違いの画像を描画することができます。
PalettedImage オブジェクトを生成すると、 同時に Palette オブジェクトも生成され、 PalettedImage オブジェクトに保持されます。 その Palette オブジェクトのエントリを直接変更することもできますし、 新たに生成した別の Palette オブジェクトを PalettedImage オブジェクトに設定することもできます。

また、複数の PalettedImage オブジェクトに同一の Palette オブジェクトを設定すると、 一つのパレットを変更するだけで複数の画像を色違いで描画することができます。

PalettedImage クラスは Image クラスのサブクラスですが、 Image を引数に取るメソッドの中のどのメソッドで使用できるのかは機種依存です。 PalettedImage に対応していないメソッドの引数に PalettedImage オブジェクトを指定して呼び出した場合、 特に例外は発生しませんが、描画内容については機種依存となります。 ただし、そのメソッドに特に規定が有る場合には、その規定が優先されます。

ミニマムスペックでは、以下の描画がサポートされています。

透過色インデックス指定による透過イメージの描画や、 α値指定による半透明描画も可能です。 PalettedImage の描画がサポートされているメソッドでは、 これらの機能を使った描画もサポートされています。
なお、透過色指定の方法が、 スーパークラスにおける方法と異なることに注意してください。

導入されたバージョン:
Star-1.0
関連項目:
Palette

コンストラクタの概要
protected PalettedImage()
          アプリケーションが直接このクラスのインスタンスを生成することはできません。
 
メソッドの概要
 void changeData(byte[] data)
           現在のイメージ情報・パレット情報を、 バイト配列で指定された画像データのイメージ情報・ パレット情報に差し替えます。
 void changeData(java.io.InputStream in)
           現在のイメージ情報・パレット情報を、 ストリームで指定された画像データのイメージ情報 ・パレット情報に差し替えます。
static PalettedImage createPalettedImage(byte[] data)
           バイト配列を指定してパレットを設定できるイメージを生成します。
static PalettedImage createPalettedImage(java.io.InputStream in)
           ストリームを指定してパレットを設定できるイメージを生成します。
static PalettedImage createPalettedImage(int width, int height)
           画像の縦・横サイズのみを指定して、 パレットを設定できる空のイメージを生成します。
 Graphics getGraphics()
          このクラスのインスタンスに対して呼び出すことはできません。
 Palette getPalette()
          パレットを取得します。
 int getTransparentColor()
          このメソッドは呼び出すことはできません。
 int getTransparentIndex()
           setTransparentIndex(int) にて指定されている透過色インデックスを取得します。
 void setPalette(Palette palette)
          パレットを設定します。
 void setTransparentColor(int color)
           このメソッドは呼び出すことはできません。
 void setTransparentEnabled(boolean enabled)
           透過色インデックス指定の有効・無効を設定します。
 void setTransparentIndex(int index)
           透過色インデックスを指定します。
 
クラス com.docomostar.ui.Image から継承されたメソッド
createImage, createImage, dispose, getAlpha, getHeight, getWidth, setAlpha
 
クラス Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

PalettedImage

protected PalettedImage()
アプリケーションが直接このクラスのインスタンスを生成することはできません。

メソッドの詳細

createPalettedImage

public static PalettedImage createPalettedImage(java.io.InputStream in)

ストリームを指定してパレットを設定できるイメージを生成します。 画像のバイナリデータからイメージ情報とパレット情報が生成されます。 引数に指定できる画像のバイナリデータは、GIF 画像と Windows BMP 画像 (パレット形式である1、4、8ビットのみ)です。

イメージ情報は最大 256 色までのインデックスカラー表現で格納され、 描画時にはその時点で設定されているパレット情報を用いて色を復元しながら描画を行います。

パレット情報は、 画像のバイナリデータのヘッダに記録されているカラーテーブルと同順・ 同サイズのエントリを持つパレットオブジェクトが生成され、 その中に格納されます。 また、カラーテーブルのサイズは生成された PalettedImage オブジェクトに記録さます。 以後、色数がこのカラーテーブルのサイズに満たないパレットオブジェクトは setPalette(Palette) メソッドで設定することはできません。

引数にアニメーションGIFを指定した場合は、 1 枚目の画像を元にイメージ情報とパレットオブジェクトが生成されます。
また、 引数に指定された画像データが透過 GIF であり、 透過 GIF の透過色インデックスが index である場合は、 このオブジェクトの透過色インデックスにも index が設定され、透過色インデックス指定も有効化されます。 画像データが透過 GIF でない場合は、 このオブジェクトの透過色インデックスには 0 が設定され、透過色インデックス指定は無効化されます。

パラメータ:
in - イメージのデータを含む入力ストリームを指定します。 画像のバイナリデータをそのまま読み出すことができる入力ストリームを指定します。
戻り値:
パレットを設定できるイメージを返します。
例外:
NullPointerException -
引数 in に null が指定された場合に発生します。
UIException -
(UNSUPPORTED_FORMAT)
引数 in に不正なデータが指定された場合に発生します。

createPalettedImage

public static PalettedImage createPalettedImage(byte[] data)

バイト配列を指定してパレットを設定できるイメージを生成します。 画像のバイナリデータからイメージ情報とパレット情報が生成されます。

引数に指定する画像のバイナリデータがバイト配列である点を除けば、 createPalettedImage(InputStream) と同様な振る舞いをします。

パラメータ:
data - イメージのデータを含むバイト配列指定します。 画像のバイナリデータがそのまま格納されたバイト配列を指定します。
戻り値:
パレットを設定できるイメージを返します。
例外:
NullPointerException -
引数 data に null が指定された場合に発生します。
UIException -
(UNSUPPORTED_FORMAT)
引数 data に不正なデータが指定された場合に発生します。

createPalettedImage

public static PalettedImage createPalettedImage(int width,
                                                int height)

画像の縦・横サイズのみを指定して、 パレットを設定できる空のイメージを生成します。

これによって生成されるイメージは、引数で指定された幅・高さを持ち、 全ての画素のインデックス値は 0 で初期化されています。 パレット情報としては new Palette(1) によって生成されたパレットオブジェクトが設定されています。

このメソッドは changeData(InputStream) における上書き対象領域の確保のみを行いたい場合に有用です。 例えば、ひとつの PalettedImage で、 画像 a, b, c を使い回す場合を考えます。 画像は a, b, c の順番で利用するが、 縦・横サイズの一番大きな画像は b である場合に、 b の縦・横サイズを指定してこのメソッドを呼び出してから changeData() で画像 a を読み込ませることで、 サイズオーバになることなく、a, b, c 全ての画像を使い回すことが出来ます。

パラメータ:
width - 生成したい空イメージの幅(横方向ピクセル数)を指定します。
height - 生成したい空イメージの高さ(縦方向ピクセル数)を指定します。
戻り値:
パレットを設定できる空のイメージを返します。
例外:
IllegalArgumentException -
引数 width、height のいずれかに 0 または 負の値が指定された場合に発生します。
IllegalArgumentException -
指定された縦・横サイズが、 このオブジェクトがサポートしている縦・ 横サイズを超えている場合に発生します。

changeData

public void changeData(java.io.InputStream in)

現在のイメージ情報・パレット情報を、 ストリームで指定された画像データのイメージ情報 ・パレット情報に差し替えます。

生成時(createPalettedImage() 呼び出し時)に指定したイメージ(アニメーション GIF の場合は1枚目のイメージ)の高さ以下の幅・高さを持つイメージの画像データでのみ、 差し替えることが可能です。 以前と異なる幅・高さを持つ画像データで差し替えた場合には、 Image.getWidth()Image.getHeight() で得られる値も、新しいイメージの幅・高さとなります。

指定された画像データは、 元のイメージが内部表現形式に展開されている領域に上書き展開されます。 したがって、このメソッド呼び出しにより、その領域確保のために新たにメモリを消費することはありません。

この「内部表現形式に展開されている領域」のサイズは、 createPalettedImage() 呼び出し時に確保された時点で確定し、 このメソッド呼び出しによって増減することはありません。 したがって、createPalettedImage() 呼び出し時に指定したイメージの幅・ 高さよりも小さいサイズのイメージで差し替えた場合でも、 消費メモリ量は減少しません。 逆に、一旦小さいサイズのイメージで差し替えた後に、 再度、大きいサイズのイメージ (もちろん createPalettedImage() 呼び出し時に指定したイメージのサイズ以下である必要はあります) で差し替えても、新たなメモリ消費はありません。

このメソッドを呼び出しにより、 新しい画像データに基づいて、パレット情報が再生成され、 透過色関連の情報が再設定されます。これらの情報の生成方法は createPalettedImage(InputStream) 呼び出し時と同様です。 また、新しい画像データが透過 GIF であった場合や、 アニメーション GIF であった場合の扱いも、 createPalettedImage(InputStream) 呼び出し時と同様です。

例外が発生した場合には、 このオブジェクトは dispose() メソッドを呼び出した場合と同様の状態となります。

パラメータ:
in - 差し替えたい画像データが格納されている入力ストリームを指定します。
例外:
UIException -
(ILLEGAL_STATE)
既に dispose されているオブジェクトに対して呼ばれた場合に発生します。
NullPointerException -
引数 in に null が指定された場合に発生します。
UIException -
(UNSUPPORTED_FORMAT)
引数 in に不正なデータが指定された場合に発生します。
UIException -
(NO_RESOURCES)
指定された画像データが表すイメージの幅・高さと、 このオブジェクト生成時点でのイメージの幅・高さを比較した時に、 幅・高さのいずれかが、 前者の方が後者より大きい場合に発生します。
UIException -
(NO_RESOURCES)
本メソッドの実行によってメモリ不足が発生した場合に発生します。

changeData

public void changeData(byte[] data)

現在のイメージ情報・パレット情報を、 バイト配列で指定された画像データのイメージ情報・ パレット情報に差し替えます。

上書きする画像データとしてバイト配列が指定される点を除けば、 changeData(InputStream) と同様な振る舞いをします。

パラメータ:
data - 差し替えたい画像データが格納されているバイト配列を指定します。
例外:
UIException -
(ILLEGAL_STATE)
既に dispose されているオブジェクトに対して呼ばれた場合に発生します。
NullPointerException -
引数 data に null が指定された場合に発生します。
UIException -
(UNSUPPORTED_FORMAT)
引数 data に不正なデータが指定された場合に発生します。
UIException -
(NO_RESOURCES)
指定された画像データが表すイメージの幅・高さと、 このオブジェクト生成時点でのイメージの幅・高さを比較した時に、 幅・高さのいずれかが、 前者の方が後者より大溷