モジュール java.desktop
パッケージ java.awt.image

クラスDirectColorModel

java.lang.Object
すべての実装されたインタフェース:
Transparency

public class DirectColorModel extends PackedColorModel
DirectColorModelクラスは、RGBの色とアルファの情報を個別のサンプルとして表し、1つのピクセルのすべてのサンプルをint、short、またはbyte型の数で1つにパックするピクセル値を扱うColorModelクラスです。 このクラスは、ColorSpace.TYPE_RGB型のColorSpaceとだけ一緒に使うことができます。 さらに、ColorSpaceの各コンポーネントで、getMinValue()メソッドで取得される最小標準化成分値が0.0、getMaxValue()メソッドで取得される最大標準化成分値が1.0である必要があります。この最小値と最大値はRGB領域における典型的な値です。 ピクセル値には、カラー・サンプルが3つ必要であるほか、アルファ・サンプルを1つ含めることができます。 transferType型のプリミティブ配列のピクセル表現を使うメソッドでは、配列長は常に1です。 サポートされる転送タイプは、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、およびDataBuffer.TYPE_INTです。 カラー・サンプルとアルファ・サンプルは、ビット・マスクで示されるビット単位で配列の単一の要素に格納されます。 各ビット・マスクは連続している必要があり、複数のマスクをオーバーラップさせることはできません。 同じマスクが、ほかのメソッドによって使用される単一のintピクセル表現に適用されます。 次に、マスクと、カラー・サンプルとアルファ・サンプルの対応関係を示します。
  • マスクは、アルファがない場合は0 - 2までのインデックスで識別され、アルファがある場合は3までのインデックスで識別される
  • 最初の3つのインデックスはカラー・サンプルを参照する。インデックス0は赤に、インデックス1は緑に、インデックス2は青に対応する
  • アルファ・サンプルが存在する場合、インデックス3が対応する

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

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

X11のTrueColorと類似したカラー・モデルです。 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になっているメソッドの実装に反映されているからです。 他の理由でこのクラスをサブクラス化することはできますが、それらのメソッドの動作をオーバーライドしたり、変更することはできません。

関連項目: