|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.awt.image.SampleModel
java.awt.image.ComponentSampleModel
public class ComponentSampleModel
このクラスは、DataBuffer のデータ要素 1 つに 1 つずつピクセルを形成する各サンプルが格納されているイメージデータを表します。DataBuffer は、1 ピクセルを形成する N 個のサンプルを、N 個の別個のデータ配列要素に格納します。異なるバンドが、それぞれ DataBuffer の別のバンクに格納される場合があります。イメージデータを直接操作できるように、アクセス用の各メソッドが提供されています。このクラスは、各種のインタリーブ (バンドインタリーブ、走査線インタリーブ、およびピクセルインタリーブなど) をサポート可能です。ピクセルストライドは、同じ走査線の同じバンドに対する 2 つのサンプル間の、データ配列要素数です。走査線ストライドは、任意のサンプルと、それと対応する、次の走査線の同じ列にあるサンプル間のデータ配列要素数です。バンドのオフセットは、各バンドを格納している DataBuffer のバンクにある最初のデータ配列要素から、バンドの最初のサンプルまでにある、データ配列要素数を表します。バンドには 0 から N-1 までの番号が付けられています。このクラスは、8 ビット、16 ビット、または 32 ビット (それぞれ、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT を使用) で格納できる符号なし整数値を各サンプルに持つイメージデータ、16 ビット (DataBuffer.TYPE_SHORT を使用) で格納できる符号付き整数値を各サンプルに持つデータ、または符号付き float 型または double 型の数値 (それぞれ DataBuffer.TYPE_FLOAT または DataBuffer.TYPE_DOUBLE を使用) を各サンプルに持つデータを表すことができます。このとき、指定された ComponentSampleModel のすべてのサンプルも、同じ精度で格納されます。すべてのストライド、およびオフセットは、負でない数値とする必要があります。このクラスは TYPE_BYTE、TYPE_USHORT、TYPE_SHORT、TYPE_INT、TYPE_FLOAT、TYPE_DOUBLE をサポートします。
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 を構築します。 |
boolean |
equals(Object o)
このオブジェクトとほかのオブジェクトが等しいかどうかを示します。 |
int[] |
getBandOffsets()
すべてのバンドについて、バンドのオフセットを返します。 |
int[] |
getBankIndices()
すべてのバンドについて、バンクのインデックスを返します。 |
Object |
getDataElements(int x,
int y,
Object obj,
DataBuffer data)
1 ピクセルのデータを TransferType 型のプリミティブ配列として返します。 |
int |
getNumDataElements()
getDataElements(int, int, Object, DataBuffer) メソッドと setDataElements(int, int, Object, DataBuffer) メソッドにより 1 ピクセルを転送するために必要なデータ要素の数を返します。 |
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 の走査線ストライドを返します。 |
int |
hashCode()
オブジェクトのハッシュコード値を返します。 |
void |
setDataElements(int x,
int y,
Object obj,
DataBuffer data)
指定された DataBuffer にある単一ピクセルのデータを、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, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
|---|
protected int[] bandOffsets
protected int[] bankIndices
protected int numBands
ComponentSampleModel 内のバンド数です。
protected int numBanks
ComponentSampleModel 内のバンク数です。
protected int scanlineStride
protected int pixelStride
| コンストラクタの詳細 |
|---|
public ComponentSampleModel(int dataType,
int w,
int h,
int pixelStride,
int scanlineStride,
int[] bandOffsets)
dataType - サンプル格納用のデータ形式w - 記述されるイメージデータの領域の幅 (ピクセル数)h - 記述されるイメージデータの領域の高さ (ピクセル数)pixelStride - 記述されたイメージデータの領域のピクセルストライドscanlineStride - 記述されたイメージデータの領域の走査線ストライドbandOffsets - すべてのバンドのオフセット
IllegalArgumentException - w または h がゼロ以下の場合
IllegalArgumentException - pixelStride が 0 未満の場合
IllegalArgumentException - scanlineStride が 0 未満の場合
IllegalArgumentException - numBands が 1 未満の場合
IllegalArgumentException - w と h の積が Integer.MAX_VALUE より大きい場合
IllegalArgumentException - dataType がサポートされていない場合
public ComponentSampleModel(int dataType,
int w,
int h,
int pixelStride,
int scanlineStride,
int[] bankIndices,
int[] bandOffsets)
dataType - サンプル格納用のデータ形式w - 記述されるイメージデータの領域の幅 (ピクセル数)h - 記述されるイメージデータの領域の高さ (ピクセル数)pixelStride - 記述されたイメージデータの領域のピクセルストライドscanlineStride - 記述されたイメージデータの領域の走査線ストライドbankIndices - すべてのバンドのバンクインデックスbandOffsets - すべてのバンドのバンドオフセット
IllegalArgumentException - w または h がゼロ以下の場合
IllegalArgumentException - pixelStride が 0 未満の場合
IllegalArgumentException - scanlineStride が 0 未満の場合
IllegalArgumentException - bankIndices の長さが bankOffsets の長さと等しくない場合
IllegalArgumentException - bankIndices のバンクインデックスのいずれがゼロより小さい場合
IllegalArgumentException - dataType がサポートされていない場合| メソッドの詳細 |
|---|
public SampleModel createCompatibleSampleModel(int w,
int h)
ComponentSampleModel を構築します。新しい SampleModel は、この SampleModel と同じ数のバンド、ストレージデータ型、インタリーブ化方式、およびピクセルストライドを持ちます。
SampleModel 内の createCompatibleSampleModelw - 結果として返された SampleModel の幅h - 結果として返された SampleModel の高さ
ComponentSampleModel
IllegalArgumentException - w または h がゼロ以下の場合public SampleModel createSubsetSampleModel(int[] bands)
SampleModel 内の createSubsetSampleModelbands - この ComponentSampleModel のバンドのサブセット
ComponentSampleModel のバンドのサブセットで作成された ComponentSampleModelpublic DataBuffer createDataBuffer()
ComponentSampleModel と対応する DataBuffer を作成します。DataBuffer のデータ型、バンク数、およびサイズは、この ComponentSampleModel と矛盾しません。
SampleModel 内の createDataBufferComponentSampleModel とデータ型、バンク数、およびサイズが同じ DataBuffer
public int getOffset(int x,
int y)
DataBuffer data から、ComponentSampleModel csm を使って次のようにして取得できます。
data.getElem(csm.getOffset(x, y));
x, y - ピクセルの位置
public int getOffset(int x,
int y,
int b)
b のサンプルは、DataBuffer data から、ComponentSampleModel csm を使って次のようにして取得できます。
data.getElem(csm.getOffset(x, y, b));
x, y - 指定されたピクセルの位置b - 指定されたバンド
public final int[] getSampleSize()
SampleModel 内の getSampleSizepublic final int getSampleSize(int band)
SampleModel 内の getSampleSize指定されたバンド -
public final int[] getBankIndices()
public final int[] getBandOffsets()
public final int getScanlineStride()
ComponentSampleModel の走査線ストライドpublic final int getPixelStride()
ComponentSampleModel のピクセルストライドpublic final int getNumDataElements()
getDataElements(int, int, Object, DataBuffer) メソッドと setDataElements(int, int, Object, DataBuffer) メソッドにより 1 ピクセルを転送するために必要なデータ要素の数を返します。ComponentSampleModel の場合は、バンド数と等しくなります。
SampleModel 内の getNumDataElementsgetDataElements メソッドと setDataElements メソッドにより 1 ピクセルを転送するために必要なデータ要素の数を返すSampleModel.getNumDataElements(),
SampleModel.getNumBands()
public Object getDataElements(int x,
int y,
Object obj,
DataBuffer data)
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);
2 つの SampleModel オブジェクトのバンド数が同じで、対応するバンドの 1 サンプルあたりのビット数が同じで、TransferType も同じ場合は、2 組の DataBuffer と SampleModel のペアの間で転送を行うには、getDataElements および setDataElements を使用するのが適切です。
obj が null でない場合は、TransferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合や、obj が null でなく、ピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException がスローされます。
SampleModel 内の getDataElementsx, y - ピクセル位置の座標obj - null でない場合は、返されたピクセルデータの入るプリミティブ配列data - イメージデータを格納する DataBuffer
NullPointerException - データが null の場合
ArrayIndexOutOfBoundsException - 座標が境界内にない場合、あるいは obj が出力を保持するには小さすぎる場合setDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の getPixelx, y - ピクセル位置の座標iArray - null でない場合、この配列内のサンプルを返すdata - イメージデータを格納する DataBuffer
NullPointerException - データが null の場合
ArrayIndexOutOfBoundsException - 座標が境界内にない場合、または iArray が小さすぎて出力を保持できない場合setPixel(int, int, int[], DataBuffer)
public int[] getPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の getPixelsx, y - 左上のピクセル位置の座標w - ピクセル矩形の幅h - ピクセル矩形の高さiArray - null でない場合、この配列内のサンプルを返すdata - イメージデータを格納する DataBuffer
setPixels(int, int, int, int, int[], DataBuffer)
public int getSample(int x,
int y,
int b,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の getSamplex, y - ピクセル位置の座標b - 返されるバンドdata - イメージデータを格納する DataBuffer
setSample(int, int, int, int, DataBuffer)
public float getSampleFloat(int x,
int y,
int b,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の getSampleFloatx, y - ピクセル位置の座標b - 返されるバンドdata - イメージデータを格納する DataBuffer
public double getSampleDouble(int x,
int y,
int b,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の getSampleDoublex, y - ピクセル位置の座標b - 返されるバンドdata - イメージデータを格納する DataBuffer
public int[] getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の getSamplesx, y - 左上のピクセル位置の座標w - ピクセル矩形の幅h - ピクセル矩形の高さb - 返されるバンドiArray - null でない場合、この配列内のサンプルを返すdata - イメージデータを格納する DataBuffer
setSamples(int, int, int, int, int, int[], DataBuffer)
public void setDataElements(int x,
int y,
Object obj,
DataBuffer data)
DataBuffer にある単一ピクセルのデータを、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);
2 つの SampleModel オブジェクトのバンド数が同じで、対応するバンドの 1 サンプルあたりのビット数が同じで、TransferType も同じ場合は、2 組の DataBuffer と SampleModel のペアの間で転送を行うには、getDataElements および setDataElements を使用するのが適切です。
obj が transferType 型のプリミティブ配列でない場合は、ClassCastException がスローされます。座標が境界内にない場合や、obj がピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException がスローされます。
SampleModel 内の setDataElementsx, y - ピクセル位置の座標obj - ピクセルデータを格納するプリミティブ配列data - イメージデータを格納する DataBuffergetDataElements(int, int, Object, DataBuffer)
public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
DataBuffer 内のピクセルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の setPixelx, y - ピクセル位置の座標iArray - int 配列内の入力サンプルdata - イメージデータを格納する DataBuffergetPixel(int, int, int[], DataBuffer)
public void setPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の setPixelsx, y - 左上のピクセル位置の座標w - ピクセル矩形の幅h - ピクセル矩形の高さiArray - int 配列内の入力サンプルdata - イメージデータを格納する DataBuffergetPixels(int, int, int, int, int[], DataBuffer)
public void setSample(int x,
int y,
int b,
int s,
DataBuffer data)
DataBuffer 内の (x, y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の setSamplex, y - ピクセル位置の座標b - 設定対象のバンドs - int の入力サンプルdata - イメージデータを格納する DataBuffergetSample(int, int, int, DataBuffer)
public void setSample(int x,
int y,
int b,
float s,
DataBuffer data)
DataBuffer 内の (x, y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の setSamplex, y - ピクセル位置の座標b - 設定対象のバンドs - float での入力サンプルdata - イメージデータを格納する DataBuffergetSample(int, int, int, DataBuffer)
public void setSample(int x,
int y,
int b,
double s,
DataBuffer data)
DataBuffer 内の (x, y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の setSamplex, y - ピクセル位置の座標b - 設定対象のバンドs - double での入力サンプルdata - イメージデータを格納する DataBuffergetSample(int, int, int, DataBuffer)
public void setSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の setSamplesx, y - 左上のピクセル位置の座標w - ピクセル矩形の幅h - ピクセル矩形の高さb - 設定対象のバンドiArray - int 配列内の入力サンプルdata - イメージデータを格納する DataBuffergetSamples(int, int, int, int, int, int[], DataBuffer)public boolean equals(Object o)
Object の記述:
equals メソッドは、null 以外のオブジェクト参照での同値関係を実装します。
x について、x.equals(x) は true を返すx と y について、x.equals(y) は、y.equals(x) が true を返す場合だけ true を返すx、y、z について、x.equals(y) が true を返し、かつ y.equals(z) が true を返す場合に、x.equals(z) は true を返すx および y について、x.equals(y) を複数呼び出すと常に true を返すか、常に false を返す。これは、オブジェクトに対する equals による比較で使われた情報が変更されていないことが条件であるx について、x.equals(null) は false を返す
Object クラスの equals メソッドは、もっとも比較しやすいオブジェクトの同値関係を実装します。つまり、null 以外の参照値 x と y について、このメソッドは x と y が同じオブジェクトを参照する (x == y が true) 場合にだけ true を返します。
通常、このメソッドをオーバーライドする場合は、hashCode メソッドを常にオーバーライドして、「等価なオブジェクトは等価なハッシュコードを保持する必要がある」という hashCode メソッドの汎用規約に従う必要があることに留意してください。
Object 内の equalso - 比較対象の参照オブジェクト
true、そうでない場合は falseObject.hashCode(),
Hashtablepublic int hashCode()
Object の記述: java.util.Hashtable によって提供されるようなハッシュテーブルで使用するために用意されています。
hashCode メソッドの一般的な規則を次に示します。
hashCode メソッドを呼び出しても結果は同じ整数値にならなければならないObject.equals(java.lang.Object) メソッドで 2 つのオブジェクトが等価でないとされた場合は、これらのオブジェクトに対して hashCode メソッドを呼び出したときに、結果が異なる整数値にならなくてもかまわない。しかし、等しくないオブジェクトについては異なる整数値が生成されるようにすれば、ハッシュテーブルのパフォーマンスを上げることができる
できるかぎり、Object クラスで定義される hashCode メソッドは、異なるオブジェクトについては異なる整数値を返します。通常、これはオブジェクトの内部アドレスを整数値に変換する形で実装されますが、そのような実装テクニックは JavaTM プログラミング言語では不要です。
Object 内の hashCodeObject.equals(java.lang.Object),
Hashtable
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。