|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
java.lang.Object
|
+--java.awt.image.SampleModel
|
+--java.awt.image.MultiPixelPackedSampleModel
MultiPixelPackedSampleModel クラスは、単一バンド化されたイメージを表現し、複数の単一サンプルピクセルを 1 つのデータ要素にパックできます。ピクセルは、複数のデータ要素にまたがることはできません。データ型は、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT です。各ピクセルは 2 のべき乗のビット数でなければならず、2 のべき乗個のピクセルが、1 つのデータ要素にぴったり収まらなければなりません。ピクセルビットストライドは、1 ピクセルあたりのビット数と同じです。走査線ストライドはデータ要素内にあり、最後のいくつかのデータ要素が未使用のピクセルでパディングされます。データビットオフセットは、DataBuffer の先頭から最初のピクセルまでのビット単位のオフセットであり、ピクセルビットストライドの倍数です。
次のコード例は、DataBuffer の data からピクセル x, y のビットを抽出し、dataType 型のデータ要素にピクセルデータを格納します。
int dataElementSize = DataBuffer.getDataTypeSize(dataType);
int bitnum = dataBitOffset + x*pixelBitStride;
int element = data.getElem(y*scanlineStride + bitnum/dataElementSize);
int shift = dataElementSize - (bitnum & (dataElementSize-1))
- pixelBitStride;
int pixel = (element >> shift) & ((1 << pixelBitStride) - 1);
| フィールドの概要 |
| クラス java.awt.image.SampleModel から継承したフィールド |
dataType, height, numBands, width |
| コンストラクタの概要 | |
MultiPixelPackedSampleModel(int dataType,
int w,
int h,
int numberOfBits)
指定されたデータ型、幅、高さ、および 1 ピクセルあたりのビット数を持つ MultiPixelPackedSampleModel を構築します。 |
|
MultiPixelPackedSampleModel(int dataType,
int w,
int h,
int numberOfBits,
int scanlineStride,
int dataBitOffset)
指定されたデータ型、幅、高さ、1 ピクセルあたりのビット数、走査線ストライド、およびデータビットオフセットを持つ MultiPixelPackedSampleModel を構築します。 |
|
| メソッドの概要 | |
SampleModel |
createCompatibleSampleModel(int w,
int h)
指定された幅と高さを持つ新しい MultiPixelPackedSampleModel を構築します。 |
DataBuffer |
createDataBuffer()
この MultiPixelPackedSampleModel に対応する DataBuffer を構築します。 |
SampleModel |
createSubsetSampleModel(int[] bands)
この MultiPixelPackedSampleModel のバンドのサブセットを持つ新しい MultiPixelPackedSampleModel を作成します。 |
boolean |
equals(Object o)
このオブジェクトと他のオブジェクトが等しいかどうかを示します。 |
int |
getBitOffset(int x)
走査線の x 番目のピクセルとして格納されているデータ要素のオフセットをビット数で返します。 |
int |
getDataBitOffset()
データビットオフセットをビット数で返します。 |
Object |
getDataElements(int x,
int y,
Object obj,
DataBuffer data)
transferType 型のプリミティブ配列内にある 1 つのピクセルのデータを返します。 |
int |
getNumDataElements()
getDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) メソッドと setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) メソッドにより 1 ピクセルを転送するために必要なデータ要素の数を返します。 |
int |
getOffset(int x,
int y)
ピクセル (x, y) のデータ配列要素でのオフセットを返します。 |
int[] |
getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
int 配列の先頭要素の、指定された 1 つのバンドのピクセルを返します。 |
int |
getPixelBitStride()
ピクセルビットストライドをビット数で返します。 |
int |
getSample(int x,
int y,
int b,
DataBuffer data)
(x, y) に位置するピクセルの指定されたバンドのサンプルを int として返します。 |
int[] |
getSampleSize()
すべてのバンドのサンプルあたりのビット数を返します。 |
int |
getSampleSize(int band)
指定されたバンドのサンプルあたりのビット数を返します。 |
int |
getScanlineStride()
走査線ストライドを返します。 |
int |
getTransferType()
getDataElements メソッドと setDataElements メソッドによりピクセルを転送するために使う transferType を返します。 |
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 |
setSample(int x,
int y,
int b,
int s,
DataBuffer data)
int を入力とし、DataBuffer の (x, y) に位置するピクセルの、指定されたバンドのサンプルを設定します。 |
| クラス java.awt.image.SampleModel から継承したメソッド |
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getSamples, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setPixels, setSample, setSample, setSamples, setSamples, setSamples |
| クラス java.lang.Object から継承したメソッド |
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
| コンストラクタの詳細 |
public MultiPixelPackedSampleModel(int dataType,
int w,
int h,
int numberOfBits)
MultiPixelPackedSampleModel を構築します。
dataType - サンプル格納のためのデータ型w - 記述されているイメージデータ領域の幅 (ピクセル数)h - 記述されているイメージデータの領域の高さ (ピクセル数)numberOfBits - ピクセルごとのビット数
IllegalArgumentException - dataType が、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のどれでもない場合
public MultiPixelPackedSampleModel(int dataType,
int w,
int h,
int numberOfBits,
int scanlineStride,
int dataBitOffset)
MultiPixelPackedSampleModel を構築します。
dataType - サンプル格納のためのデータ型w - 記述されているイメージデータ領域の幅 (ピクセル数)h - 記述されているイメージデータの領域の高さ (ピクセル数)numberOfBits - ピクセルごとのビット数scanlineStride - イメージデータの走査線ストライドdataBitOffset - 記述されているイメージデータ領域のデータビットオフセット
RasterFormatException - 1 ピクセルあたりのビット数が 2 のべき乗でない場合、あるいは 2 のべき乗個のピクセルが 1 データ要素に収まらない場合
IllegalArgumentException - w または h がゼロ以下の場合
IllegalArgumentException - dataType が、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のどれでもない場合| メソッドの詳細 |
public SampleModel createCompatibleSampleModel(int w,
int h)
MultiPixelPackedSampleModel を構築します。新しい MultiPixelPackedSampleModel のストレージデータ型と 1 ピクセルあたりのビット数は、この MultiPixelPackedSampleModel と同じです。
SampleModel 内の createCompatibleSampleModelw - 指定された幅h - 指定された高さ
MultiPixelPackedSampleModel とストレージデータ型および 1 ピクセルあたりのビット数が同じ SampleModel
IllegalArgumentException - w または h がゼロ以下の場合public DataBuffer createDataBuffer()
MultiPixelPackedSampleModel に対応する DataBuffer を構築します。DataBuffer オブジェクトのデータ型とサイズは、この MultiPixelPackedSampleModel と同じです。DataBuffer は 1 つのバンクを持ちます。
SampleModel 内の createDataBufferMultiPixelPackedSampleModel とデータ型およびサイズが同じ DataBufferpublic int getNumDataElements()
getDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) メソッドと setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) メソッドにより 1 ピクセルを転送するために必要なデータ要素の数を返します。MultiPixelPackedSampleModel の場合、この値は 1 です。
SampleModel 内の getNumDataElementsSampleModel.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 int[] getSampleSize()
SampleModel 内の getSampleSizepublic int getSampleSize(int band)
SampleModel 内の getSampleSizeband - 指定されたバンド
public int getOffset(int x,
int y)
public int getBitOffset(int x)
x 番目のピクセルとして格納されているデータ要素のオフセットをビット数で返します。このオフセットは、すべての走査線で同じです。
x - 指定されたピクセル
public int getScanlineStride()
MultiPixelPackedSampleModel の走査線ストライドpublic int getPixelBitStride()
MultiPixelPackedSampleModel の pixelBitStridepublic int getDataBitOffset()
MultiPixelPackedSampleModel の dataBitOffsetpublic int getTransferType()
getDataElements メソッドと setDataElements メソッドによりピクセルを転送するために使う transferType を返します。TransferType は、ストレージデータ型と同じでも、異なっていてもかまいません。TransferType は、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のどれかになります。
SampleModel 内の getTransferTypeSampleModel.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.getNumDataElements(),
DataBufferpublic SampleModel createSubsetSampleModel(int[] bands)
MultiPixelPackedSampleModel のバンドのサブセットを持つ新しい MultiPixelPackedSampleModel を作成します。MultiPixelPackedSampleModel はバンドを 1 つしか持たないので、bands 引数は長さ 1 でゼロ番目のバンドを示す必要があります。
SampleModel 内の createSubsetSampleModelbands - 指定されたバンド
MultiPixelPackedSampleModel のバンドのサブセットを持つ新しい SampleModel
RasterFormatException - 要求されたバンド数が 1 でない場合
IllegalArgumentException - w または h がゼロ以下の場合
public int getSample(int x,
int y,
int b,
DataBuffer data)
int として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。
SampleModel 内の getSampleb - 返されるバンド (0 と見なされる)data - イメージデータを格納する DataBufferx - ピクセル位置の X 座標y - ピクセル位置の Y 座標
ArrayIndexOutOfBoundException - 指定された座標が境界内にない場合setSample(int, int, int, int, DataBuffer)
public void setSample(int x,
int y,
int b,
int s,
DataBuffer data)
int を入力とし、DataBuffer の (x, y) に位置するピクセルの、指定されたバンドのサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。
SampleModel 内の setSampleb - 返されるバンド (0 と見なされる)s - int の入力サンプルdata - イメージデータが格納される DataBufferx - ピクセル位置の X 座標y - ピクセル位置の Y 座標
ArrayIndexOutOfBoundsException - 座標が境界内にない場合getSample(int, int, int, DataBuffer)
public Object getDataElements(int x,
int y,
Object obj,
DataBuffer data)
MultiPixelPackedSampleModel の場合、配列は 1 つの要素を持ち、型は 1 つのピクセルを格納できる DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のうちの最小のものになります。一般に、obj は null で渡されるので、Object は自動的に作成され、正しい基本データ型になります。
次のコードは、ストレージレイアウトが MultiPixelPackedSampleModel mppsm1 によって記述されている DataBuffer db1 から、ストレージレイアウトが MultiPixelPackedSampleModel mppsm2 によって記述されている DataBuffer db2 に、1 ピクセルのデータを転送する例を示します。この転送方法は、getPixel または setPixel を使う方法よりも一般に効率的です。
MultiPixelPackedSampleModel mppsm1, mppsm2;
DataBufferInt db1, db2;
mppsm2.setDataElements(x, y, mppsm1.getDataElements(x, y, null,
db1), db2);
2 つの SampleModel のバンド数が同じで、対応するバンドの 1 サンプルあたりのビット数が同じで、transferType も同じ場合は、2 組の DataBuffer と SampleModel ペア間の転送を行うには、getDataElements または setDataElements を使うのが適切です。
obj が null でない場合は、transferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合や、obj が null でなく、ピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException がスローされます。
SampleModel 内の getDataElementsobj - ピクセルデータを返すプリミティブ配列、または nulldata - イメージデータを格納する DataBufferx - ピクセル位置の X 座標y - ピクセル位置の Y 座標
Object
ClassCastException - obj が TransferType 型のプリミティブ配列でなく、null でもない場合
ArrayIndexOutOfBoundsException - 座標が境界内にない場合、または obj が null でないか、ピクセルデータを保持するに十分な大きさでないときsetDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
int 配列の先頭要素の、指定された 1 つのバンドのピクセルを返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。
SampleModel 内の getPixeliArray - 返されるピクセルが格納される配列、または nulldata - イメージデータの格納先の DataBuffer
ArrayIndexOutOfBoundsException - 座標が境界内にない場合setPixel(int, int, int[], DataBuffer)
public void setDataElements(int x,
int y,
Object obj,
DataBuffer data)
DataBuffer の 1 つのピクセルのデータを、TransferType 型のプリミティブ配列から設定します。MultiPixelPackedSampleModel の場合は、配列の先頭要素だけが有効なデータを保持し、型は 1 つのピクセルを保持できる DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のうちの最小のものになります。
次のコードは、ストレージレイアウトが MultiPixelPackedSampleModel mppsm1 によって記述されている DataBuffer db1 から、ストレージレイアウトが MultiPixelPackedSampleModel mppsm2 によって記述されている DataBuffer db2 に、1 ピクセルのデータを転送する例を示します。この転送方法は、getPixel または setPixel を使う方法よりも一般に効率的です。
MultiPixelPackedSampleModel mppsm1, mppsm2;
DataBufferInt db1, db2;
mppsm2.setDataElements(x, y, mppsm1.getDataElements(x, y, null,
db1), db2);
2 つの SampleModel オブジェクトのバンド数が同じで、対応するバンドの 1 サンプルあたりのビット数が同じで、TransferType も同じ場合は、2 組の DataBuffer と SampleModel ペア間で転送を行うには、getDataElements または setDataElements を使うのが適切です。
obj は、TransferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合や、obj がピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException がスローされます。
SampleModel 内の setDataElementsobj - ピクセルデータを格納するプリミティブ配列data - イメージデータを格納する DataBufferx - ピクセル位置の X 座標y - ピクセル位置の Y 座標getDataElements(int, int, Object, DataBuffer)
public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
int 配列を入力とし、DataBuffer のピクセルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。
SampleModel 内の setPixeliArray - int 配列の入力ピクセルdata - イメージデータを格納する DataBufferx - ピクセル位置の X 座標y - ピクセル位置の Y 座標getPixel(int, int, int[], DataBuffer)public boolean equals(Object o)
Object の記述:
equals メソッドは同値関係を実装します。
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 メソッドは、もっとも比較しやすいオブジェクトの同値関係を実装します。つまり、すべての参照値 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 Std. Ed. v1.4.0 |
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
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.