JavaTM 2 Platform
Std. Ed. v1.3

java.awt.image
クラス SinglePixelPackedSampleModel

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

public class SinglePixelPackedSampleModel
extends SampleModel

このクラスは、1 つのピクセルを構成する N 個のサンプルが 1 つのデータ配列要素に格納されるようにパックされたピクセルデータを表します。データ配列要素の各データは 1 つのピクセルだけのサンプルを保持します。このクラスは、TYPE_BYTETYPE_USHORTTYPE_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 を作成します。
 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 の走査線ストライドを返します。
 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, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

SinglePixelPackedSampleModel

public SinglePixelPackedSampleModel(int dataType,
                                    int w,
                                    int h,
                                    int[] bitMasks)
bitMasks.length のバンドを使って SinglePixelPackedSampleModel を構築します。各サンプルは、データ配列要素の対応するビットマスクの位置に格納されます。各ビットマスクは連続している必要があり、マスクはオーバーラップすることはできません。
パラメータ:
dataType - サンプルの格納のためのデータタイプ
w - 記述されたイメージデータの領域の幅 (ピクセル数)
h - 記述されたイメージデータの領域の高さ (ピクセル数)
bitMasks - すべてのバンドのビットマスク
例外:
IllegalArgumentException - dataType が、DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT のどれでもない場合

SinglePixelPackedSampleModel

public SinglePixelPackedSampleModel(int dataType,
                                    int w,
                                    int h,
                                    int scanlineStride,
                                    int[] bitMasks)
bitMasks.length のバンドおよび scanlineStride データ配列要素に等しい走査線ストライドを使って SinglePixelPackedSampleModel を構築します。各サンプルは、データ配列要素の対応するビットマスクの位置に格納されます。各ビットマスクは連続している必要があり、マスクはオーバーラップすることはできません。
パラメータ:
dataType - サンプルの格納のためのデータタイプ
w - 記述されるイメージデータの領域の幅 (ピクセル数)
h - 記述されるイメージデータの領域の高さ (ピクセル数)
scanlineStride - イメージデータの走査線ストライド
bitMasks - すべてのバンドのビットマスク
例外:
IllegalArgumentException - w または h が 0 以下の場合
IllegalArgumentException - bitMask のマスクが連続していない場合
IllegalArgumentException - dataType が、DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT のどれでもない場合
メソッドの詳細

getNumDataElements

public int getNumDataElements()
getDataElements メソッドおよび setDataElements メソッドを使って 1 ピクセル転送するのに必要なデータ要素の数を返します。SinglePixelPackedSampleModel の場合は 1 になります。
オーバーライド:
クラス SampleModel 内の getNumDataElements
クラス java.awt.image.SampleModel からコピーされたタグ:
関連項目:
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()

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
指定された幅と高さを使って新しい SinglePixelPackedSampleModel を作成します。新しい SinglePixelPackedSampleModel のストレージデータタイプとビットマスクは、この SinglePixelPackedSampleModel と同じになります。
オーバーライド:
クラス SampleModel 内の createCompatibleSampleModel
パラメータ:
w - 結果として返された SampleModel の幅
h - 結果として返された SampleModel の高さ
例外:
IllegalArgumentException - w または h が 0 以下の場合

createDataBuffer

public DataBuffer createDataBuffer()
この SinglePixelPackedSampleModel に対応する DataBuffer を作成します。DataBuffer のデータタイプとサイズはこの SinglePixelPackedSampleModel と一致します。DataBuffer は 1 つのバンクを持ちます。
オーバーライド:
クラス SampleModel 内の createDataBuffer

getSampleSize

public int[] getSampleSize()
すべてのバンドのサンプル当りのビット数を返します。
オーバーライド:
クラス SampleModel 内の getSampleSize

getSampleSize

public int getSampleSize(int band)
指定されたバンドのサンプル当りのビット数を返します。
オーバーライド:
クラス SampleModel 内の getSampleSize

getOffset

public int getOffset(int x,
                     int y)
ピクセル (x, y) のオフセット (データ配列要素内) を返します。ピクセル x,y が格納されているデータ要素は、次のように SinglePixelPackedSampleModel sppsm を使って DataBuffer data から取り出すことができます。
        data.getElem(sppsm.getOffset(x, y));
 

getBitOffsets

public int[] getBitOffsets()
すべてのバンドのピクセルを表すデータ配列要素にビットオフセットを返します。

getBitMasks

public int[] getBitMasks()
すべてのバンドのビットマスクを返します。

getScanlineStride

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

createSubsetSampleModel

