JavaTM 2 Platform
Std. Ed. v1.3

java.awt.image
クラス ComponentSampleModel

java.lang.Object
  |
  +--java.awt.image.SampleModel
        |
        +--java.awt.image.ComponentSampleModel
直系の既知のサブクラス:
BandedSampleModel, PixelInterleavedSampleModel

public class ComponentSampleModel
extends SampleModel

このクラスは、DataBuffer のデータ要素 1 つに 1 つずつピクセルを形成する各サンプルが格納されているイメージデータを表します。DataBuffer は、1 ピクセルを形成する N 個のサンプルを、N 個の別個のデータ配列要素に格納します。異なるバンドはそれぞれ、DataBuffer の別のバンクに格納されている場合があります。イメージデータを直接操作できるように、アクセス用の各メソッドが提供されています。このクラスは、各種のインタリーブをサポートできます。たとえば、バンドインタリーブ、走査線インタリーブ、およびピクセルインタリーブです。ピクセルストライドは、同じ走査線の同じバンドに対する 2 つのサンプル間の、データ配列要素数です。走査線ストライドは、任意のサンプルと、それと対応する、次の走査線の同じ列にあるサンプル間のデータ配列要素数です。バンドのオフセットは、各バンドを格納している DataBuffer のバンクにある最初のデータ配列要素から、バンドの最初のサンプルまでにある、データ配列要素数を表します。バンドには 0 から N-1 までの番号がつけられています。このクラスは、8 ビット、16 ビット、または 32 ビットで格納できる積分値を各サンプルに持つイメージデータを表すことができます。このとき、指定された ComponentSampleModel のすべてのサンプルも、同じ精度で格納されます。すべてのストライド、およびオフセットは、負でない数値とする必要があります。このクラスは TYPE_BYTETYPE_USHORTTYPE_SHORT、および TYPE_INT をサポートします。

関連項目:
PixelInterleavedSampleModel, BandedSampleModel

フィールドの概要
protected  int[] bandOffsets
          データ配列要素にあるすべてのバンドのオフセットです。
protected  int[] bankIndices
          イメージデータのバンドを格納する各バンクのインデックスです。
protected  int numBands
          この ComponentSampleModel 内のバンド数です。
protected  int numBanks
          この ComponentSampleModel 内のバンク数です。
protected  int pixelStride
          この ComponentSampleModel で記述されるイメージデータ領域 (データ配列要素) のピクセルストライドです。
protected  int scanlineStride
          この ComponentSampleModel で記述されるイメージデータ領域 (データ配列要素) の走査線ストライドです。
 
クラス java.awt.image.SampleModel から継承したフィールド
dataType, height, width
 
コンストラクタの概要
ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bandOffsets)
          指定されたパラメータで、ComponentSampleModel を構築します。
ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bankIndices, int[] bandOffsets)
          指定されたパラメータで、ComponentSampleModel を構築します。
 
