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

クラスWritableRaster

java.lang.Object
java.awt.image.Raster
java.awt.image.WritableRaster

public class WritableRaster extends Raster
このクラスは、Rasterを拡張しピクセル書込み機能を提供します。 Rasterがどのようにピクセルを格納するかについては、Rasterのクラス・コメントを参照してください。

このクラスのコンストラクタはprotectedです。 WritableRasterのインスタンスを生成するには、RasterクラスのcreateWritableRasterファクトリ・メソッドのいずれかを使用します。

  • コンストラクタの詳細

    • WritableRaster

      protected WritableRaster(SampleModel sampleModel, Point origin)
      指定されたSampleModelを持つWritableRasterを構築します。 WritableRasterは左上隅が原点で、サイズはSampleModelと同じです。 WritableRasterを記述するために十分な大きさのDataBufferが自動的に生成されます。
      パラメータ:
      sampleModel - レイアウトを指定するSampleModel。
      origin - 原点を指定するPoint。
      例外:
      RasterFormatException - origin.x+sampleModel.getWidth()またはorigin.y+sampleModel.getHeight()のいずれかの計算で整数型オーバーフローが発生した場合
    • WritableRaster

      protected WritableRaster(SampleModel sampleModel, DataBuffer dataBuffer, Point origin)
      指定されたSampleModelおよびDataBufferを持つWritableRasterを構築します。 WritableRasterは左上隅が原点で、サイズはSampleModelと同じです。 DataBufferは初期化されておらず、SampleModelに準拠している必要があります。
      パラメータ:
      sampleModel - レイアウトを指定するSampleModel。
      dataBuffer - イメージ・データを格納するDataBuffer。
      origin - 原点を指定するPoint。
      例外:
      RasterFormatException - origin.x+sampleModel.getWidth()またはorigin.y+sampleModel.getHeight()のいずれかの計算で整数型オーバーフローが発生した場合
    • WritableRaster

      protected WritableRaster(SampleModel sampleModel, DataBuffer dataBuffer, Rectangle aRegion, Point sampleModelTranslate, WritableRaster parent)
      指定されたSampleModel、DataBuffer、および親を使ってWritableRasterを構築します。aRegionは新しいRasterの境界の矩形を指定します。 基底Rasterの座標系に変換されるとき、aRegionは基底Rasterによって包含されている必要があります。 基底RasterはRasterの上位オブジェクトであり、親を持ちません。sampleModelTranslateは新しいRasterのsampleModelTranslateX値およびsampleModelTranslateY値を指定します。 このコンストラクタは、通常、他のコンストラクタまたはcreateメソッドによって呼び出されます。直接には使用しないようにしてください。
      パラメータ:
      sampleModel - レイアウトを指定するSampleModel。
      dataBuffer - イメージ・データを格納するDataBuffer。
      aRegion - イメージ領域を指定するRectangle。
      sampleModelTranslate - SampleModelからRaster座標への変換を指定するPoint。
      parent - このラスターの親(存在する場合)。
      例外:
      RasterFormatException - aRegionの幅または高さがゼロ以下の場合、あるいはaRegion.x+aRegion.widthaRegion.y+aRegion.heightのいずれかの計算で整数型オーバーフローが発生した場合
  • メソッドの詳細

    • getWritableParent

      public WritableRaster getWritableParent()
      このWritableRasterの親のWritableRaster (存在する場合)、またはnullを返します。
      戻り値:
      このWritableRasterの親、またはnull
    • createWritableTranslatedChild

      public WritableRaster createWritableTranslatedChild(int childMinX, int childMinY)
      このWritableRasterと同じサイズ、SampleModel、およびDataBufferで、位置が異なるWritableRasterを生成します。 新しいWritableRasterは、getParent()メソッドおよびgetWritableParent()メソッドでアクセス可能な、現在のWritableRasterへの参照を持ちます。
      パラメータ:
      childMinX - 新しいRasterの左上隅のX座標。
      childMinY - 新しいRasterの左上隅のY座標。
      戻り値:
      指定された位置以外はこのWritableRasterと同じWritableRaster
      例外:
      RasterFormatException - childMinX+this.getWidth()またはchildMinY+this.getHeight()のいずれかの計算で整数型オーバーフローが発生した場合
    • createWritableChild

      public WritableRaster createWritableChild(int parentX, int parentY, int w, int h, int childMinX, int childMinY, int[] bandList)
      このWritableRasterのDataBufferの全部または一部を共有する新しいWritableRasterを返します。 新しいWritableRasterは、getParent()メソッドおよびgetWritableParent()メソッドでアクセス可能な、現在のWritableRasterへの参照を持ちます。

      このWritableRasterの座標空間に、parentX、parentY、width、heightの各パラメータによってRectangleが形成され、共有されるピクセル領域を示します。 このRectangleが現在のWritableRasterの境界内にない場合は、エラーがスローされます。

      新しいWritableRasterはさらに、同じ平面上で現在のWritableRasterが使用する座標体系とは異なる座標体系に変換できます。 childMinXパラメータとchildMinYパラメータにより、返されたWritableRasterの左上隅にあるピクセルの新しい座標(x, y)が指定されます。新しいWritableRaster内の座標(childMinX, childMinY)は、現在のWritableRaster内の座標(parentX, parentY)と同じピクセルにマップされます。

      bandListパラメータを使用して、現在のWritableRasterのバンドのサブセットだけを、場合によっては順序を変更して格納する新しいWritableRasterを定義できます。 bandListがnullの場合は、現在のWritableRasterのすべてのバンドが現在と同じ順序で格納されます。

      現在のWritableRasterの一部の領域を含み、座標系とバンドを共有する新しいWritableRasterを生成するには、childMinXをparentXと同じ値に、childMinYをparentYと同じ値に、bandListをnullにそれぞれ指定して、このメソッドを呼び出します。

      パラメータ:
      parentX - このWritableRasterの座標での左上隅のX座標。
      parentY - このWritableRasterの座標での左上隅のY座標。
      w - (parentX, parentY)から始まる領域の幅。
      h - (parentX, parentY)から始まる領域の高さ。
      childMinX - 返されるWritableRasterの左上隅のX座標。
      childMinY - 返されるWritableRasterの左上隅のY座標。
      bandList - バンド・インデックスの配列。すべてのバンドを使用する場合はnull。
      戻り値:
      このWritableRasterのすべて、または一部のDataBufferを共有するWritableRaster
      例外:
      RasterFormatException - 部分領域がラスターの境界の外側にある場合。
      RasterFormatException - wまたはhが0以下の場合、またはparentX+wparentY+hchildMinX+wchildMinY+hのいずれかの計算で整数型オーバーフローが発生した場合
    • setDataElements

      public void setDataElements(int x, int y, Object inData)
      1つのピクセルのデータをtransferType型のプリミティブ配列から設定します。 Java 2D(tm) APIによってサポートされているイメージ・データの場合は、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT、DataBuffer.TYPE_SHORT、DataBuffer.TYPE_FLOAT、またはDataBuffer.TYPE_DOUBLEのいずれかになります。 配列内のデータはパックされた形式で返されることもあり、その場合、データ転送の効率が上がります。 座標が境界内にない場合、またはinDataがピクセル・データを格納するために十分な大きさでない場合、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。 入力オブジェクトがnullでなく、TransferTypeの配列以外のものを参照する場合、ClassCastExceptionがスローされます。
      パラメータ:
      x - ピクセル位置のX座標。
      y - ピクセル位置のY座標。
      inData - getTransferType()によって定義された型とgetNumDataElements()によって定義された長さを持ち、x,yに配置するピクセル・データを格納する配列へのオブジェクト参照。
      例外:
      ArrayIndexOutOfBoundsException - 座標が境界内に存在しない場合、またはinDataが小さすぎて入力を保持できない場合。
      関連項目:
    • setDataElements

      public void setDataElements(int x, int y, Raster inRaster)
      ピクセルの矩形のデータを入力Rasterから設定します。 入力RasterはこのWritableRasterに準拠している必要があります。つまり、同じ数のバンドを持ち、対応するバンドのサンプルありのビット数が同じで、TransferTypeおよびNumDataElementsも同じで、さらに、getDataElements/setDataElementsによって使用されるパック方式が同じである必要があります。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - ピクセル位置のX座標。
      y - ピクセル位置のY座標。
      inRaster - x,yに配置するデータが格納されているRaster。
      例外:
      NullPointerException - inRasterがnullの場合。
      ArrayIndexOutOfBoundsException - 座標が範囲外にある場合。
    • setDataElements

      public void setDataElements(int x, int y, int w, int h, Object inData)
      ピクセル矩形のデータをTransferType型のプリミティブ配列から設定します。 Java 2D APIによってサポートされているイメージ・データの場合は、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT、DataBuffer.TYPE_SHORT、DataBuffer.TYPE_FLOAT、またはDataBuffer.TYPE_DOUBLEのいずれかになります。 配列内のデータはパックされた形式で返されることもあり、その場合、データ転送の効率が上がります。 座標が境界内にない場合、またはinDataがピクセル・データを格納するために十分な大きさでない場合、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。 入力オブジェクトがnullでなく、TransferTypeの配列以外のものを参照する場合、ClassCastExceptionがスローされます。
      パラメータ:
      x - 左上のピクセル位置のX座標。
      y - 左上のピクセル位置のY座標。
      w - ピクセル矩形の幅。
      h - ピクセル矩形の高さ。
      inData - getTransferType()によって定義された型を持ち、長さがw*h*getNumDataElements()で、x,yとx+w-1, y+h-1の間に配置するピクセル・データが格納されている配列へのオブジェクト参照。
      例外:
      NullPointerException - inDataがnullの場合。
      ArrayIndexOutOfBoundsException - 座標が境界内に存在しない場合、またはinDataが小さすぎて入力を保持できない場合。
      関連項目:
    • setRect

      public void setRect(Raster srcRaster)
      このWritableRasterにRaster srcRasterからピクセルをコピーします。 アドレスがこのラスターの境界外になる場合を除いて、srcRaster内の各ピクセルは、このRaster内の同じx,yアドレスにコピーされます。srcRasterはこのWritableRasterと同じ数のバンドを持つ必要があります。 対応する転送先サンプルに、転送元サンプルが単純にコピーされます。

      転送元および転送先のRasterのすべてのサンプルが整数型で、サイズが32ビット以下の場合、このメソッドの呼出しは、両方のRasterで有効なすべてのx,yアドレスで次のコードを実行するのと同じ結果になります。

      
             Raster srcRaster;
             WritableRaster dstRaster;
             for (int b = 0; b < srcRaster.getNumBands(); b++) {
                 dstRaster.setSample(x, y, b, srcRaster.getSample(x, y, b));
             }
       
      整数型の転送元から整数型の転送先にコピーが実行される場合、転送元サンプルのサイズが転送先サンプルのサイズより大きいバンドがあると、転送元サンプルの上位ビットが切り捨てられます。 転送元サンプルのサイズが転送先サンプルのサイズより小さいバンドがあると、転送先サンプルの上位ビットには、srcRasterのSampleModelがサンプルを符号付きの数量として扱うときは符号が設定され、符号なしの数量として扱うときはゼロが設定されます。

      floatまたはdoubleの転送元から整数型の転送先にコピーが実行される場合、転送元サンプルが転送先の型にキャストされます。 整数型の転送元からfloatまたはdoubleの転送先にコピーされる場合、必要に応じて、上記の整数型に関するルールに基づき転送元が最初に32ビットの整数型に変換され、floatまたはdoubleにキャストされます。

      パラメータ:
      srcRaster - ピクセルのコピー元のRaster。
      例外:
      NullPointerException - srcRasterがnullの場合。
    • setRect

      public void setRect(int dx, int dy, Raster srcRaster)
      このWritableRasterにRaster srcRasterからピクセルをコピーします。 (x+dx, y+dy)がこのラスターの境界外になる場合を除いて、srcRaster内の各アドレス(x, y)について、対応するピクセルがこのWritableRaster内のアドレス(x+dx, y+dy)にコピーされます。srcRasterはこのWritableRasterと同じ数のバンドを持つ必要があります。 対応する転送先サンプルに、転送元サンプルが単純にコピーされます。 詳細は、setRect(Raster)を参照してください。
      パラメータ:
      dx - コピーのsrc空間からdst空間へのXの変換係数。
      dy - コピーのsrc空間からdst空間へのYの変換係数。
      srcRaster - ピクセルのコピー元のRaster。
      例外:
      NullPointerException - srcRasterがnullの場合。
    • setPixel

      public void setPixel(int x, int y, int[] iArray)
      サンプルのint配列を入力として使ってDataBuffer内のピクセルを設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - ピクセル位置のX座標。
      y - ピクセル位置のY座標。
      iArray - int配列の入力サンプル。
      例外:
      NullPointerException - iArrayがnullの場合。
      ArrayIndexOutOfBoundsException - 座標が境界内に存在しない場合、またはiArrayが小さすぎて入力を保持できない場合。
    • setPixel

      public void setPixel(int x, int y, float[] fArray)
      サンプルのfloat配列を入力として使ってDataBuffer内のピクセルを設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - ピクセル位置のX座標。
      y - ピクセル位置のY座標。
      fArray - float配列の入力サンプル。
      例外:
      NullPointerException - fArrayがnullの場合。
      ArrayIndexOutOfBoundsException - 座標が境界内に存在しない場合、またはfArrayが小さすぎて入力を保持できない場合。
    • setPixel

      public void setPixel(int x, int y, double[] dArray)
      サンプルのdouble配列を入力として、DataBuffer内のピクセルを設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - ピクセル位置のX座標。
      y - ピクセル位置のY座標。
      dArray - double配列の入力サンプル。
      例外:
      NullPointerException - dArrayがnullの場合。
      ArrayIndexOutOfBoundsException - 座標が境界内に存在しない場合、またはdArrayが小さすぎて入力を保持できない場合。
    • setPixels

      public void setPixels(int x, int y, int w, int h, int[] iArray)
      矩形のピクセルのサンプルすべてを、配列要素ごとに1つのサンプルが格納されているint配列から設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - 左上のピクセル位置のX座標。
      y - 左上のピクセル位置のY座標。
      w - ピクセル矩形の幅。
      h - ピクセル矩形の高さ。
      iArray - 入力intピクセル配列。
      例外:
      NullPointerException - iArrayがnullの場合。
      ArrayIndexOutOfBoundsException - 座標が境界内に存在しない場合、またはiArrayが小さすぎて入力を保持できない場合。
    • setPixels

      public void setPixels(int x, int y, int w, int h, float[] fArray)
      矩形のピクセルのサンプルすべてを、配列要素ごとに1つのサンプルが格納されているfloat配列から設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - 左上のピクセル位置のX座標。
      y - 左上のピクセル位置のY座標。
      w - ピクセル矩形の幅。
      h - ピクセル矩形の高さ。
      fArray - 入力floatピクセル配列。
      例外:
      NullPointerException - fArrayがnullの場合。
      ArrayIndexOutOfBoundsException - 座標が境界内に存在しない場合、またはfArrayが小さすぎて入力を保持できない場合。
    • setPixels

      public void setPixels(int x, int y, int w, int h, double[] dArray)
      矩形のピクセルのサンプルすべてを、配列要素ごとに1つのサンプルが格納されているdouble配列から設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - 左上のピクセル位置のX座標。
      y - 左上のピクセル位置のY座標。
      w - ピクセル矩形の幅。
      h - ピクセル矩形の高さ。
      dArray - 入力doubleピクセル配列。
      例外:
      NullPointerException - dArrayがnullの場合。
      ArrayIndexOutOfBoundsException - 座標が境界内に存在しない場合、またはdArrayが小さすぎて入力を保持できない場合。
    • setSample

      public void setSample(int x, int y, int b, int s)
      intを入力とし、DataBufferの(x,y)に位置するピクセルの、指定されたバンドのサンプルを設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - ピクセル位置のX座標。
      y - ピクセル位置のY座標。
      b - 設定されるバンド。
      s - 入力サンプル。
      例外:
      ArrayIndexOutOfBoundsException - 座標またはバンド・インデックスが境界内にない場合。
    • setSample

      public void setSample(int x, int y, int b, float s)
      floatを入力として使用し、DataBuffer内の(x, y)に位置するピクセルの、指定されたバンド内のサンプルを設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - ピクセル位置のX座標。
      y - ピクセル位置のY座標。
      b - 設定されるバンド。
      s - floatでの入力サンプル。
      例外:
      ArrayIndexOutOfBoundsException - 座標またはバンド・インデックスが境界内にない場合。
    • setSample

      public void setSample(int x, int y, int b, double s)
      doubleを入力として使用し、DataBuffer内の(x, y)に位置するピクセルの、指定されたバンド内のサンプルを設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - ピクセル位置のX座標。
      y - ピクセル位置のY座標。
      b - 設定されるバンド。
      s - doubleでの入力サンプル。
      例外:
      ArrayIndexOutOfBoundsException - 座標またはバンド・インデックスが境界内にない場合。
    • setSamples

      public void setSamples(int x, int y, int w, int h, int b, int[] iArray)
      指定された矩形ピクセルの指定されたバンドのサンプルを、配列要素ごとに1つのサンプルが格納されているint配列から設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - 左上のピクセル位置のX座標。
      y - 左上のピクセル位置のY座標。
      w - ピクセル矩形の幅。
      h - ピクセル矩形の高さ。
      b - 設定されるバンド。
      iArray - 入力intのサンプル配列。
      例外:
      NullPointerException - iArrayがnullの場合。
      ArrayIndexOutOfBoundsException - 座標またはバンド・インデックスが境界内に存在しない場合、またはiArrayが小さすぎて入力を保持できない場合。
    • setSamples

      public void setSamples(int x, int y, int w, int h, int b, float[] fArray)
      指定された矩形ピクセルの指定されたバンドのサンプルを、配列要素ごとに1つのサンプルが格納されているfloat配列から設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - 左上のピクセル位置のX座標。
      y - 左上のピクセル位置のY座標。
      w - ピクセル矩形の幅。
      h - ピクセル矩形の高さ。
      b - 設定されるバンド。
      fArray - 入力floatサンプル配列。
      例外:
      NullPointerException - fArrayがnullの場合。
      ArrayIndexOutOfBoundsException - 座標またはバンド・インデックスが境界内に存在しない場合、またはfArrayが小さすぎて入力を保持できない場合。
    • setSamples

      public void setSamples(int x, int y, int w, int h, int b, double[] dArray)
      指定された矩形ピクセルの指定されたバンドのサンプルを、配列要素ごとに1つのサンプルが格納されているdouble配列から設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 ただし、明示的な境界チェックは必ずしも実行されません。
      パラメータ:
      x - 左上のピクセル位置のX座標。
      y - 左上のピクセル位置のY座標。
      w - ピクセル矩形の幅。
      h - ピクセル矩形の高さ。
      b - 設定されるバンド。
      dArray - 入力doubleサンプル配列。
      例外:
      NullPointerException - dArrayがnullの場合。
      ArrayIndexOutOfBoundsException - 座標またはバンド・インデックスが境界内に存在しない場合、またはdArrayが小さすぎて入力を保持できない場合。