public SampleModel createSubsetSampleModel(int[] bands)
この SinglePixelPackedSampleModel のバンドのサブセットを使って新しい SinglePixelPackedSampleModel を作成します。新しい SinglePixelPackedSampleModel は、既存の SinglePixelPackedSampleModel で使用可能な任意の DataBuffer とともに使用できます。新しい SinglePixelPackedSampleModel/DataBuffer の組み合わせは、元の SinglePixelPackedSampleModel/DataBuffer の組み合わせのバンドのサブセットを使ってイメージを表します。
オーバーライド:
クラス SampleModel 内の createSubsetSampleModel
例外:
RasterFormatException - bands 引数の長さがサンプルモデルのバンド数より大きい場合

getDataElements

public Object getDataElements(int x,
                              int y,
                              Object obj,
                              DataBuffer data)
transferType 型のプリミティブ配列内の 1 つのピクセルのデータを返します。SinglePixelPackedSampleModel の場合、配列は 1 つの要素を持ち、型はストレージデータタイプと同じになります。通常は、Object が自動的に作成され、正しい基本データ型になるように、obj には null が渡されます。

次のコードは、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

getPixel

public int[] getPixel(int x,
                      int y,
                      int[] iArray,
                      DataBuffer data)
int 配列の指定されたピクセルのすべてのサンプルを返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の getPixel
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
iArray - null でない場合、この配列内のサンプルを返す
data - イメージデータが格納されている DataBuffer

getPixels

public int[] getPixels(int x,
                       int y,
                       int w,
                       int h,
                       int[] iArray,
                       DataBuffer data)
int 配列の指定されたピクセルの矩形のすべてのサンプルを返します。配列要素ごとに 1 つのサンプルが返されます。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の getPixels
パラメータ:
x - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
iArray - null でない場合、この配列内のサンプルを返す
data - イメージデータが格納されている DataBuffer

getSample

public int getSample(int x,
                     int y,
                     int b,
                     DataBuffer data)
(x, y) に位置するピクセルの、指定されたバンド内のサンプルを int として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の getSample
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 返されるバンド
data - イメージデータが格納されている DataBuffer

getSamples

public int[] getSamples(int x,
                        int y,
                        int w,
                        int h,
                        int b,
                        int[] iArray,
                        DataBuffer data)
int 配列の指定されたピクセルの矩形の、指定されたバンドのサンプルを返します。配列要素ごとに 1 つのサンプルが返されます。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の getSamples
パラメータ:
x - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
b - 返されるバンド
iArray - null でない場合、この配列内のサンプルを返す
data - イメージデータが格納されている DataBuffer

setDataElements

public void setDataElements(int x,
                            int y,
                            Object obj,
                            DataBuffer data)
transferType 型のプリミティブ配列からの、指定した DataBuffer 内の 1 つのピクセルのデータを設定します。SinglePixelPackedSampleModel の場合、配列の最初の要素だけが有効なデータを保持し、配列の型は SinglePixelPackedSampleModel のストレージデータタイプと同じである必要があります。

次のコードは、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 - イメージデータが格納されている DataBuffer

setPixel

public void setPixel(int x,
                     int y,
                     int[] iArray,
                     DataBuffer data)
サンプルの int 配列を入力として使用して DataBuffer 内のピクセルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の setPixel
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
iArray - int 配列にある入力サンプル
data - イメージデータが格納されている DataBuffer

setPixels

public void setPixels(int x,
                      int y,
                      int w,
                      int h,
                      int[] iArray,
                      DataBuffer data)
配列要素ごとに 1 つのサンプルが格納されている int 配列から、ピクセルの矩形のすべてのサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の setPixels
パラメータ:
x - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
iArray - int 配列にある入力サンプル
data - イメージデータが格納されている DataBuffer

setSample

public void setSample(int x,
                      int y,
                      int b,
                      int s,
                      DataBuffer data)
int を入力として使用して DataBuffer 内の (x, y) に位置するピクセルの、指定したバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の setSample
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 設定されるバンド
s - int での入力サンプル
data - イメージデータが格納されている DataBuffer

setSamples

public void setSamples(int x,
                       int y,
                       int w,
                       int h,
                       int b,
                       int[] iArray,
                       DataBuffer data)
配列要素ごとに 1 つのサンプルが格納されている int 配列から、指定されたピクセルの矩形の指定されたバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス SampleModel 内の setSamples
パラメータ:
x - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
b - 設定されるバンド
iArray - int 配列にある入力サンプル
data - イメージデータが格納されている DataBuffer

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

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.