com.j_phone.util
クラス GraphicsUtil

java.lang.Object
  |
  +--com.j_phone.util.GraphicsUtil

public class GraphicsUtil
extends java.lang.Object

拡張描画機能を提供するクラスです。

ピクセル単位の描画、ピクセルの色の取得、およびイメージの任意の領域を回転、反転して描画する機能を提供します。

このクラスでは、Image または Canvas オブジェクトを描画対象とする Graphics オブジェクトを操作の対象としています。 ただし、getPixel() メソッドは、Image オブジェクトを描画対象とする Graphics オブジェクトだけが対象となります。

導入されたバージョン:
JSCL 1.2

フィールドの概要
static int STRETCH_QUALITY_HIGH
          drawRegion() に指定する伸縮の質で、伸縮速度よりも画質優先であることを示します。
static int STRETCH_QUALITY_LOW
          drawRegion() に指定する伸縮の質で、画質よりも伸縮速度優先であることを示します。
static int STRETCH_QUALITY_NORMAL
          drawRegion() に指定する伸縮の質で、伸縮速度、画質ともに平均的であることを示します。
static int TRANS_MIRROR
          drawRegion() に指定する変換の種類で、左右反転であることを示します。
static int TRANS_MIRROR_ROT180
          drawRegion() に指定する変換の種類で、左右反転後に時計回りに180度回転であることを示します。
static int TRANS_MIRROR_ROT270
          drawRegion() に指定する変換の種類で、左右反転後に時計回りに270度回転であることを示します。
static int TRANS_MIRROR_ROT90
          drawRegion() に指定する変換の種類で、左右反転後に時計回りに90度回転であることを示します。
static int TRANS_NONE
          drawRegion() に指定する変換の種類で、無変換であることを示します。
static int TRANS_ROT180
          drawRegion() に指定する変換の種類で、時計回りに180度回転であることを示します。
static int TRANS_ROT270
          drawRegion() に指定する変換の種類で、時計回りに270度回転であることを示します。
static int TRANS_ROT90
          drawRegion() に指定する変換の種類で、時計回りに90度回転であることを示します。
 
メソッドの概要
static void drawPseudoTransparentImage(javax.microedition.lcdui.Graphics g, javax.microedition.lcdui.Image src, int x_dest, int y_dest, int anchor, short mask_pattern, int element_size)
          Image オブジェクトに透過マスクパターンをタイルして描画します。
static void drawRegion(javax.microedition.lcdui.Graphics g, javax.microedition.lcdui.Image src, int x_src, int y_src, int width, int height, int transform, int x_dest, int y_dest, int anchor)
          Image オブジェクト内の矩形領域をコピーします。
static void drawRegion(javax.microedition.lcdui.Graphics g, javax.microedition.lcdui.Image src, int x_src, int y_src, int width, int height, int transform, int x_dest, int y_dest, int width_dest, int height_dest, int anchor, int stretch_quality)
          Image オブジェクト内の矩形領域を伸縮してコピーします。
static int getPixel(javax.microedition.lcdui.Graphics g, int x, int y)
          座標(x, y)のピクセルの色を取得します。
static void setPixel(javax.microedition.lcdui.Graphics g, int x, int y)
          ピクセルを描画します。
static void setPixel(javax.microedition.lcdui.Graphics g, int x, int y, int color)
          ピクセルを描画します。
 
クラス java.lang.Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

TRANS_NONE

public static final int TRANS_NONE
drawRegion() に指定する変換の種類で、無変換であることを示します。

TRANS_ROT90

public static final int TRANS_ROT90
drawRegion() に指定する変換の種類で、時計回りに90度回転であることを示します。

TRANS_ROT180

public static final int TRANS_ROT180
drawRegion() に指定する変換の種類で、時計回りに180度回転であることを示します。

TRANS_ROT270

public static final int TRANS_ROT270
drawRegion() に指定する変換の種類で、時計回りに270度回転であることを示します。

TRANS_MIRROR

public static final int TRANS_MIRROR
drawRegion() に指定する変換の種類で、左右反転であることを示します。

TRANS_MIRROR_ROT90

public static final int TRANS_MIRROR_ROT90
drawRegion() に指定する変換の種類で、左右反転後に時計回りに90度回転であることを示します。

TRANS_MIRROR_ROT180

public static final int TRANS_MIRROR_ROT180
drawRegion() に指定する変換の種類で、左右反転後に時計回りに180度回転であることを示します。

TRANS_MIRROR_ROT270

public static final int TRANS_MIRROR_ROT270
drawRegion() に指定する変換の種類で、左右反転後に時計回りに270度回転であることを示します。

STRETCH_QUALITY_NORMAL

public static final int STRETCH_QUALITY_NORMAL
drawRegion() に指定する伸縮の質で、伸縮速度、画質ともに平均的であることを示します。実際の画質と伸縮速度はネイティブシステムに依存します。
導入されたバージョン:
JSCL 1.2.2

STRETCH_QUALITY_LOW

