JavaTM 2
Platform
Std. Ed. v1.4.0

java.awt.image
インタフェース WritableRenderedImage

すべてのスーパーインタフェース:
RenderedImage
既知の実装クラスの一覧:
BufferedImage

public interface WritableRenderedImage
extends RenderedImage

WriteableRenderedImage は、Raster の形式でイメージデータを格納したり作成したりすることができ、変更や上書きが可能なオブジェクトのための共通インタフェースです。イメージデータは 1 つのタイルまたはタイルの規則正しい配列として格納または作成されます。

WritableRenderedImage は、タイルが書き込みのために getWritableTile メソッドでチェックアウトされたとき、および特定のタイルの最後のライターが releaseWritableTile の呼び出しでアクセスを放棄したときに、関連するほかのオブジェクトに通知を行います。また、WritableRenderedImage は、現在チェックアウトされているタイルがあるかどうかを、呼び出し側が hasTileWriters で判定したり、getWritableTileIndicesで、そのようなタイルのリストを Point オブジェクトの Vector の形で取得したりできるようにします。

タイルの書き込み可能性の変更通知を必要とするオブジェクトは、TileObserver インタフェースを実装する必要があり、addTileObserver の呼び出しによって追加されます。同じオブジェクトで複数回 addTileObserver を呼び出すと、複数の通知を受けることになります。既存のオブザーバの場合、removeTileObserver の呼び出しで通知を減らすことができます。オブザーバが通知を持たない場合、オペレーション側では何も行いません。

WritableRenderedImage では、最初のライターがタイルを取得し、最後のライターがそれを解放したときにだけ通知が行われるようにする必要があります。


メソッドの概要
 void addTileObserver(TileObserver to)
          オブザーバを追加します。
 WritableRaster getWritableTile(int tileX, int tileY)
          書き込みのためにタイルをチェックアウトします。
 Point[] getWritableTileIndices()
          どのタイルが書き込みのためにチェックアウトされているかを示す Point オブジェクトの配列を返します。
 boolean hasTileWriters()
          書き込みのためにチェックアウトされているタイルがあるかどうかを返します。
 boolean isTileWritable(int tileX, int tileY)
          タイルが現在書き込みのためにチェックアウトされているかどうかを返します。
 void releaseWritableTile(int tileX, int tileY)
          タイルに書き込むためのアクセス権を放棄します。
 void removeTileObserver(TileObserver to)
          オブザーバを削除します。
 void setData(Raster r)
          イメージの矩形を、WritableRenderedImage と同じ座標空間にあると見なされる Raster r の内容に設定します。
 
インタフェース java.awt.image.RenderedImage から継承したメソッド
copyData, getColorModel, getData, getData, getHeight, getMinTileX, getMinTileY, getMinX, getMinY, getNumXTiles, getNumYTiles, getProperty, getPropertyNames, getSampleModel, getSources, getTile, getTileGridXOffset, getTileGridYOffset, getTileHeight, getTileWidth, getWidth
 

メソッドの詳細

addTileObserver

public void addTileObserver(TileObserver to)
オブザーバを追加します。オブザーバがすでにある場合は、複数の通知を受け取ることになります。

パラメータ:
to - 指定された TileObserver

removeTileObserver

public void removeTileObserver(TileObserver to)
オブザーバを削除します。オブザーバが登録されていなかった場合は、何も行われません。オブザーバが複数の通知に対して登録されていた場合は、1 つ少なくなります。

パラメータ:
to - 指定された TileObserver

getWritableTile

public WritableRaster getWritableTile(int tileX,
                                      int tileY)
書き込みのためにタイルをチェックアウトします。 WritableRenderedImage は、タイルにライターがない状態からライターが 1 つある状態に変わったときに、すべての TileObserver に通知を行います。

パラメータ:
tileX - タイルの X インデックス
tileY - タイルの Y インデックス
戻り値:
書き込み可能なタイル

releaseWritableTile

public void releaseWritableTile(int tileX,
                                int tileY)
タイルに書き込むためのアクセス権を放棄します。呼び出し側がタイルへの書き込みを続けた場合の結果は定義されていません。このメソッドは、getWritableTile とペアで呼び出さなければなりません。他の方法で呼び出された場合の結果は未定義です。タイルが 1 つのライターを持つ状態からライターなしの状態に変わるときは、WritableRenderedImage が登録されたすべての TileObservers に通知します。

パラメータ:
tileX - タイルの X インデックス
tileY - タイルの Y インデックス

isTileWritable

public boolean isTileWritable(int tileX,
                              int tileY)
タイルが現在書き込みのためにチェックアウトされているかどうかを返します。

パラメータ:
tileX - タイルの X インデックス
tileY - タイルの Y インデックス
戻り値:
指定されたタイルが書き込み用にチェックアウトされている場合は true、そうでない場合は false

getWritableTileIndices

public Point[] getWritableTileIndices()
どのタイルが書き込みのためにチェックアウトされているかを示す Point オブジェクトの配列を返します。チェックアウトされているタイルがない場合は null を返します。

戻り値:
書き込み用にチェックアウトされたタイルの位置を格納する配列

hasTileWriters

public boolean hasTileWriters()
書き込みのためにチェックアウトされているタイルがあるかどうかを返します。(getWritableTileIndices() != null) と同じです。

戻り値:
タイルが書き込み用にチェックアウトされている場合は true、そうでない場合は false

setData

public void setData(Raster r)
イメージの矩形を、WritableRenderedImage と同じ座標空間にあると見なされる Raster r の内容に設定します。オペレーションは WritableRenderedImage の境界にクリッピングされます。

パラメータ:
r - 指定された Raster

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.