|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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 を作成します。 |
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 を返します。 |
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, equals, finalize, getClass, hashCode, 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
が 0 以下の場合IllegalArgumentException
- dataType
が、DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
、DataBuffer.TYPE_INT
のどれでもない場合メソッドの詳細 |
public SampleModel createCompatibleSampleModel(int w, int h)
MultiPixelPackedSampleModel
を構築します。新しい MultiPixelPackedSampleModel
のストレージデータ型と 1 ピクセル当たりのビット数は、この MultiPixelPackedSampleModel
と同じです。SampleModel
内の createCompatibleSampleModel
w
- 指定された幅h
- 指定された高さMultiPixelPackedSampleModel
とストレージデータ型および 1 ピクセル当たりのビット数が同じ SampleModel
IllegalArgumentException
- w
または h
が 0 以下の場合public DataBuffer createDataBuffer()
MultiPixelPackedSampleModel
に対応する DataBuffer
を構築します。DataBuffer
オブジェクトのデータ型とサイズは、この MultiPixelPackedSampleModel
と同じです。DataBuffer
は 1 つのバンクを持ちます。SampleModel
内の createDataBuffer
MultiPixelPackedSampleModel
とデータ型およびサイズが同じ DataBuffer
public 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
内の getNumDataElements
public int[] getSampleSize()
SampleModel
内の getSampleSize
public int getSampleSize(int band)
SampleModel
内の getSampleSize
band
- 指定されたバンドpublic int getOffset(int x, int y)
x, y
- 指定されたピクセルpublic int getBitOffset(int x)
x
番目のピクセルとして格納されているデータ要素のオフセットをビット数で返します。このオフセットは、すべての走査線で同じです。x
- 指定されたピクセルpublic int getScanlineStride()
MultiPixelPackedSampleModel
の走査線ストライドpublic int getPixelBitStride()
MultiPixelPackedSampleModel
の pixelBitStride
public int getDataBitOffset()
MultiPixelPackedSampleModel
の dataBitOffset
public int getTransferType()
getDataElements
メソッドと setDataElements
メソッドによりピクセルを転送するために使う transferType を返します。transferType は、ストレージデータ型と同じでも、異なっていてもかまいません。transferType は、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT のどれかになります。SampleModel
内の getTransferType
public SampleModel createSubsetSampleModel(int[] bands)
MultiPixelPackedSampleModel
のバンドのサブセットを持つ新しい MultiPixelPackedSampleModel
を作成します。MultiPixelPackedSampleModel
はバンドを 1 つしか持たないので、bands 引数は長さ 1 でゼロ番目のバンドを示さなければなりません。SampleModel
内の createSubsetSampleModel
bands
- 指定されたバンドMultiPixelPackedSampleModel
のバンドのサブセットを持つ新しい SampleModel
RasterFormatException
- 要求されたバンド数が 1 でない場合IllegalArgumentException
- w
または h
が 0 以下の場合public int getSample(int x, int y, int b, DataBuffer data)
int
として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException
がスローされます。SampleModel
内の getSample
x, y
- 指定されたピクセルの座標b
- 返されるバンド (0 と見なされる)data
- イメージデータを格納する DataBuffer
ArrayIndexOutOfBoundException
- 指定された座標が境界内にない場合public void setSample(int x, int y, int b, int s, DataBuffer data)
int
を入力として使って、DataBuffer
の (x, y) に位置するピクセルの、指定されたバンドのサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException
がスローされます。SampleModel
内の setSample
x, y
- 指定されたピクセルの座標b
- 返されるバンド (0 と見なされる)s
- int
の入力サンプルdata
- イメージデータが格納されている DataBuffer
ArrayIndexOutOfBoundsException
- 座標が境界内にない場合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
内の getDataElements
x, y
- ピクセル位置の座標obj
- ピクセルデータを返すプリミティブ配列、または null
data
- イメージデータを格納する DataBuffer
Object
ClassCastException
- obj
が transferType 型のプリミティブ配列でなく、null
でもない場合ArrayIndexOutOfBoundsException
- 座標が境界内にない場合、あるいは obj
が null
でない場合に、ピクセルデータを保持するに十分な大きさでないときpublic int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
int
配列の先頭要素の、指定された 1 つのバンドのピクセルを返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException
がスローされます。SampleModel
内の getPixel
x, y
- ピクセル位置の座標iArray
- 返されるピクセルが格納される配列、または null
data
- イメージデータが格納されている DataBuffer
ArrayIndexOutOfBoundsException
- 座標が境界内にない場合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
内の setDataElements
x, y
- ピクセル位置の座標obj
- ピクセルデータを格納するプリミティブ配列data
- イメージデータを格納する DataBuffer
public void setPixel(int x, int y, int[] iArray, DataBuffer data)
int
配列を入力として使って、DataBuffer
のピクセルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException
がスローされます。SampleModel
内の setPixel
x, y
- ピクセル位置の座標iArray
- int
配列の入力ピクセルdata
- イメージデータを格納する DataBuffer
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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.