JavaTM 2 Platform
Standard Ed. 5.0

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 を作成します。
 boolean equals(Object o)
          このオブジェクトとほかのオブジェクトが等しいかどうかを示します。
 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 の走査線ストライドを返します。
 int hashCode()
          オブジェクトのハッシュコード値を返します。
 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, finalize, getClass, 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_USHORT、または DataBuffer.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 がゼロ以下の場合
IllegalArgumentException - bitMask のマスクが連続していない場合
IllegalArgumentException - dataType が、DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のどれでもない場合
メソッドの詳細

getNumDataElements

public int getNumDataElements()
getDataElements メソッドおよび setDataElements メソッドを使って 1 ピクセル転送するのに必要なデータ要素の数を返します。SinglePixelPackedSampleModel の場合は 1 になります。

定義:
クラス SampleModel 内の getNumDataElements

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
指定された幅と高さを使って新しい SinglePixelPackedSampleModel を作成します。新しい SinglePixelPackedSampleModel のストレージデータ型とビットマスクは、この SinglePixelPackedSampleModel と同じになります。

定義:
クラス SampleModel 内の createCompatibleSampleModel
パラメータ:
w - 結果として返された SampleModel の幅
h - 結果として返された SampleModel の高さ
戻り値:
指定された幅と高さを持つ SinglePixelPackedSampleModel オブジェクト
例外:
IllegalArgumentException - w または h がゼロ以下の場合

createDataBuffer

public DataBuffer createDataBuffer()
この SinglePixelPackedSampleModel に対応する DataBuffer を生成します。DataBuffer のデータ型とサイズはこの SinglePixelPackedSampleModel と一致します。DataBuffer は 1 つのバンクを持ちます。

定義:
クラス SampleModel 内の createDataBuffer
戻り値:
この SampleModel に対応する DataBuffer

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));
 

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

getBitOffsets

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


getBitMasks

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


getScanlineStride

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


createSubsetSampleModel

public SampleModel createSubsetSampleModel(int[] bands)
この SinglePixelPackedSampleModel のバンドのサブセットを使って新しい SinglePixelPackedSampleModel を作成します。新しい SinglePixelPackedSampleModel は、既存の SinglePixelPackedSampleModel で使用可能な任意の DataBuffer とともに使用できます。SinglePixelPackedSampleModel と DataBuffer の新しい組み合わせは、元の組み合わせのバンドのサブセットを使ってイメージを表します。

定義:
クラス SampleModel 内の createSubsetSampleModel
パラメータ:
bands - この SampleModel のバンドのサブセット
戻り値:
この SampleModel のバンドのサブセットを持つ SampleModel
例外:
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
戻り値:
指定されたピクセルのデータ
関連項目:
setDataElements(int, int, Object, 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
戻り値:
指定されたピクセルのすべてのサンプル
関連項目:
setPixel(int, int, int[], 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
戻り値:
指定されたピクセル領域のサンプル
関連項目:
setPixels(int, int, int, int, int[], 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
戻り値:
指定されたピクセルに対する指定されたバンドのサンプル
関連項目:
setSample(int, int, int, int, 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
戻り値:
指定されたピクセル領域の指定されたバンドのサンプル
関連項目:
setSamples(int, int, int, int, int, int[], 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
関連項目:
getDataElements(int, int, Object, 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
関連項目:
getPixel(int, int, int[], 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
関連項目:
getPixels(int, 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 - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 設定されるバンド
s - int の入力サンプル
data - イメージデータを格納する DataBuffer
関連項目:
getSample(int, int, int, 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
関連項目:
getSamples(int, int, int, 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 も参照してください。