Java プラットフォーム 1.2

java.awt.image
クラス DirectColorModel

java.lang.Object
  |
  +--java.awt.image.ColorModel
        |
        +--java.awt.image.PackedColorModel
              |
              +--java.awt.image.DirectColorModel

public class DirectColorModel
extends PackedColorModel

RGB の色とアルファの情報を個別のサンプルとして表し、1 つのピクセルのすべてのサンプルを int、short、または byte 型の数で 1 つにパックするピクセル値を扱う抽象 ColorModel クラスです。このクラスは、ColorSpace.TYPE_RGB 型の ColorSpace とだけ一緒に使うことができます。ピクセル値には、カラーサンプルが 3 つ必要であるほかに、アルファサンプルが 1 つ含まれる場合もあります。transferType の型のプリミティブ配列のピクセル表現を使うメソッドでは、配列長は常に 1 です。カラーサンプルとアルファサンプルは、ビットマスクで示されるビット単位で配列の単一の要素に格納されます。ビットマスクはそれぞれ隣接している必要がありますが、オーバーラップしてはいけません。同じマスクが、ほかのメソッドによって使用される単一の int ピクセル表現に適用されます。以下に、マスクと、カラーサンプルとアルファサンプルの対応関係を示します。マスクは、アルファがなければ 0 〜 2 までのインデックスで識別され、アルファがあれば 3 までのインデックスで識別されます。最初の 3 つのインデックスはカラーサンプルを参照します。つまり、インデックス 0 は赤に、インデックス 1 は緑に、インデックス 2 は青に対応します。アルファサンプルが存在する場合、インデックス 3 がそれに対応します。サポートされる転送タイプは、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、および DataBuffer.TYPE_INT です。

表示または加工目的でピクセル値から色成分やアルファ成分に変換する際には、サンプルから成分への 1 対 1 対応になります。DirectColorModel は通常、パックされたサンプルを定義するのにマスクを使うイメージデータとともに使用されます。たとえば、DirectColorModel は SinglePixelPackedSampleModel と組み合わせて使用して BufferedImage を作成できます。通常、SampleModel と ColorModel が使うマスクは同じものです。ただし、そうしたマスクが異なる場合は、ピクセルデータの色解釈は ColorModel のマスクに従って処理されます。

このクラスで使うピクセル値は常に単一の int で表せるため、単一の int によるピクセル表現がこのクラスのすべてのオブジェクトで有効です。このため、この表現を使うメソッドは、ピクセル値が無効なときにも IllegalArgumentException をスローしません。

この ColorModel は X11 のトゥルーカラーに類似しています。ColorModel.getRGBdefault メソッドが指定するデフォルトの RGB ColorModel は、次のパラメータを持つ DirectColorModel です。

 Number of bits:        32
 Red mask:              0x00ff0000
 Green mask:            0x0000ff00
 Blue mask:             0x000000ff
 Alpha mask:            0xff000000
 Color space:           sRGB
 isAlphaPremultiplied:  False
 Transparency:          Transparency.TRANSLUCENT
 transferType:          DataBuffer.TYPE_INT
 

このクラスの多くのメソッドは、final です。この理由は、下層のネイティブなグラフィックスのコードがこのクラスの設計と操作に関する前提条件を課し、これらの前提条件がこのクラスで final になっているメソッドの実装に反映されているからです。ほかの理由でこのクラスをサブクラス化することはできますが、final なメソッドの動作をオーバーライドしたり、変更することはできません。

関連項目:
ColorModel, ColorSpace, SinglePixelPackedSampleModel, BufferedImage, ColorModel.getRGBdefault()

クラス java.awt.image.ColorModel から継承したフィールド
pixel_bits, transferType
 
コンストラクタの概要
DirectColorModel(ColorSpace space, int bits, int rmask, int gmask, int bmask, int amask, boolean isAlphaPremultiplied, int transferType)
          指定されたパラメータで DirectColorModel を構築します。
