JavaTM 2
Platform
Std. Ed. v1.4.0

java.awt.image
クラス MultiPixelPackedSampleModel

java.lang.Object
  |
  +--java.awt.image.SampleModel
        |
        +--java.awt.image.MultiPixelPackedSampleModel

public class MultiPixelPackedSampleModel
extends SampleModel

MultiPixelPackedSampleModel クラスは、単一バンド化されたイメージを表現し、複数の単一サンプルピクセルを 1 つのデータ要素にパックできます。ピクセルは、複数のデータ要素にまたがることはできません。データ型は、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT です。各ピクセルは 2 のべき乗のビット数でなければならず、2 のべき乗個のピクセルが、1 つのデータ要素にぴったり収まらなければなりません。ピクセルビットストライドは、1 ピクセルあたりのビット数と同じです。走査線ストライドはデータ要素内にあり、最後のいくつかのデータ要素が未使用のピクセルでパディングされます。データビットオフセットは、DataBuffer の先頭から最初のピクセルまでのビット単位のオフセットであり、ピクセルビットストライドの倍数です。

次のコード例は、DataBufferdata からピクセル 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
 

コンストラクタの詳細

MultiPixelPackedSampleModel

public MultiPixelPackedSampleModel(int dataType,
                                   int w,
                                   int h,
                                   int numberOfBits)
指定されたデータ型、幅、高さ、および 1 ピクセルあたりのビット数を持つ MultiPixelPackedSampleModel を構築します。

パラメータ:
dataType - サンプル格納のためのデータ型
w - 記述されているイメージデータ領域の幅 (ピクセル数)
h - 記述されているイメージデータの領域の高さ (ピクセル数)
numberOfBits - ピクセルごとのビット数
例外:
IllegalArgumentException - dataType が、DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のどれでもない場合

MultiPixelPackedSampleModel

public MultiPixelPackedSampleModel(int dataType,
                                   int w,
                                   int h,
                                   int numberOfBits,
                                   int scanlineStride,
                                   int dataBitOffset)
指定されたデータ型、幅、高さ、1 ピクセルあたりのビット数、走査線ストライド、およびデータビットオフセットを持つ MultiPixelPackedSampleModel を構築します。

パラメータ:
dataType - サンプル格納のためのデータ型
w - 記述されているイメージデータ領域の幅 (ピクセル数)
h - 記述されているイメージデータの領域の高さ (ピクセル数)
numberOfBits - ピクセルごとのビット数
scanlineStride - イメージデータの走査線ストライド
dataBitOffset - 記述されているイメージデータ領域のデータビットオフセット
例外:
RasterFormatException - 1 ピクセルあたりのビット数が 2 のべき乗でない場合、あるいは 2 のべき乗個のピクセルが 1 データ要素に収まらない場合
IllegalArgumentException - w または h がゼロ以下の場合
IllegalArgumentException - dataType が、DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のどれでもない場合
メソッドの詳細

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
指定された幅と高さを持つ新しい MultiPixelPackedSampleModel を構築します。新しい MultiPixelPackedSampleModel のストレージデータ型と 1 ピクセルあたりのビット数は、この MultiPixelPackedSampleModel と同じです。

定義:
クラス SampleModel 内の createCompatibleSampleModel
パラメータ:
w - 指定された幅
h - 指定された高さ
戻り値:
指定された幅と高さを持ち、この MultiPixelPackedSampleModel とストレージデータ型および 1 ピクセルあたりのビット数が同じ SampleModel
例外:
IllegalArgumentException - w または h がゼロ以下の場合

createDataBuffer

public DataBuffer createDataBuffer()
この MultiPixelPackedSampleModel に対応する DataBuffer を構築します。DataBuffer オブジェクトのデータ型とサイズは、この MultiPixelPackedSampleModel と同じです。DataBuffer は 1 つのバンクを持ちます。

定義:
クラス SampleModel 内の createDataBuffer
戻り値:
この MultiPixelPackedSampleModel とデータ型およびサイズが同じ DataBuffer

