Objectcom.nttdocomo.ui.Image
com.nttdocomo.ui.PalettedImage
パレットを設定できるイメージを定義します。
PalettedImage クラスのオブジェクトはイメージの情報とパレットの情報を別々に持ち、
パレットを後から入れ替えることによって色違いの画像を描画することができます。
PalettedImage オブジェクトを生成すると、
同時に Palette オブジェクトも生成され、
PalettedImage オブジェクトに保持されます。
その Palette オブジェクトのエントリを直接変更することもできますし、
新たに生成した別の Palette オブジェクトを
PalettedImage オブジェクトに設定することもできます。
また、複数の PalettedImage オブジェクトに同一の Palette オブジェクトを設定すると、 一つのパレットを変更するだけで複数の画像を色違いで描画することができます。
PalettedImage クラスは Image クラスのサブクラスですが、
Image を引数に取るメソッドの中のどのメソッドで使用できるのかは機種依存です。
PalettedImage に対応していないメソッドの引数に PalettedImage オブジェクトを指定して呼び出した場合、
特に例外は発生しませんが、描画内容については機種依存となります。
ただし、そのメソッドに特に規定が有る場合には、その規定が優先されます。
ミニマムスペックでは、以下の描画がサポートされています。
Graphics.drawImage(Image, int, int)、
Graphics.drawImage(Image, int, int, int, int, int, int)
による描画
SpriteSet の描画
ImageMap の描画
[DoJa-5.0 (903i) 以降]
透過色インデックス指定による透過イメージの描画や、
α値指定による半透明描画も可能です。
PalettedImage の描画がサポートされているメソッドでは、
これら新機能を使った描画もサポートされています。
なお、透過色指定の方法が、
スーパークラスにおける方法と異なることに注意してください。
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.nttdocomo.ui.Image から継承したメソッド |
createImage, createImage, dispose, getAlpha, getHeight, getWidth, setAlpha |
| クラス Object から継承したメソッド |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| コンストラクタの詳細 |
protected PalettedImage()
| メソッドの詳細 |
public static PalettedImage createPalettedImage(java.io.InputStream in)
ストリームを指定してパレットを設定できるイメージを生成します。 画像のバイナリデータからイメージ情報とパレット情報が生成されます。 引数に指定できる、画像のバイナリデータの形式は以下の通りです。
イメージ情報は最大 256 色までのインデックスカラー表現で格納され、 描画時にはその時点で設定されているパレット情報を用いて色を復元しながら描画を行います。
パレット情報は、
画像のバイナリデータのヘッダに記録されているカラーテーブルと同順・
同サイズのエントリを持つパレットオブジェクトが生成され、
その中に格納されます。
また、カラーテーブルのサイズは生成された PalettedImage
オブジェクトに記録さます。
以後、色数がこのカラーテーブルのサイズに満たないパレットオブジェクトは
setPalette(Palette) メソッドで設定することはできません。
引数にアニメーションGIFを指定した場合は、
1 枚目の画像を元にイメージ情報とパレットオブジェクトが生成されます。
また、
引数に指定された画像データが透過 GIF であり、
透過色インデックスが index である場合には、
以下のように振る舞います。
透過色インデックスも
index に設定され、透過色インデックス指定も有効化されます。
そうでない場合は、透過色インデックス指定は無効化され、
透過色インデックスには0が設定されます。
in - イメージのデータを含む入力ストリームを指定します。
画像のバイナリデータをそのまま読み出すことができる入力ストリームを指定します。
NullPointerException - 引数 in に null が指定された場合に発生します。
UIException - 引数 in に不正なデータが指定された場合に発生します(UNSUPPORTED_FORMAT)。
public static PalettedImage createPalettedImage(byte[] data)
バイト配列を指定してパレットを設定できるイメージを生成します。 画像のバイナリデータからイメージ情報とパレット情報が生成されます。
引数に指定する画像のバイナリデータがバイト配列である点を除けば、
createPalettedImage(InputStream) と同様な振る舞いをします。
data - イメージのデータを含むバイト配列指定します。
画像のバイナリデータがそのまま格納されたバイト配列を指定します。
NullPointerException - 引数 data に null が指定された場合に発生します。
UIException - 引数 data に不正なデータが指定された場合に発生します(UNSUPPORTED_FORMAT)。
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 - 指定された縦・横サイズが、
このオブジェクトがサポートしている縦・
横サイズを超えている場合に発生します。
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 - 差し替えたい画像データが格納されている入力ストリームを指定します。
NullPointerException - 引数 in に null が指定された場合に発生します。
UIException - 引数 in
に不正なデータが指定された場合に発生します(UNSUPPORTED_FORMAT)。
UIException - 指定された画像データが表すイメージの幅・高さと、
このオブジェクト生成時点でのイメージの幅・高さを比較した時に、
幅・高さのいずれかが、
前者の方が後者より大きい場合に発生します(NO_RESOURCES)。
public void changeData(byte[] data)
現在のイメージ情報・パレット情報を、 バイト配列で指定された画像データのイメージ情報・ パレット情報に差し替えます。
上書きする画像データとしてバイト配列が指定される点を除けば、
changeData(InputStream) と同様な振る舞いをします。
data - 差し替えたい画像データが格納されているバイト配列を指定します。
NullPointerException - 引数 data に null が指定された場合に発生します。
UIException - 引数 data
に不正なデータが指定された場合に発生します(UNSUPPORTED_FORMAT)。
UIException - 指定された画像データが表すイメージの幅・高さと、
このオブジェクト生成時点でのイメージの幅・高さを比較した時に、
幅・高さのいずれかが、
前者の方が後者より大きい場合に発生します(NO_RESOURCES)。
public void setPalette(Palette palette)
Palette
オブジェクトへの参照がこのオブジェクトにコピーされます。
したがって、このメソッドを呼び出した後に当該 Palette
オブジェクトに対して Palette.setEntry(int, int)
をメソッドを呼び出した場合、
次の描画時には Palette の変更が反映されます。
palette - パレットオブジェクトを指定します。
NullPointerException - 引数 palette に null が指定された場合に発生します。
IllegalArgumentException - 引数 palette の要素数が PalettedImage 生成時のパレットのエントリ数よりも小さい場合に発生します。
public Palette getPalette()
public final Graphics getGraphics()
Image 内の getGraphicsUnsupportedOperationException - このメソッドが呼ばれた場合に発生します。
public final void setTransparentEnabled(boolean enabled)
透過色インデックス指定の有効・無効を設定します。
このメソッド呼び出しにより透過色インデックス指定を有効化した時点で、
getTransparentIndex()
呼び出しによって得られるインデックスに対応するエントリが透過となります(対応するエントリが無い場合でも、
透過色インデックス指定は有効にはなりますが、
描画時には何の影響もありません)。
このメソッド呼び出しの後で setTransparentIndex(int)
を呼び出しても、即座に透過色インデックスは変更されません。
再度このメソッドを呼び出した時点で、
透過色インデックスの変更が反映されます。
Image 内の setTransparentEnabledenabled - 透過色インデックス指定を有効にしたい場合は true を、
無効にしたい場合には false を指定します。setTransparentIndex(int),
getTransparentIndex()public void setTransparentIndex(int index)
透過色インデックスを指定します。 指定されたインデックスのエントリを、透過色と指定します。
透過色インデックス指定を有効にするには、
別途 setTransparentEnabled(true)
を呼び出す必要があります。
既に setTransparentEnabled(true)
が呼び出されている場合でも、
新しい透過色を有効にしたい場合には、
このメソッド呼び出しの後に、
再度 setTransparentEnabled(true) を呼び出す必要があります。
setTransparentEnabled(true) を呼び出した時点で、
新しい透過色が有効となります。
index - 透過色としたいエントリのインデックスを指定します。
ArrayIndexOutOfBoundsException - 引数 index に、
負の値または 256 以上の値が指定された場合に発生します。
public int getTransparentIndex()
setTransparentIndex(int)
にて指定されている透過色インデックスを取得します。
一度も setTransparentIndex(int)
が呼び出されていない状態でこのメソッドを呼び出すと 0 が返されます。
ただし、このイメージ生成時の画像データが透過 GIF であった場合には、
そこで指定されている透過色インデックスが返されます。
public final int getTransparentColor()
Image 内の getTransparentColorUnsupportedOperationException - このメソッドが呼ばれた場合に発生します。
Image.setTransparentColor(int)public final void setTransparentColor(int color)
このメソッドは呼び出すことはできません。 常に UnsupportedOperationException が発生します。
PalettedImage では、透過色は色ではなくインデックスで指定します。
setTransparentIndex(int) を利用して下さい。
Image 内の setTransparentColorcolor - 何を指定しても無視されます。
UnsupportedOperationException - このメソッドが呼ばれた場合に発生します。
Image.setTransparentEnabled(boolean)