DirectColorModel(int bits, int rmask, int gmask, int bmask)
          指定されたマスクから、int ピクセル表現のどのビットが赤、緑、青のサンプルを保持するかを指定する DirectColorModel を構築します。
DirectColorModel(int bits, int rmask, int gmask, int bmask, int amask)
          指定されたマスクから DirectColorModel を構築します。
 
メソッドの概要
 ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
          変数 isAlphaPremultiplied で指定されている状態に Raster データを強制的に一致させます。
 WritableRaster createCompatibleWritableRaster(int w, int h)
          この ColorModel と互換性のあるデータレイアウト (SampleModel) を持つ WritableRaster を指定された幅と高さで作成します。
 int getAlpha(int pixel)
          指定されたピクセルのアルファ成分を、0 〜 255 の範囲でスケーリングして返します。
 int getAlpha(Object inData)
          指定されたピクセルのアルファ成分を、0 〜 255 の範囲でスケーリングして返します。
 int getAlphaMask()
          int ピクセル表現のどのビットがアルファ成分を格納しているかを示すマスクを返します。
 int getBlue(int pixel)
          指定されたピクセルの青の色成分を、デフォルトの RGB ColorSpace、つまり sRGB の 0 〜 255 の範囲でスケーリングして返します。
 int getBlue(Object inData)
          指定されたピクセルの青の色成分を、デフォルトの RGB ColorSpace、つまり sRGB の 0 〜 255 の範囲でスケーリングして返します。
 int getBlueMask()
          int ピクセル表現のどのビットが青の色成分を保持しているかを示すマスクを返します。
 int[] getComponents(int pixel, int[] components, int offset)
          この ColorModel のピクセルが指定されると、非正規化された色成分とアルファ成分の配列を返します。
 int[] getComponents(Object pixel, int[] components, int offset)
          この ColorModel のピクセルが指定されると、非正規化された色成分とアルファ成分の配列を返します。
 int getDataElement(int[] components, int offset)
          非正規化された色成分およびアルファ成分の配列が指定されると、ColorModel の中で int として表現されるピクセル値を返します。
 Object getDataElements(int[] components, int offset, Object obj)
          非正規化された色成分とアルファ成分の配列が指定されると、この ColorModel のピクセルのデータ要素配列表現を返します。
 Object getDataElements(int rgb, Object pixel)
          デフォルトの RGB カラーモデルの整数ピクセル表現が指定されると、この ColorModel のピクセルのデータ要素配列表現を返します。
 int getGreen(int pixel)
          指定されたピクセルの緑の色成分を、デフォルトの RGB ColorSpace、つまり sRGB の 0 〜 255 の範囲でスケーリングして返します。
 int getGreen(Object inData)
          指定されたピクセルの緑の色成分を、デフォルトの RGB ColorSpace、つまり sRGB の 0 〜 255 の範囲でスケーリングして返します。
 int getGreenMask()
          int ピクセル表現のどのビットが緑の色成分を保持しているかを示すマスクを返します。
 int getRed(int pixel)
          指定されたピクセルの赤の色成分を、デフォルトの RGB ColorSpace、つまり sRGB の 0 〜 255 の範囲でスケーリングして返します。
 int getRed(Object inData)
          指定されたピクセルの赤の色成分を、デフォルトの RGB ColorSpace、つまり sRGB の 0 〜 255 の範囲でスケーリングして返します。
 int getRedMask()
          int ピクセル表現のどのビットが赤の色成分を保持しているかを示すマスクを返します。
 int getRGB(int pixel)
          ピクセルの色成分とアルファ成分を、デフォルトの RGB カラーモデル形式で返します。
 int getRGB(Object inData)
          指定されたピクセルの色成分やアルファ成分を、デフォルトの RGB カラーモデル形式で返します。
 boolean isCompatibleRaster(Raster raster)
          ラスタがこの ColorModel と互換性がある場合は true、そうでない場合は false を返します。
 String toString()
          この DirectColorModel を表す String を返します。
 