getNumDataElements

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
戻り値:
データ要素数
関連項目:
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()

getSampleSize

public int[] getSampleSize()
すべてのバンドのサンプルあたりのビット数を返します。

定義:
クラス SampleModel 内の getSampleSize
戻り値:
サンプルごとのビット数

getSampleSize

public int getSampleSize(int band)
指定されたバンドのサンプルあたりのビット数を返します。

定義:
クラス SampleModel 内の getSampleSize
パラメータ:
band - 指定されたバンド
戻り値:
指定されたバンドのサンプルあたりのビット数

getOffset

public int getOffset(int x,
                     int y)
ピクセル (x, y) のデータ配列要素でのオフセットを返します。

戻り値:
指定されたピクセルのオフセット

getBitOffset

public int getBitOffset(int x)
走査線の x 番目のピクセルとして格納されているデータ要素のオフセットをビット数で返します。このオフセットは、すべての走査線で同じです。

パラメータ:
x - 指定されたピクセル
戻り値:
指定されたピクセルのビットオフセット

getScanlineStride

public int getScanlineStride()
走査線ストライドを返します。

戻り値:
この MultiPixelPackedSampleModel の走査線ストライド

getPixelBitStride

public int getPixelBitStride()
ピクセルビットストライドをビット数で返します。この値は、1 ピクセルあたりのビット数と同じです。

戻り値:
この MultiPixelPackedSampleModelpixelBitStride

getDataBitOffset

public int getDataBitOffset()
データビットオフセットをビット数で返します。

戻り値:
この MultiPixelPackedSampleModeldataBitOffset

getTransferType

public int getTransferType()
getDataElements メソッドと setDataElements メソッドによりピクセルを転送するために使う transferType を返します。TransferType は、ストレージデータ型と同じでも、異なっていてもかまいません。TransferType は、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のどれかになります。

オーバーライド:
クラス SampleModel 内の getTransferType
戻り値:
transferType
関連項目:
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.getNumDataElements(), DataBuffer

createSubsetSampleModel

public SampleModel createSubsetSampleModel(int[] bands)
この MultiPixelPackedSampleModel のバンドのサブセットを持つ新しい MultiPixelPackedSampleModel を作成します。MultiPixelPackedSampleModel はバンドを 1 つしか持たないので、bands 引数は長さ 1 でゼロ番目のバンドを示す必要があります。

定義:
クラス SampleModel 内の createSubsetSampleModel
パラメータ:
bands - 指定されたバンド
戻り値:
この MultiPixelPackedSampleModel のバンドのサブセットを持つ新しい SampleModel
例外:
RasterFormatException - 要求されたバンド数が 1 でない場合
IllegalArgumentException - w または h がゼロ以下の場合

getSample

public int getSample(int x,
                     int y,
                     int b,
                     DataBuffer data)
(x, y) に位置するピクセルの指定されたバンドのサンプルを int として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。

定義:
クラス SampleModel 内の getSample
パラメータ:
b - 返されるバンド (0 と見なされる)
data - イメージデータを格納する DataBuffer
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
戻り値:
指定されたピクセルのサンプルが格納されている、指定されたバンド
例外:
ArrayIndexOutOfBoundException - 指定された座標が境界内にない場合
関連項目:
setSample(int, int, int, int, DataBuffer)

setSample

public void setSample(int x,
                      int y,
                      int b,
                      int s,
                      DataBuffer data)
int を入力とし、DataBuffer の (x, y) に位置するピクセルの、指定されたバンドのサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。

定義:
クラス SampleModel 内の setSample
パラメータ:
b - 返されるバンド (0 と見なされる)
s - int の入力サンプル
data - イメージデータが格納される DataBuffer
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
例外:
ArrayIndexOutOfBoundsException - 座標が境界内にない場合
関連項目:
getSample(int, int, int, DataBuffer)

getDataElements

public Object getDataElements(int x,
                              int y,
                              Object obj,
                              DataBuffer data)