public static final int STRETCH_QUALITY_LOW
drawRegion() に指定する伸縮の質で、画質よりも伸縮速度優先であることを示します。実際の画質と伸縮速度はネイティブシステムに依存します。
導入されたバージョン:
JSCL 1.2.2

STRETCH_QUALITY_HIGH

public static final int STRETCH_QUALITY_HIGH
drawRegion() に指定する伸縮の質で、伸縮速度よりも画質優先であることを示します。実際の画質と伸縮速度はネイティブシステムに依存します。
導入されたバージョン:
JSCL 1.2.2
メソッドの詳細

getPixel

public static int getPixel(javax.microedition.lcdui.Graphics g,
                           int x,
                           int y)
座標(x, y)のピクセルの色を取得します。 Graphics オブジェクトに設定されているクリップ領域は、このメソッドの動作には影響しません。
パラメータ:
g - 描画対象のGraphicsオブジェクト
x - ピクセルのx座標
y - ピクセルのy座標
戻り値:
ピクセルの色を 0x00RRGGBB の形式で返す。Image オブジェクトの領域外の座標が指定された場合は 0x00000000 を返す。
例外:
NullPointerException - 引数 gnull の場合に発生する
SecurityException - 引数 g が Canvas オブジェクトを描画対象とする Graphics オブジェクトの場合に発生する

setPixel

public static void setPixel(javax.microedition.lcdui.Graphics g,
                            int x,
                            int y)
ピクセルを描画します。 指定された座標(x, y)のピクセルを、Graphics オブジェクトに設定されている描画色で描画します。

Image または Canvas オブジェクトの領域外の座標が指定された場合、 または Graphics オブジェクトに設定されているクリップ領域外の座標が指定された場合、このメソッドは何もしません。

パラメータ:
g - 描画対象のGraphicsオブジェクト
x - ピクセルのx座標
y - ピクセルのy座標
例外:
NullPointerException - 引数 gnull の場合に発生する

setPixel

public static void setPixel(javax.microedition.lcdui.Graphics g,
                            int x,
                            int y,
                            int color)
ピクセルを描画します。 指定された座標(x, y)のピクセルを、引数 color に指定された色で描画します。

Image または Canvas オブジェクトの領域外の座標が指定された場合、 または Graphics オブジェクトに設定されているクリップ領域外の座標が指定された場合、このメソッドは何もしません。

パラメータ:
g - 描画対象のGraphicsオブジェクト
x - ピクセルのx座標
y - ピクセルのy座標
color - ピクセルの色。0x00RRGGBB の形式で指定する。ビット31〜24の値は無視される。
例外:
NullPointerException - 引数 gnull の場合に発生する

drawRegion

public static void drawRegion(javax.microedition.lcdui.Graphics g,
                              javax.microedition.lcdui.Image src,
                              int x_src,
                              int y_src,
                              int width,
                              int height,
                              int transform,
                              int x_dest,
                              int y_dest,
                              int anchor)
Image オブジェクト内の矩形領域をコピーします。

引数 src に指定された Image オブジェクト内の矩形領域を、 引数 gに指定された Graphics オブジェクトに描画します。 描画する際、引数 transform に指定された変換を行って、コピー先の指定された座標に描画します。 コピー先の位置は、javax.microedition.lcdui.Graphics クラスと同様にアンカーポイントを指定することができます。

図1に、transformにTRANS_ROT270、anchorにTOP|LEFTが指定された場合の動作例を示します。

graphicsutil_drawregion.gif

図1. drawRegion()の動作例

コピー元の領域が Image オブジェクト外の領域を含む場合は、Image オブジェクト外の領域に対応するコピー先の領域には何も描画されません。

コピー先の領域が Graphics オブジェクトに設定されているクリップ領域外を含む場合は、クリップ領域外には何も描画されません。

パラメータ:
g - コピー先の Graphics オブジェクト
src - コピー元の Image オブジェクト
x_src - コピー元の矩形領域の左上のx座標
y_src - コピー元の矩形領域の左上のy座標
width - コピー元の矩形領域の幅
height - コピー元の矩形領域の高さ
transform - 変換の種類として以下のどれかを指定する
x_dest - コピー先のx座標
y_dest - コピー先のy座標
anchor - コピー先の位置を示すアンカーポイント。javax.microedition.lcdui.Graphicsクラスでアンカーポイントとして定義されている値を指定する。
例外:
NullPointerException - 引数g または srcnull の場合に発生する
java.lang.IllegalArgumentException - 引数 transform が不正な場合、 または引数 anchor が javax.microedition.lcdui.Graphicsクラスで定義されているアンカーポイント以外の場合に発生する

drawRegion

public static void drawRegion(javax.microedition.lcdui.Graphics g,
                              javax.microedition.lcdui.Image src,
                              int x_src,
                              int y_src,
                              int width,
                              int height,
                              int transform,
                              int x_dest,
                              int y_dest,
                              int width_dest,
                              int height_dest,
                              int anchor,
                              int stretch_quality)
Image オブジェクト内の矩形領域を伸縮してコピーします。