クラス java.awt.image.PackedColorModel から継承したメソッド
createCompatibleSampleModel, equals, getAlphaRaster, getMask, getMasks, isCompatibleSampleModel
 
クラス java.awt.image.ColorModel から継承したメソッド
finalize, getColorSpace, getComponentSize, getComponentSize, getNormalizedComponents, getNumColorComponents, getNumComponents, getPixelSize, getRGBdefault, getTransparency, getUnnormalizedComponents, hasAlpha, isAlphaPremultiplied
 
クラス java.lang.Object から継承したメソッド
clone, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

DirectColorModel

public DirectColorModel(int bits,
                        int rmask,
                        int gmask,
                        int bmask)
指定されたマスクから、int ピクセル表現のどのビットが赤、緑、青のサンプルを保持するかを指定する DirectColorModel を構築します。ピクセル値はアルファ情報を格納しないので、すべてのピクセルは不透明 (アルファ = 1.0) として処理されます。各マスク内のすべてのビットは連続していて、int ピクセル表現の指定桁数の最下位ビットに収まらなければなりません。ColorSpace はデフォルトの sRGB 領域になります。透明度の値は Transparency.OPAQUE になります。転送タイプは、単一のピクセルを格納できる DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT の最小のものになります。

DirectColorModel

public DirectColorModel(int bits,
                        int rmask,
                        int gmask,
                        int bmask,
                        int amask)
指定されたマスクから DirectColorModel を構築します。このマスクは、int ピクセル表現のどのビットが赤、緑、青のカラーサンプルを保持するか、アルファサンプルがあればどのビットが保持するかを指定します。amask が 0 であれば、ピクセル値はアルファ情報を格納しないので、すべてのピクセルは不透明 (アルファ = 1.0) として処理されます。各マスク内のすべてのビットは連続していて、int ピクセル表現の指定桁数の最下位ビットに収まらなければなりません。アルファがあれば、あらかじめ乗算されることはありません。ColorSpace はデフォルトの sRGB 領域になります。透明度の値は、アルファが存在しない場合には Transparency.OPAQUE に、そうでない場合には Transparency.TRANSLUCENT になります。転送タイプは、単一のピクセルを格納できる DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT の最小のものになります。

DirectColorModel

public DirectColorModel(ColorSpace space,
                        int bits,
                        int rmask,
                        int gmask,
                        int bmask,
                        int amask,
                        boolean isAlphaPremultiplied,
                        int transferType)
指定されたパラメータで DirectColorModel を構築します。色成分は指定された ColorSpace に入り、型は ColorSpace.TYPE_RGB である必要があります。このマスクは、int ピクセル表現のどのビットが赤、緑、青のカラーサンプルを格納するか、アルファサンプルがあればどのビットが格納するかを指定します。amask が 0 であれば、ピクセル値はアルファ情報を格納しないので、すべてのピクセルは不透明 (アルファ = 1.0) として処理されます。各マスク内のすべてのビットは連続していて、int ピクセル表現の指定桁数の最下位ビットに収まる必要があります。アルファがあれば、boolean 型の isAlphaPremultiplied はピクセル値のカラーサンプルとアルファサンプルの解釈方法を指定します。boolean 型が true の場合、カラーサンプルはアルファサンプルで乗算済みと見なされます。透明度の値は、アルファが存在しない場合には Transparency.OPAQUE に、そうでない場合には Transparency.TRANSLUCENT になります。転送タイプは、ピクセル値を表現するのに使うプリミティブ配列の型で、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のうちの 1 つである必要があります。
メソッドの詳細

getRedMask

public final int getRedMask()
int ピクセル表現のどのビットが赤の色成分を保持しているかを示すマスクを返します。

getGreenMask

public final int getGreenMask()
int ピクセル表現のどのビットが緑の色成分を保持しているかを示すマスクを返します。

getBlueMask

public final int getBlueMask()
int ピクセル表現のどのビットが青の色成分を保持しているかを示すマスクを返します。

