|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.awt.image.SampleModel java.awt.image.SinglePixelPackedSampleModel
public class SinglePixelPackedSampleModel
このクラスは、1 つのピクセルを構成する N 個のサンプルが 1 つのデータ配列要素に格納されるようにパックされたピクセルデータを表します。 データ配列要素の各データは 1 つのピクセルだけのサンプルを保持します。このクラスは、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];
フィールドの概要 |
---|
クラス java.awt.image.SampleModel から継承されたフィールド |
---|
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 配列の指定されたピクセルの矩形のすべてのサンプルを返します。 |
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 配列の指定されたピクセルの矩形の、指定されたバンドのサンプルを返します。 |
int[] |
getSampleSize()
すべてのバンドのサンプルあたりのビット数を返します。 |
int |
getSampleSize(int band)
指定されたバンドのサンプルあたりのビット数を返します。 |
int |
getScanlineStride()
この SinglePixelPackedSampleModel の走査線ストライドを返します。 |
int |
hashCode()
オブジェクトのハッシュコード値を返します。 |
void |
setDataElements(int x,
int y,
Object obj,
DataBuffer data)
TransferType 型のプリミティブ配列からの、指定した DataBuffer 内の 1 つのピクセルのデータを設定します。 |
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 配列から設定します。 |
クラス java.awt.image.SampleModel から継承されたメソッド |
---|
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSample, setSample, setSamples, setSamples |
クラス java.lang.Object から継承されたメソッド |
---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
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
がゼロ以下の場合
IllegalArgumentException
- bitMask
のマスクが連続していない場合
IllegalArgumentException
- dataType
が DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
、または DataBuffer.TYPE_INT
のいずれでもない場合メソッドの詳細 |
---|
public int getNumDataElements()
SampleModel
内の getNumDataElements
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)
SampleModel
内の createCompatibleSampleModel
w
- 結果として得られる SampleModel
の幅h
- 結果として得られる SampleModel
の高さ
SinglePixelPackedSampleModel
IllegalArgumentException
- w
または h
がゼロ以下の場合public DataBuffer createDataBuffer()
SampleModel
内の createDataBuffer
SampleModel
に対応する DataBuffer
public int[] getSampleSize()
SampleModel
内の getSampleSize
public int getSampleSize(int band)
SampleModel
内の getSampleSize
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)
SampleModel
内の createSubsetSampleModel
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 がスローされます。
SampleModel
内の getDataElements
x
- ピクセル位置の X 座標y
- ピクセル位置の Y 座標obj
- null でない場合は、ピクセルデータが返されるプリミティブ配列data
- イメージデータを格納する DataBuffer
setDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
SampleModel
内の getPixel
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)
SampleModel
内の getPixels
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)
SampleModel
内の getSample
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)
SampleModel
内の getSamples
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 がスローされます。
SampleModel
内の setDataElements
x
- ピクセル位置の X 座標y
- ピクセル位置の Y 座標obj
- ピクセルデータを格納するプリミティブ配列data
- イメージデータを格納する DataBuffergetDataElements(int, int, Object, DataBuffer)
public void setPixel(int x, int y, int[] iArray, DataBuffer data)
SampleModel
内の setPixel
x
- ピクセル位置の X 座標y
- ピクセル位置の Y 座標iArray
- int 配列形式の入力サンプルdata
- イメージデータを格納する DataBuffergetPixel(int, int, int[], DataBuffer)
public void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
SampleModel
内の setPixels
x
- 左上のピクセル位置の X 座標y
- 左上のピクセル位置の 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)
SampleModel
内の setSample
x
- ピクセル位置の X 座標y
- ピクセル位置の Y 座標b
- 設定されるバンドs
- int の入力サンプルdata
- イメージデータを格納する DataBuffergetSample(int, int, int, DataBuffer)
public void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
SampleModel
内の setSamples
x
- 左上のピクセル位置の X 座標y
- 左上のピクセル位置の 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
内の equals
o
- 比較対象の参照オブジェクト
true
、そうでない場合は false
Object.hashCode()
,
Hashtable
public int hashCode()
Object
の記述:java.util.Hashtable
によって提供されるようなハッシュテーブルで使用するために用意されています。
hashCode
メソッドの一般的な規則を次に示します。
hashCode
メソッドを呼び出しても結果は同じ整数値にならなければならない
Object.equals(java.lang.Object)
メソッドで 2 つのオブジェクトが等価でないとされた場合は、これらのオブジェクトに対して hashCode メソッドを呼び出したときに、結果が異なる整数値にならなくてもかまわない。しかし、等しくないオブジェクトについては異なる整数値が生成されるようにすれば、ハッシュテーブルのパフォーマンスを上げることができる
できるかぎり、Object クラスで定義される hashCode メソッドは、異なるオブジェクトについては異なる整数値を返します。通常、これはオブジェクトの内部アドレスを整数値に変換する形で実装されますが、そのような実装テクニックは JavaTM プログラミング言語では不要です。
Object
内の hashCode
Object.equals(java.lang.Object)
,
Hashtable
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。