引数 src に指定された Image オブジェクト内の矩形領域を、 引数 g に指定された Graphics オブジェクトに描画します。 描画する際、引数 transform に指定された変換を行って、コピー先の指定された座標に描画します。 コピー先の位置は、javax.microedition.lcdui.Graphics クラスと同様にアンカーポイントを指定することができます。 Image オブジェクト内の矩形領域は transform に指定された変換を行ってから、 コピー先の矩形領域の幅と高さに伸縮されて描画されます。 伸縮の質として STRETCH_QUALITY_LOWSTRETCH_QUALITY_NORMALSTRETCH_QUALITY_HIGH のいずれかを指定することができます。

図1に、transformにTRANS_ROT270、anchorにTOP|LEFTが指定された場合の動作例を示します。

graphicsutil_drawregion.gif

図1. drawRegion()の動作例

コピー元の領域が Image オブジェクト外の領域を含む場合は、Image オブジェクト外の領域に対応するコピー先の領域には何も描画されません。

コピー先の領域が Graphics オブジェクトに設定されているクリップ領域外を含む場合は、クリップ領域外には何も描画されません。

パラメータ:
g - コピー先の Graphics オブジェクト
src - コピー元の Image オブジェクト
x_src - コピー元の矩形領域の左上のx座標
y_src - コピー元の矩形領域の左上のy座標
width - コピー元の矩形領域の幅
height - コピー元の矩形領域の高さ
transform - 変換の種類として以下のどれかを指定する
x_dest - コピー先のx座標
y_dest - コピー先のy座標
width_dest - コピー先の矩形領域の幅
height_dest - コピー先の矩形領域の高さ
anchor - コピー先の位置を示すアンカーポイント。javax.microedition.lcdui.Graphicsクラスでアンカーポイントとして定義されている値を指定する。
stretch_quality - 伸縮の質。STRETCH_QUALITY_LOWSTRETCH_QUALITY_NORMALSTRETCH_QUALITY_HIGH のいずれかを指定する
例外:
NullPointerException - 引数 g または srcnull の場合に発生する
java.lang.IllegalArgumentException - 引数 transform が不正な場合、 または引数 anchor が javax.microedition.lcdui.Graphicsクラスで定義されているアンカーポイント以外の場合に発生する または引数 stretch_qualitySTRETCH_QUALITY_LOWSTRETCH_QUALITY_NORMALSTRETCH_QUALITY_HIGH のいずれか以外の場合に発生する
導入されたバージョン:
JSCL 1.2.2

drawPseudoTransparentImage

public static void drawPseudoTransparentImage(javax.microedition.lcdui.Graphics g,
                                              javax.microedition.lcdui.Image src,
                                              int x_dest,
                                              int y_dest,
                                              int anchor,
                                              short mask_pattern,
                                              int element_size)
Image オブジェクトに透過マスクパターンをタイルして描画します。

引数 src に指定された Image オブジェクトに対して透過マスクパターンを全面に タイルした擬似半透明画像を、 引数 g に指定された Graphics オブジェクトに描画します。

図1に透過マスクパターンの要素と引数 mask_pattern のビット位置の対応を示します。

drawPseudoTransparentImage.gif

図1. 透過マスクパターンの要素とmask_patternのビット位置の対応

透過マスクパターンは4要素×4要素の計16要素で、各要素は左から右、上から下方向に並びます。 左上がビット15、右下がビット0を表します。 ビットの値が 1 の場合は透過、 0 の場合は非透過を表します。

図2に mask_pattern が0xce70の場合の透過マスクパターンを示します。 透が透過、■が非透過を表します。

drawPseudoTransparentImage_2.gif

図2. 透過マスクパターンの例

引数 element_size は、透過マスクパターンの 1 要素のサイズです。 たとえば、 3 が指定された場合は透過マスクパターンの 1 要素を 3 ピクセル四方とします。

描画先の領域が Graphics オブジェクトに設定されているクリップ領域外を含む場合は、クリップ領域外には何も描画されません。

図3にx_dest、y_destに 0 、anchorに TOP|LEFT が指定された場合の描画例を示します。

drawPseudoTransparentImage_3.gif

図3. drawPseudoTransparentImage 描画例

パラメータ:
g - 描画先の Graphics オブジェクト
src - 透過マスクパターンを適用する Image オブジェクト
x_dest - 描画先のx座標
y_dest - 描画先のy座標
anchor - 描画先の位置を示すアンカーポイント。 javax.microedition.lcdui.Graphicsクラスでアンカーポイントとして定義されている値を指定する。
mask_pattern - 透過マスクパターン。ビット値(0x0000 〜 0xffff)で指定する。
element_size - 透過マスクパターンの1要素のサイズ(単位はピクセル)。1 以上の値を指定する。
例外:
NullPointerException - 引数 g または srcnull の場合に発生する
java.lang.IllegalArgumentException - 引数 element_size が 0 以下または240よりも大きい場合
導入されたバージョン:
JSCL 1.2.2