getAlphaMask

public final int getAlphaMask()
int ピクセル表現のどのビットがアルファ成分を格納しているかを示すマスクを返します。

getRed

public final int getRed(int pixel)
指定されたピクセルの赤の色成分を、デフォルトの RGB ColorSpace、つまり sRGB の 0 〜 255 の範囲でスケーリングして返します。必要に応じて、色変換が行われます。ピクセル値は int として指定されます。戻り値は、あらかじめ乗算された値にはなりません。つまり、アルファがあらかじめ乗算されている場合は、このメソッドが値を返す前にそれを除算します。アルファ値が 0 の場合、赤の値は 0 になります。
オーバーライド:
クラス ColorModel 内の getRed

getGreen

public final int getGreen(int pixel)
指定されたピクセルの緑の色成分を、デフォルトの RGB ColorSpace、つまり sRGB の 0 〜 255 の範囲でスケーリングして返します。必要に応じて、色変換が行われます。ピクセル値は int として指定されます。戻り値は、あらかじめ乗算された値にはなりません。つまり、アルファがあらかじめ乗算されている場合は、このメソッドが値を返す前にそれを除算します。アルファ値が 0 の場合、緑の値は 0 になります。
オーバーライド:
クラス ColorModel 内の getGreen

getBlue

public final int getBlue(int pixel)
指定されたピクセルの青の色成分を、デフォルトの RGB ColorSpace、つまり sRGB の 0 〜 255 の範囲でスケーリングして返します。必要に応じて、色変換が行われます。ピクセル値は int として指定されます。戻り値は、あらかじめ乗算された値にはなりません。つまり、アルファがあらかじめ乗算されている場合は、このメソッドが値を返す前にそれを除算します。アルファ値が 0 の場合、青の値は 0 になります。
オーバーライド:
クラス ColorModel 内の getBlue

getAlpha

public final int getAlpha(int pixel)
指定されたピクセルのアルファ成分を、0 〜 255 の範囲でスケーリングして返します。ピクセル値は int として指定されます。
オーバーライド:
クラス ColorModel 内の getAlpha

getRGB

public final int getRGB(int pixel)
ピクセルの色成分とアルファ成分を、デフォルトの RGB カラーモデル形式で返します。必要に応じて、色変換が行われます。ピクセル値は int として指定されます。戻り値は、あらかじめ乗算された形式にはなりません。すなわち、アルファがあらかじめ乗算されている場合は、このメソッドがアルファを色成分から除算します。アルファ値が 0 の場合、色の値は 0 になります。
オーバーライド:
クラス ColorModel 内の getRGB
関連項目:
ColorModel.getRGBdefault()

getRed

public int getRed(Object inData)
指定されたピクセルの赤の色成分を、デフォルトの RGB ColorSpace、つまり sRGB の 0 〜 255 の範囲でスケーリングして返します。必要に応じて、色変換が行われます。ピクセル値は、オブジェクト参照として渡される transferType 型のデータ要素の配列によって指定されます。戻り値は、あらかじめ乗算された値にはなりません。つまり、アルファがあらかじめ乗算されている場合は、このメソッドが値を返す前にアルファを除算します。アルファ値が 0 の場合、赤の値は 0 になります。inData が transferType 型のプリミティブ配列でない場合は、ClassCastException がスローされます。inData がこの ColorModel のピクセル値を格納できるほど大きくない場合は、ArrayIndexOutOfBoundsException がスローされます。
オーバーライド:
クラス ColorModel 内の getRed

getGreen