メソッドの概要
 SampleModel createCompatibleSampleModel(int w, int h)
          指定された幅および高さで、新しい ComponentSampleModel を構築します。
 DataBuffer createDataBuffer()
          この ComponentSampleModel と対応する DataBuffer を作成します。
 SampleModel createSubsetSampleModel(int[] bands)
          この ComponentSampleModel のサブセットを持つ、新しい ComponentSampleModel を構築します。
 int[] getBandOffsets()
          すべてのバンドについて、バンドのオフセットを返します。
 int[] getBankIndices()
          すべてのバンクについて、バンクのインデックスを返します。
 Object getDataElements(int x, int y, Object obj, DataBuffer data)
          1 ピクセルのデータを transferType 型のプリミティブ配列として返します。
 int getNumDataElements()
          getDataElements メソッドおよび setDataElements メソッドでピクセルを転送するのに必要なデータ要素数を返します。
 int getOffset(int x, int y)
          ピクセル (x,y) の最初のバンドのオフセットを返します。
 int getOffset(int x, int y, int b)
          ピクセル (x,y) のバンド b のオフセットを返します。
 int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
          指定されたピクセルのすべてのサンプルを int 配列として返します。
 int[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
          int 配列の指定されたピクセルの矩形のすべてのサンプルを返します。
 int getPixelStride()
          この ComponentSampleModel のピクセルストライドを返します。
 int getSample(int x, int y, int b, DataBuffer data)
          (x,y) に位置するピクセルの、指定されたバンド内のサンプルを int として返します。
 double getSampleDouble(int x, int y, int b, DataBuffer data)
          (x,y) に位置するピクセルの指定されたバンド内のサンプルを double として返します。
 float getSampleFloat(int x, int y, int b, DataBuffer data)
          (x,y) に位置するピクセルの指定されたバンド内のサンプルを float として返します。
 int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
          指定されたピクセル矩形に使うサンプルを int 配列として返します。
 int[] getSampleSize()
          すべてのバンドのサンプル当りのビット数を返します。
 int getSampleSize(int band)
          指定されたバンドのサンプル当りのビット数を返します。
 int getScanlineStride()
          この ComponentSampleModel の走査線ストライドを返します。
 void setDataElements(int x, int y, Object obj, DataBuffer data)
          指定された DataBuffer にある 1 ピクセルのデータを、transferType 型のプリミティブ配列から設定します。
 void setPixel(int x, int y, int[] iArray, DataBuffer data)
          サンプルの int 配列を入力として使用して DataBuffer 内のピクセルを設定します。
 void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
          配列要素ごとに 1 つのサンプルが格納されている int 配列から、ピクセルの矩形のすべてのサンプルを設定します。
 void setSample(int x, int y, int b, double s, DataBuffer data)
          double を入力として使って DataBuffer 内の (x,y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。
 void setSample(int x, int y, int b, float s, DataBuffer data)
          float を入力として使って DataBuffer 内の (x,y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。
 void setSample(int x, int y, int b, int s, DataBuffer data)
          int を入力として使用して DataBuffer 内の (x,y) に位置するピクセルの、指定したバンド内のサンプルを設定します。
 void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
          データ配列要素当たり 1 個のサンプルを格納している int 配列から、指定されたピクセル矩形の、指定されたバンドにサンプルを設定します。
 
クラス java.awt.image.SampleModel から継承したメソッド
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSamples, setSamples
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

bandOffsets

protected int[] bandOffsets
データ配列要素にあるすべてのバンドのオフセットです。

bankIndices

protected int[] bankIndices
イメージデータのバンドを格納する各バンクのインデックスです。

numBands

protected int numBands
この ComponentSampleModel 内のバンド数です。

numBanks

protected int numBanks
この ComponentSampleModel 内のバンク数です。

scanlineStride

protected int scanlineStride
この ComponentSampleModel で記述されるイメージデータ領域 (データ配列要素) の走査線ストライドです。

pixelStride

protected int pixelStride
この ComponentSampleModel で記述されるイメージデータ領域 (データ配列要素) のピクセルストライドです。
コンストラクタの詳細

ComponentSampleModel

public ComponentSampleModel(int dataType,
                            int w,
                            int h,
                            int pixelStride,
                            int scanlineStride,
                            int[] bandOffsets)
指定されたパラメータで、ComponentSampleModel を構築します。バンド数は、bandOffsets 配列の長さによって決まります。すべてのバンドは、DataBuffer の最初のバンクに格納されます。
パラメータ:
dataType - サンプルの格納のためのデータタイプ
w - 記述されるイメージデータの領域の幅 (ピクセル数)
h - 記述されるイメージデータの領域の高さ (ピクセル数)
pixelStride - 記述されたイメージデータの領域のピクセルストライド
scanlineStride - 記述されたイメージデータの領域の走査線ストライド
bandOffsets - すべてのバンドのオフセット
例外:
IllegalArgumentException - w または h が 0 以下の場合
IllegalArgumentException - pixelStride が 0 未満の場合
IllegalArgumentException - scanlineStride が 0 未満の場合
IllegalArgumentException - numBands が 1 未満の場合
IllegalArgumentException - wh の積が Integer.MAX_VALUE より大きい場合
IllegalArgumentException - dataType がサポートされていない場合

ComponentSampleModel

public ComponentSampleModel(int dataType,
                            int w,
                            int h,
                            int pixelStride,
                            int scanlineStride,
                            int[] bankIndices,
                            int[] bandOffsets)
指定されたパラメータで、ComponentSampleModel を構築します。バンド数は、bandOffsets 配列の長さによって決まります。異なるバンドは、DataBuffer の別々のバンクに格納されます。
パラメータ:
dataType - サンプルの格納のためのデータタイプ
w - 記述されるイメージデータの領域の幅 (ピクセル数)
h - 記述されるイメージデータの領域の高さ (ピクセル数)
pixelStride - 記述されたイメージデータの領域のピクセルストライド
scanlineStride - 記述されたイメージデータの領域の走査線ストライド
bankIndices - すべてのバンドのバンクインデックス
bandOffsets - すべてのバンドのバンドオフセット
例外:
IllegalArgumentException - w または h が 0 以下の場合
IllegalArgumentException - pixelStride が 0 未満の場合
IllegalArgumentException - scanlineStride が 0 未満の場合
IllegalArgumentException - bankIndices の長さが bankOffsets の長さと等しくない場合
IllegalArgumentException - bankIndices のバンクインデックスのどれかがゼロより小さい場合
メソッドの詳細

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
指定された幅および高さで、新しい ComponentSampleModel を構築します。新しい SampleModel は、この SampleModel と同じ数のバンド、ストレージデータタイプ、インタリーブ化方式、およびピクセルストライドを持ちます。
オーバーライド:
クラス SampleModel 内の createCompatibleSampleModel
パラメータ:
w - 結果として返された SampleModel の幅
h - 結果として返された SampleModel の高さ
例外:
IllegalArgumentException - w または h が 0 以下の場合

createSubsetSampleModel

public SampleModel createSubsetSampleModel(int[] bands)
この ComponentSampleModel のサブセットを持つ、新しい ComponentSampleModel を構築します。新しい ComponentSampleModel は、既存の ComponentSampleModel を使用できる任意の DataBuffer と組み合わせて使用できます。新しい ComponentSampleModel と DataBuffer の組み合わせは、元の ComponentSampleModel と DataBuffer の組み合わせにあるバンドのサブセットを持つイメージを表します。
オーバーライド:
クラス SampleModel 内の createSubsetSampleModel

createDataBuffer

public DataBuffer createDataBuffer()
この ComponentSampleModel と対応する DataBuffer を作成します。DataBuffer のデータタイプ、バンク数、およびサイズは、この ComponentSampleModel と矛盾しません。
オーバーライド:
クラス SampleModel 内の createDataBuffer

getOffset

public int getOffset(int x,
                     int y)
ピクセル (x,y) の最初のバンドのオフセットを返します。最初のバンドのサンプルは、DataBuffer data から、ComponentSampleModel csm を使って次のようにして取得できます。
        data.getElem(csm.getOffset(x, y));
 

getOffset

public int getOffset(int x,
                     int y,
                     int b)
ピクセル (x,y) のバンド b のオフセットを返します。バンド b のサンプルは、DataBuffer data から、ComponentSampleModel csm を使って次のようにして取得できます。
       data.getElem(csm.getOffset(x, y, b));
 

getSampleSize

public final int[] getSampleSize()
すべてのバンドのサンプル当りのビット数を返します。
オーバーライド:
クラス SampleModel 内の getSampleSize

getSampleSize

public final int getSampleSize(int band)
指定されたバンドのサンプル当りのビット数を返します。
オーバーライド:
クラス SampleModel 内の getSampleSize

getBankIndices

public final int[] getBankIndices()
すべてのバンクについて、バンクのインデックスを返します。

getBandOffsets

public final int[] getBandOffsets()
すべてのバンドについて、バンドのオフセットを返します。

getScanlineStride

public final int getScanlineStride()
この ComponentSampleModel の走査線ストライドを返します。

getPixelStride

public final int getPixelStride()
この ComponentSampleModel のピクセルストライドを返します。

getNumDataElements

public final int getNumDataElements()
getDataElements メソッドおよび setDataElements メソッドでピクセルを転送するのに必要なデータ要素数を返します。ComponentSampleModel では、これはバンド数と等しくなります。
オーバーライド:
クラス SampleModel 内の getNumDataElements
関連項目:
SampleModel.getNumDataElements()

getDataElements

public Object getDataElements(int x,
                              int y,
                              Object obj,
                              DataBuffer data)
1 ピクセルのデータを transferType 型のプリミティブ配列として返します。ComponentSampleModel では、これはデータ型と等しくなり、サンプルが配列要素ごとに 1 個ずつ返されます。通常は、Object が自動的に作成され、正しい基本データ型になるように、obj には null が渡されます。

次のコードは、ComponentSampleModel csm1 によってストレージレイアウトが記述されている DataBuffer db1 から、ComponentSampleModel csm2 によって、ストレージレイアウトが記述されている DataBuffer db2 へ、1 ピクセルのデータを転送する例です。この転送方法は getPixel と setPixel を使う方法よりも効率的です。

 	     ComponentSampleModel csm1, csm2;
	     DataBufferInt db1, db2;
 	     csm2.setDataElements(x, y,
                            csm1.getDataElements(x, y, null, db1), db2);
 
SampleModel のバンド数が同じで、対応するバンドのサンプル当りのビット数が同じで、transferType が同じである場合、2 つの DataBuffer/SampleModel のペアの間で転送するときは、getDataElements/setDataElements を使用するのが適切です。

obj が null でない場合は、transferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合、または obj が null でなく、ピクセルデータを格納するために十分なサイズでない場合は、ArrayIndexOutOfBoundsException がスローされることもあります。

オーバーライド:
クラス SampleModel 内の getDataElements
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
obj - null でない場合は、返されたピクセルデータの入るプリミティブ配列
data - イメージデータが格納されている DataBuffer

getPixel

public int[] getPixel(int x,
                      int y,
                      int[] iArray,
                      DataBuffer data)
指定されたピクセルのすべてのサンプルを int 配列として返します。配列要素にサンプル 1 個が対応します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の getPixel
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
iArray - null でない場合、この配列内のサンプルを返す
data - イメージデータが格納されている DataBuffer

getPixels

public int[] getPixels(int x,
                       int y,
                       int w,
                       int h,
                       int[] iArray,
                       DataBuffer data)
int 配列の指定されたピクセルの矩形のすべてのサンプルを返します。配列要素ごとに 1 つのサンプルが返されます。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の getPixels
パラメータ:
x - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
iArray - null でない場合、この配列内のサンプルを返す
data - イメージデータが格納されている DataBuffer

getSample

public int getSample(int x,
                     int y,
                     int b,
                     DataBuffer data)
(x,y) に位置するピクセルの、指定されたバンド内のサンプルを int として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の getSample
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 返されるバンド
data - イメージデータが格納されている DataBuffer

getSampleFloat

public float getSampleFloat(int x,
                            int y,
                            int b,
                            DataBuffer data)
(x,y) に位置するピクセルの指定されたバンド内のサンプルを float として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の getSampleFloat
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 返されるバンド
data - イメージデータが格納されている DataBuffer

getSampleDouble

public double getSampleDouble(int x,
                              int y,
                              int b,
                              DataBuffer data)
(x,y) に位置するピクセルの指定されたバンド内のサンプルを double として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の getSampleDouble
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 返されるバンド
data - イメージデータが格納されている DataBuffer

getSamples

public int[] getSamples(int x,
                        int y,
                        int w,
                        int h,
                        int b,
                        int[] iArray,
                        DataBuffer data)
指定されたピクセル矩形に使うサンプルを int 配列として返します。配列要素にサンプル 1 個が対応します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の getSamples
パラメータ:
x - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
b - 返されるバンド
iArray - null でない場合、この配列内のサンプルを返す
data - イメージデータが格納されている DataBuffer

setDataElements

public void setDataElements(int x,
                            int y,
                            Object obj,
                            DataBuffer data)
指定された DataBuffer にある 1 ピクセルのデータを、transferType 型のプリミティブ配列から設定します。ComponentSampleModel では、これはデータ型と同じになり、サンプルは各配列要素に 1 個ずつ転送されます。

次のコードは、ComponentSampleModel csm1 によってストレージレイアウトが記述されている DataBuffer db1 から、ComponentSampleModel csm2 によって、ストレージレイアウトが記述されている DataBuffer db2 へ、1 ピクセルのデータを転送する例です。この転送方法は getPixel と setPixel を使う方法よりも効率的です。

 	     ComponentSampleModel csm1, csm2;
	     DataBufferInt db1, db2;
 	     csm2.setDataElements(x, y, csm1.getDataElements(x, y, null, db1),
                            db2);
 
SampleModel のバンド数が同じで、対応するバンドのサンプル当りのビット数が同じで、transferType が同じである場合、2 つの DataBuffer/SampleModel のペアの間で転送するときは、getDataElements/setDataElements を使用するのが適切です。

obj は transferType 型のプリミティブ配列でなければなりません。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合、または obj がピクセルデータを格納するために十分なサイズでない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。

オーバーライド:
クラス SampleModel 内の setDataElements
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
obj - ピクセルデータを格納するプリミティブ配列
data - イメージデータが格納されている DataBuffer

setPixel

public void setPixel(int x,
                     int y,
                     int[] iArray,
                     DataBuffer data)
サンプルの int 配列を入力として使用して DataBuffer 内のピクセルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の setPixel
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
iArray - int 配列にある入力サンプル
data - イメージデータが格納されている DataBuffer

setPixels

public void setPixels(int x,
                      int y,
                      int w,
                      int h,
                      int[] iArray,
                      DataBuffer data)
配列要素ごとに 1 つのサンプルが格納されている int 配列から、ピクセルの矩形のすべてのサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の setPixels
パラメータ:
x - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
iArray - int 配列にある入力サンプル
data - イメージデータが格納されている DataBuffer

setSample

public void setSample(int x,
                      int y,
                      int b,
                      int s,
                      DataBuffer data)
int を入力として使用して DataBuffer 内の (x,y) に位置するピクセルの、指定したバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の setSample
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 設定されるバンド
s - int での入力サンプル
data - イメージデータが格納されている DataBuffer

setSample

public void setSample(int x,
                      int y,
                      int b,
                      float s,
                      DataBuffer data)
float を入力として使って DataBuffer 内の (x,y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の setSample
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 設定されるバンド
s - float での入力サンプル
data - イメージデータが格納されている DataBuffer

setSample

public void setSample(int x,
                      int y,
                      int b,
                      double s,
                      DataBuffer data)
double を入力として使って DataBuffer 内の (x,y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の setSample
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 設定されるバンド
s - double での入力サンプル
data - イメージデータが格納されている DataBuffer

setSamples

public void setSamples(int x,
                       int y,
                       int w,
                       int h,
                       int b,
                       int[] iArray,
                       DataBuffer data)
データ配列要素当たり 1 個のサンプルを格納している int 配列から、指定されたピクセル矩形の、指定されたバンドにサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされる場合があります。
オーバーライド:
クラス SampleModel 内の setSamples
パラメータ:
x - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
b - 設定されるバンド
iArray - int 配列にある入力サンプル
data - イメージデータが格納されている DataBuffer

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

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