public class SinglePixelPackedSampleModel extends SampleModel
TYPE_BYTE
、TYPE_USHORT
、TYPE_INT
の各データ型をサポートします。すべてのデータ配列要素は、DataBuffer の最初のバンクに常駐します。イメージデータを直接操作できるように、アクセス用メソッドが提供されています。走査線ストライドは、指定されたサンプルと次の走査線の同じ列の対応するサンプルとの間のデータ配列要素の数です。ビットマスクは、ピクセルのバンドを表すサンプルを抽出するのに必要なマスクです。ビットオフセットは、ピクセルのバンドを表すサンプルのデータ配列要素へのビット単位のオフセットです。
次のコードは、DataBuffer data
から、ピクセル x,y
のバンド b
を表すサンプルのビットを抽出する例です。
int sample = data.getElem(y * scanlineStride + x); sample = (sample & bitMasks[b]) >>> bitOffsets[b];
dataType, height, numBands, width
コンストラクタと説明 |
---|
SinglePixelPackedSampleModel(int dataType, int w, int h, int[] bitMasks)
bitMasks.length のバンドを使って SinglePixelPackedSampleModel を構築します。
|
SinglePixelPackedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bitMasks)
bitMasks.length のバンド、そして scanlineStride データ配列要素と一致する走査線ストライドを使って SinglePixelPackedSampleModel を構築します。
|
修飾子と型 | メソッドと説明 |
---|---|
SampleModel |
createCompatibleSampleModel(int w, int h)
指定された幅と高さを使って新しい SinglePixelPackedSampleModel を作成します。
|
DataBuffer |
createDataBuffer()
この SinglePixelPackedSampleModel に対応する DataBuffer を生成します。
|
SampleModel |
createSubsetSampleModel(int[] bands)
この SinglePixelPackedSampleModel のバンドのサブセットを使って新しい SinglePixelPackedSampleModel を作成します。
|
boolean |
equals(Object o)
このオブジェクトと他のオブジェクトが等しいかどうかを示します。
|
int[] |
getBitMasks()
すべてのバンドのビットマスクを返します。
|
int[] |
getBitOffsets()
すべてのバンドのピクセルを表すデータ配列要素にビットオフセットを返します。
|
Object |
getDataElements(int x, int y, Object obj, DataBuffer data)
transferType 型のプリミティブ配列内の 1 つのピクセルのデータを返します。
|
int |
getNumDataElements()
getDataElements メソッドおよび setDataElements メソッドを使って 1 ピクセル転送するのに必要なデータ要素の数を返します。
|
int |
getOffset(int x, int y)
ピクセル (x, y) のデータ配列要素内のオフセットを返します。
|
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 配列の指定されたピクセルの矩形のすべてのサンプルを返します。配列要素ごとに 1 つのサンプルが返されます。
|
int |
getSample(int x, int y, int b, DataBuffer data)
(x, y) に位置するピクセルの、指定されたバンド内のサンプルを int として返します。
|
int[] |
getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
int 配列の指定されたピクセルの矩形の、指定されたバンドのサンプルを返します。配列要素ごとに 1 つのサンプルが返されます。
|
int[] |
getSampleSize()
すべてのバンドのサンプルあたりのビット数を返します。
|
int |
getSampleSize(int band)
指定されたバンドのサンプルあたりのビット数を返します。
|
int |
getScanlineStride()
この SinglePixelPackedSampleModel の走査線ストライドを返します。
|
int |
hashCode()
オブジェクトのハッシュコード値を返します。
|
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, 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 配列から設定します。
|
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSample, setSample, setSamples, setSamples
public SinglePixelPackedSampleModel(int dataType, int w, int h, int[] bitMasks)
dataType
- サンプルの格納のためのデータ型。w
- 記述されたイメージデータの領域の幅 (単位はピクセル)。h
- 記述されたイメージデータの領域の高さ (単位はピクセル)。bitMasks
- すべてのバンドのビットマスク。IllegalArgumentException
- dataType
が DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
、または DataBuffer.TYPE_INT
のいずれでもない場合public SinglePixelPackedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bitMasks)
dataType
- サンプルの格納のためのデータ型。w
- 記述されたイメージデータの領域の幅 (単位はピクセル)。h
- 記述されたイメージデータの領域の高さ (単位はピクセル)。scanlineStride
- イメージデータの走査線ストライド。bitMasks
- すべてのバンドのビットマスク。IllegalArgumentException
- w
または h
が 0 以下である場合IllegalArgumentException
- bitMask
のマスクが連続していない場合IllegalArgumentException
- dataType
が DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
、または DataBuffer.TYPE_INT
のいずれでもない場合public int getNumDataElements()
getNumDataElements
、クラス: SampleModel
SampleModel.getDataElements(int, int, Object, DataBuffer)
, SampleModel.getDataElements(int, int, int, int, Object, DataBuffer)
, SampleModel.setDataElements(int, int, Object, DataBuffer)
, SampleModel.setDataElements(int, int, int, int, Object, DataBuffer)
, SampleModel.getTransferType()
public SampleModel createCompatibleSampleModel(int w, int h)
createCompatibleSampleModel
、クラス: SampleModel
w
- 結果として得られる SampleModel
の幅h
- 結果として得られる SampleModel
の高さSinglePixelPackedSampleModel
。IllegalArgumentException
- w
または h
が 0 以下である場合public DataBuffer createDataBuffer()
createDataBuffer
、クラス: SampleModel
SampleModel
に対する DataBuffer
。public int[] getSampleSize()
getSampleSize
、クラス: SampleModel
public int getSampleSize(int band)
getSampleSize
、クラス: SampleModel
band
- 指定されたバンドpublic int getOffset(int x, int y)
x,y
が格納されているデータ要素は、次のように SinglePixelPackedSampleModel sppsm
を使って DataBuffer data
から取り出すことができます。
data.getElem(sppsm.getOffset(x, y));
x
- 指定されたピクセルの X 座標y
- 指定されたピクセルの Y 座標public int[] getBitOffsets()
public int[] getBitMasks()
public int getScanlineStride()
SinglePixelPackedSampleModel
の走査線ストライド。public SampleModel createSubsetSampleModel(int[] bands)
createSubsetSampleModel
、クラス: SampleModel
bands
- この SampleModel
のバンドのサブセットSampleModel
のバンドのサブセットを持つ SampleModel
。RasterFormatException
- bands 引数の長さがサンプルモデルのバンド数より大きい場合。public Object getDataElements(int x, int y, Object obj, DataBuffer data)
次のコードは、SinglePixelPackedSampleModel sppsm1
によってストレージレイアウトが記述されている DataBuffer db1
から、SinglePixelPackedSampleModel sppsm2
によってストレージレイアウトが記述されている DataBuffer db2
へ、1 ピクセルのデータを転送する例です。通常、この転送は getPixel と setPixel を使うよりも効率的です。
SinglePixelPackedSampleModel sppsm1, sppsm2; DataBufferInt db1, db2; sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null, db1), db2);SampleModel のバンド数が同じで、対応するバンドのサンプルあたりのビット数が同じで、TransferType が同じである場合、2 つの DataBuffer/SampleModel 間の転送には、getDataElements/setDataElements を使用するのが適切です。
obj が null でない場合は、TransferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合、または obj が null でなく、ピクセルデータを格納するために十分なサイズでない場合は、ArrayIndexOutOfBoundsException がスローされます。
getDataElements
、クラス: SampleModel
x
- ピクセル位置の X 座標。y
- ピクセル位置の Y 座標。obj
- null でない場合は、ピクセルデータが返されるプリミティブ配列。data
- イメージデータを格納する DataBuffer。setDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
getPixel
、クラス: SampleModel
x
- ピクセル位置の X 座標。y
- ピクセル位置の Y 座標。iArray
- null でない場合、この配列内のサンプルを返しますdata
- イメージデータを格納する DataBuffer。setPixel(int, int, int[], DataBuffer)
public int[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
getPixels
、クラス: SampleModel
x
- 左上のピクセル位置の X 座標。y
- 左上のピクセル位置の 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)
getSample
、クラス: SampleModel
x
- ピクセル位置の X 座標。y
- ピクセル位置の Y 座標。b
- 返されるバンド。data
- イメージデータを格納する DataBuffer。setSample(int, int, int, int, DataBuffer)
public int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
getSamples
、クラス: SampleModel
x
- 左上のピクセル位置の X 座標。y
- 左上のピクセル位置の 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)
次のコードは、SinglePixelPackedSampleModel sppsm1
によってストレージレイアウトが記述されている DataBuffer db1
から、SinglePixelPackedSampleModel sppsm2
によってストレージレイアウトが記述されている DataBuffer db2
へ、1 ピクセルのデータを転送する例です。通常、この転送は getPixel と setPixel を使うよりも効率的です。
SinglePixelPackedSampleModel sppsm1, sppsm2; DataBufferInt db1, db2; sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null, db1), db2);SampleModel のバンド数が同じで、対応するバンドのサンプルあたりのビット数が同じで、TransferType が同じである場合、2 つの DataBuffer/SampleModel 間の転送には、getDataElements/setDataElements を使用するのが適切です。
obj は、TransferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合、または obj がピクセルデータを格納するために十分なサイズでない場合は、ArrayIndexOutOfBoundsException がスローされます。
setDataElements
、クラス: SampleModel
x
- ピクセル位置の X 座標。y
- ピクセル位置の Y 座標。obj
- ピクセルデータを格納するプリミティブ配列。data
- イメージデータを格納する DataBuffer。getDataElements(int, int, Object, DataBuffer)
public void setPixel(int x, int y, int[] iArray, DataBuffer data)
setPixel
、クラス: SampleModel
x
- ピクセル位置の X 座標。y
- ピクセル位置の Y 座標。iArray
- int 配列形式の入力サンプル。data
- イメージデータを格納する DataBuffer。getPixel(int, int, int[], DataBuffer)
public void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
setPixels
、クラス: SampleModel
x
- 左上のピクセル位置の X 座標。y
- 左上のピクセル位置の Y 座標。w
- ピクセル矩形の幅。h
- ピクセル矩形の高さ。iArray
- int 配列形式の入力サンプル。data
- イメージデータを格納する DataBuffer。getPixels(int, int, int, int, int[], DataBuffer)
public void setSample(int x, int y, int b, int s, DataBuffer data)
setSample
、クラス: SampleModel
x
- ピクセル位置の X 座標。y
- ピクセル位置の Y 座標。b
- 設定されるバンド。s
- int の入力サンプル。data
- イメージデータを格納する DataBuffer。getSample(int, int, int, DataBuffer)
public void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
setSamples
、クラス: SampleModel
x
- 左上のピクセル位置の X 座標。y
- 左上のピクセル位置の Y 座標。w
- ピクセル矩形の幅。h
- ピクセル矩形の高さ。b
- 設定されるバンド。iArray
- int 配列形式の入力サンプル。data
- イメージデータを格納する DataBuffer。getSamples(int, int, int, int, int, int[], DataBuffer)
public boolean equals(Object o)
Object
equals
メソッドは、null 以外のオブジェクト参照での同値関係を実装します。
x
について、x.equals(x)
は true
を返します。
x
および y
について、y.equals(x)
が true
を返す場合に限り、x.equals(y)
は true
を返します。
x
、y
、および z
について、x.equals(y)
が true
を返し、y.equals(z)
が true
を返す場合、x.equals(z)
は true
を返します。
x
および y
について、x.equals(y)
の複数の呼び出しは、このオブジェクトに対する equals
による比較で使われた情報が変更されていなければ、一貫して true
を返すか、一貫して false
を返します。
x
について、x.equals(null)
は false
を返します。
Object
クラスの equals
メソッドは、もっとも比較しやすいオブジェクトの同値関係を実装します。つまり、null 以外の参照値 x
と y
について、このメソッドは x
と y
が同じオブジェクトを参照する (x == y
が true
) 場合にだけ true
を返します。
通常、このメソッドをオーバーライドする場合は、hashCode
メソッドを常にオーバーライドして、「等価なオブジェクトは等価なハッシュコードを保持する必要がある」という hashCode
メソッドの汎用規約に従う必要があることに留意してください。
equals
、クラス: Object
o
- 比較対象の参照オブジェクト。true
、それ以外の場合は false
。Object.hashCode()
、HashMap
public int hashCode()
Object
HashMap
によって提供されるハッシュテーブルなどの、ハッシュテーブルの利点のためにサポートされています。
hashCode
の一般的な規則は次のとおりです。
equals
の比較で使用される情報が変更されていなければ、hashCode
メソッドは常に同じ整数を返す必要があります。ただし、この整数は同じアプリケーションの実行ごとに同じである必要はありません。
equals(Object)
メソッドに従って 2 つのオブジェクトが等しい場合は、2 つの各オブジェクトに対する hashCode
メソッドの呼び出しによって同じ整数の結果が生成される必要があります。
Object.equals(java.lang.Object)
メソッドに従って 2 つのオブジェクトが等しくない場合は、2 つの各オブジェクトに対する hashCode
メソッドの呼び出しによって異なる整数の結果が生成される必要はありません。ただし、プログラマは、等しくないオブジェクトに対して異なる整数の結果を生成すると、ハッシュテーブルのパフォーマンスが向上する可能性があることに注意するようにしてください。
クラス Object
によって定義された hashCode メソッドは、可能なかぎり、異なるオブジェクトに対して異なる整数を返します。(これは通常、オブジェクトの内部アドレスを整数に変換することによって実装されますが、この実装テクニックは JavaTM プログラミング言語では必要ありません。)
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.