JavaTM 2 Platform
Standard Ed. 5.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) のデータ配列要素でのオフセットを返します。

パラメータ:
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
戻り値:
転送型
関連項目:
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
パラメータ:
x, y - 指定されたピクセルの座標
b - 返されるバンド (0 と見なされる)
data - イメージデータを格納する DataBuffer
戻り値:
指定されたピクセルのサンプルが格納されている、指定されたバンド
例外:
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
パラメータ:
x, y - 指定されたピクセルの座標
b - 返されるバンド (0 と見なされる)
s - int の入力サンプル
data - イメージデータの格納先の DataBuffer
例外:
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
パラメータ:
x, y - ピクセル位置の座標
obj - ピクセルデータを返すプリミティブ配列、または null
data - イメージデータを格納する DataBuffer
戻り値:
指定されたピクセルのデータが格納されている 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
パラメータ:
x, y - ピクセル位置の座標
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
パラメータ:
x, y - ピクセル位置の座標
obj - ピクセルデータを格納するプリミティブ配列
data - イメージデータを格納する DataBuffer
関連項目:
getDataElements(int, int, Object, DataBuffer)

setPixel

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

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

equals

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

equals メソッドは、null 以外のオブジェクト参照での同値関係を実装します。

Object クラスの equals メソッドは、もっとも比較しやすいオブジェクトの同値関係を実装します。つまり、null 以外の参照値 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
Standard Ed. 5.0

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

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。