public int getGreen(Object inData)
指定されたピクセルの緑の色成分を、デフォルトの RGB ColorSpace、つまり sRGB の 0 〜 255 の範囲でスケーリングして返します。必要に応じて、色変換が行われます。ピクセル値は、オブジェクト参照として渡される transferType 型のデータ要素の配列によって指定されます。戻り値は、あらかじめ乗算された値にはなりません。つまり、アルファがあらかじめ乗算されている場合は、このメソッドが値を返す前にアルファを除算します。たとえば、アルファ値が 0 の場合、緑の値は 0 になります。inData が transferType 型のプリミティブ配列でない場合は、ClassCastException がスローされます。inData がこの ColorModel のピクセル値を格納できるほど大きくない場合は、ArrayIndexOutOfBoundsException がスローされます。
オーバーライド:
クラス ColorModel 内の getGreen

getBlue

public int getBlue(Object inData)
指定されたピクセルの青の色成分を、デフォルトの RGB ColorSpace、つまり sRGB の 0 〜 255 の範囲でスケーリングして返します。必要に応じて、色変換が行われます。ピクセル値は、オブジェクト参照として渡される transferType 型のデータ要素の配列によって指定されます。戻り値は、あらかじめ乗算された値にはなりません。つまり、アルファがあらかじめ乗算されている場合は、このメソッドが値を返す前にアルファを除算します。たとえば、アルファ値が 0 の場合、青の値は 0 になります。inData が transferType 型のプリミティブ配列でない場合は、ClassCastException がスローされます。inData がこの ColorModel のピクセル値を格納できるほど大きくない場合は、ArrayIndexOutOfBoundsException がスローされます。
オーバーライド:
クラス ColorModel 内の getBlue

getAlpha

public int getAlpha(Object inData)
指定されたピクセルのアルファ成分を、0 〜 255 の範囲でスケーリングして返します。ピクセル値は、オブジェクト参照として渡される transferType 型のデータ要素の配列によって指定されます。inData が transferType 型のプリミティブ配列でない場合は、ClassCastException がスローされます。inData がこの ColorModel のピクセル値を格納できるほど大きくない場合は、ArrayIndexOutOfBoundsException がスローされます。
オーバーライド:
クラス ColorModel 内の getAlpha

getRGB

public int getRGB(Object inData)
指定されたピクセルの色成分やアルファ成分を、デフォルトの RGB カラーモデル形式で返します。必要に応じて、色変換が行われます。ピクセル値は、オブジェクト参照として渡される transferType 型のデータ要素の配列によって指定されます。inData が transferType 型のプリミティブ配列でない場合は、ClassCastException がスローされます。inData がこの ColorModel のピクセル値を格納できるほど大きくない場合は、ArrayIndexOutOfBoundsException がスローされます。戻り値は、あらかじめ乗算された形式にはなりません。つまり、アルファがあらかじめ乗算されている場合は、このメソッドが色成分を返す前にアルファを除算します。たとえば、アルファ値が 0 の場合、色の値は 0 になります。
オーバーライド:
クラス ColorModel 内の getRGB
関連項目:
ColorModel.getRGBdefault()

getDataElements

public Object getDataElements(int rgb,
                              Object pixel)
デフォルトの RGB カラーモデルの整数ピクセル表現が指定されると、この ColorModel のピクセルのデータ要素配列表現を返します。これにより、この配列は WritableRaster オブジェクトの setDataElements メソッドに渡されます。pixel 変数が null の場合は、新しい配列が割り当てられます。pixel が null でない場合は、transferType 型のプリミティブ配列である必要があります。そうでない場合は、ClassCastException がスローされます。pixel がこのColorModel のピクセル値を格納できるほど大きくない場合は、ArrayIndexOutOfBoundsException がスローされます。ピクセル配列が返されます。
オーバーライド:
クラス ColorModel 内の getDataElements
関連項目:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

getComponents

public final int[] getComponents(int pixel,
                                 int[] components,
                                 int offset)
この ColorModel のピクセルが指定されると、非正規化された色成分とアルファ成分の配列を返します。ピクセル値は int として指定されます。components 配列が null の場合、新しい配列が割り当てられます。components 配列が返されます。色成分とアルファ成分は、offset から開始される components 配列に格納されます。これは、配列がこのメソッドで割り当てられても変わりません。components 配列が null でなく、色成分とアルファ成分 (offset から始まる) のすべてを格納できるほど大きくない場合は、ArrayIndexOutOfBoundsException がスローされます。
オーバーライド:
クラス ColorModel 内の getComponents