transferType 型のプリミティブ配列内にある 1 つのピクセルのデータを返します。MultiPixelPackedSampleModel の場合、配列は 1 つの要素を持ち、型は 1 つのピクセルを格納できる DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のうちの最小のものになります。一般に、objnull で渡されるので、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 組の DataBufferSampleModel ペア間の転送を行うには、getDataElements または setDataElements を使うのが適切です。

objnull でない場合は、transferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合や、objnull でなく、ピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException がスローされます。

定義:
クラス SampleModel 内の getDataElements
パラメータ:
obj - ピクセルデータを返すプリミティブ配列、または null
data - イメージデータを格納する DataBuffer
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
戻り値:
指定されたピクセルのデータが格納されている Object
例外:
ClassCastException - obj が TransferType 型のプリミティブ配列でなく、null でもない場合
ArrayIndexOutOfBoundsException - 座標が境界内にない場合、または objnull でないか、ピクセルデータを保持するに十分な大きさでないとき
関連項目:
setDataElements(int, int, Object, DataBuffer)

getPixel

public int[] getPixel(int x,
                      int y,
                      int[] iArray,
                      DataBuffer data)
int 配列の先頭要素の、指定された 1 つのバンドのピクセルを返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。

オーバーライド:
クラス SampleModel 内の getPixel
パラメータ:
iArray - 返されるピクセルが格納される配列、または null
data - イメージデータの格納先の DataBuffer
戻り値:
指定されたピクセルが格納されている配列
例外:
ArrayIndexOutOfBoundsException - 座標が境界内にない場合
関連項目:
setPixel(int, int, int[], DataBuffer)

setDataElements

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 組の DataBufferSampleModel ペア間で転送を行うには、getDataElements または setDataElements を使うのが適切です。

obj は、TransferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合や、obj がピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException がスローされます。

定義:
クラス SampleModel 内の setDataElements
パラメータ:
obj - ピクセルデータを格納するプリミティブ配列
data - イメージデータを格納する DataBuffer
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
関連項目:
getDataElements(int, int, Object, DataBuffer)

setPixel

public void setPixel(int x,
                     int y,
                     int[] iArray,
                     DataBuffer data)
int 配列を入力とし、DataBuffer のピクセルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。

オーバーライド:
クラス SampleModel 内の setPixel
パラメータ:
iArray - int 配列の入力ピクセル
data - イメージデータを格納する DataBuffer
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
関連項目:
getPixel(int, int, int[], DataBuffer)

equals

public boolean equals(Object o)
クラス Object の記述:
このオブジェクトと他のオブジェクトが等しいかどうかを示します。

equals メソッドは同値関係を実装します。

Object クラスの equals メソッドは、もっとも比較しやすいオブジェクトの同値関係を実装します。つまり、すべての参照値 xy について、このメソッドは xy が同じオブジェクトを参照する (x==ytrue) 場合にだけ true を返します。

通常、このメソッドをオーバーライドする場合は、hashCode メソッドを常にオーバーライドして、「等価なオブジェクトは等価なハッシュコードを保持する必要がある」という hashCode メソッドの汎用規約に従う必要があることに留意してください。

オーバーライド:
クラス Object 内の equals
パラメータ:
o - 比較対象の参照オブジェクト
戻り値:
obj 引数に指定されたオブジェクトとこのオブジェクトが等しい場合は true、そうでない場合は false
関連項目:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
クラス Object の記述:
オブジェクトのハッシュコード値を返します。このメソッドは、java.util.Hashtable によって提供されるようなハッシュテーブルで使用するために用意されています。

hashCode メソッドの一般的な規則を次に示します。

できる限り、Object クラスで定義される hashCode メソッドは、異なるオブジェクトについては異なる整数値を返します。通常、これはオブジェクトの内部アドレスを整数値に変換する形で実装されますが、そのような実装テクニックは JavaTM プログラミング言語では不要です。

オーバーライド:
クラス Object 内の hashCode
戻り値:
このオブジェクトのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

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.