getComponents

public final int[] getComponents(Object pixel,
                                 int[] components,
                                 int offset)
この ColorModel のピクセルが指定されると、非正規化された色成分とアルファ成分の配列を返します。ピクセル値は、オブジェクト参照として渡される transferType 型のデータ要素の配列によって指定されます。pixel が transferType 型のプリミティブ配列でない場合は、ClassCastException がスローされます。pixel がこのColorModel のピクセル値を格納できるほど大きくない場合は、ArrayIndexOutOfBoundsException がスローされます。components 配列が null の場合は、新しい配列が割り当てられます。その components 配列が返されます。色成分とアルファ成分は、offset から開始される components 配列に格納されます。これは、配列がこのメソッドで割り当てられても変わりません。components 配列が null でなく、色成分とアルファ成分 (offset から始まる) のすべてを格納できるほど大きくない場合は、ArrayIndexOutOfBoundsException がスローされます。
オーバーライド:
クラス ColorModel 内の getComponents

createCompatibleWritableRaster

public final WritableRaster createCompatibleWritableRaster(int w,
                                                           int h)
この ColorModel と互換性のあるデータレイアウト (SampleModel) を持つ WritableRaster を指定された幅と高さで作成します。
オーバーライド:
クラス ColorModel 内の createCompatibleWritableRaster
関連項目:
WritableRaster, SampleModel

getDataElement

public int getDataElement(int[] components,
                          int offset)
非正規化された色成分およびアルファ成分の配列が指定されると、ColorModel の中で int として表現されるピクセル値を返します。成分の配列の大きさが十分でないために、components 配列が色成分とアルファ成分 (offset から始まる) のすべてを格納できるほど大きくない場合は、ArrayIndexOutOfBoundsException がスローされます。
オーバーライド:
クラス ColorModel 内の getDataElement

getDataElements

public Object getDataElements(int[] components,
                              int offset,
                              Object obj)
非正規化された色成分とアルファ成分の配列が指定されると、この ColorModel のピクセルのデータ要素配列表現を返します。これにより、この配列は WritableRaster オブジェクトの setDataElements メソッドに渡されます。components 配列が色成分とアルファ成分 (offset から始まる) のすべてを格納できるほど大きくない場合は、ArrayIndexOutOfBoundsException がスローされます。obj 変数が null の場合は、新しい配列が割り当てられます。obj が null でない場合は、transferType 型のプリミティブ配列である必要があります。そうでない場合は、ClassCastException がスローされます。obj がこのColorModel のピクセル値を格納できるほど大きくない場合は、ArrayIndexOutOfBoundsException がスローされます。
オーバーライド:
クラス ColorModel 内の getDataElements
関連項目:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

coerceData

public final ColorModel coerceData(WritableRaster raster,
                                   boolean isAlphaPremultiplied)
変数 isAlphaPremultiplied で指定されている状態に Raster データを強制的に一致させます。このとき、データは現在この ColorModel によって正しく記述されていると見なします。Raster のカラーデータをアルファで乗算または除算する場合もありますが、データが正しい状態であれば処理はありません。データを強制的に型変換する必要がある場合、このメソッドはこの ColorModel のインスタンスを、isAlphaPremultiplied フラグを適切に設定した状態で返します。
オーバーライド:
クラス ColorModel 内の coerceData

isCompatibleRaster

public boolean isCompatibleRaster(Raster raster)
ラスタがこの ColorModel と互換性がある場合は true、そうでない場合は false を返します。
オーバーライド:
クラス ColorModel 内の isCompatibleRaster

toString

public String toString()
この DirectColorModel を表す String を返します。
戻り値:
この DirectColorModel を表す String
オーバーライド:
クラス ColorModel 内の toString

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.