Layer.operateAffine

機能/意味

アフィン変換演算合成

タイプ
Layerクラスのメソッド
構文
operateAffine(src, sleft, stop, swidth, sheight, affine, A, B, C, D, E, F, mode=omAuto, opa=255, type=stNearest)
引数
src

重ね合わせ元のレイヤオブジェクトを指定します。
Bitmap クラスのオブジェクトも指定可能です。

sleft

重ね合わせる矩形の左端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。

stop

重ね合わせる矩形の上端位置を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。

swidth

重ね合わせる矩形の横幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。

sheight

重ね合わせる矩形の縦幅を ( 重ね合わせ元レイヤの画像位置における ) ピクセル単位で指定します。

affine

続く6つの引数 (A ~ F パラメータ)をどのように扱うかを指定します。
真を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。

  • A : 2Dアフィン変換行列の a
  • B : 2Dアフィン変換行列の b
  • C : 2Dアフィン変換行列の c
  • D : 2Dアフィン変換行列の d
  • E : 2Dアフィン変換行列の tx
  • F : 2Dアフィン変換行列の ty

アフィン変換により、重ね合わせ元の画像位置 (x, y) ( ただし、重ね合わせ元矩形の左上隅を (0, 0) とする ) は以下の式により、重ね合わせ先の画像位置 (x', y')に変換されます。
x' = ax + cy + tx
y' = bx + dy + ty
偽を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。

  • A : コピー元矩形の左上隅の点の、コピー先での画像位置における X 座標位置(x0)
  • B : コピー元矩形の左上隅の点の、コピー先での画像位置における Y 座標位置(y0)
  • C : コピー元矩形の右上隅の点の、コピー先での画像位置における X 座標位置(x1)
  • D : コピー元矩形の右上隅の点の、コピー先での画像位置における Y 座標位置(y1)
  • E : コピー元矩形の左下隅の点の、コピー先での画像位置における X 座標位置(x2)
  • F : コピー元矩形の左下隅の点の、コピー先での画像位置における Y 座標位置(y2)

偽を指定した場合、重ね合わせ元の右下隅に対応する、重ね合わせ先位置(x3, y3)は自動的に以下の式によって計算されます。
x3 = x1 - x0 + x2
y3 = y1 - y0 + y2

A

Aパラメータです。
affine 引数によって解釈が変わります。

B

Bパラメータです。
affine 引数によって解釈が変わります。

C

Cパラメータです。
affine 引数によって解釈が変わります。

D

Dパラメータです。
affine 引数によって解釈が変わります。

E

Eパラメータです。
affine 引数によって解釈が変わります。

F

Fパラメータです。
affine 引数によって解釈が変わります。

mode

演算のモードを指定します。

  • omAuto が指定された場合は演算元レイヤのLayer.typeプロパティに従って演算の種類が自動的に決定されます。
  • omPsNormal が指定された場合はPhotoshop互換のアルファ合成が行われます(現バージョンでは未実装です)。
  • omPsAdditive が指定された場合はPhotoshop互換の覆い焼き(リニア)合成が行われます(現バージョンでは未実装です)。
  • omPsSubtractive が指定された場合はPhotoshop互換の焼き込み(リニア)合成が行われます(現バージョンでは未実装です)。
  • omPsMultiplicative が指定された場合はPhotoshop互換の乗算合成が行われます(現バージョンでは未実装です)。
  • omPsScreen が指定された場合はPhotoshop互換のスクリーン合成が行われます(現バージョンでは未実装です)。
  • omPsOverlay が指定された場合はPhotoshop互換のオーバーレイ合成が行われます(現バージョンでは未実装です)。
  • omPsHardLight が指定された場合はPhotoshop互換のハードライト合成が行われます(現バージョンでは未実装です)。
  • omPsSoftLight が指定された場合はPhotoshop互換のソフトライト合成が行われます(現バージョンでは未実装です)。
  • omPsColorDodge が指定された場合はPhotoshop互換の覆い焼きカラー合成が行われます(現バージョンでは未実装です)。
  • omPsColorDodge5 が指定された場合はPhotoshopのバージョン5.x 以下と互換の覆い焼きカラー合成が行われます(現バージョンでは未実装です)。
  • omPsColorBurn が指定された場合はPhotoshop互換の焼き込みカラー合成が行われます(現バージョンでは未実装です)。
  • omPsLighten が指定された場合はPhotoshop互換の比較(明)合成が行われます(現バージョンでは未実装です)。
  • omPsDarken が指定された場合はPhotoshop互換の比較(暗)合成が行われます(現バージョンでは未実装です)。
  • omPsDifference が指定された場合はPhotoshop互換の差の絶対値合成が行われます(現バージョンでは未実装です)。
  • omPsDifference5 が指定された場合はPhotoshopのバージョン 5.x 以下と互換の差の絶対値合成が行われます(現バージョンでは未実装です)。
  • omPsExclusion が指定された場合はPhotoshop互換の除外合成が行われます(現バージョンでは未実装です)。
  • omAdditive が指定された場合は加算合成が行われます(現バージョンでは未実装です)。
  • omSubtractive が指定された場合は減算合成が行われます(現バージョンでは未実装です)。
  • omMultiplicative が指定された場合は乗算合成が行われます(現バージョンでは未実装です)。
  • omDodge が指定された場合は覆い焼き合成が行われます(現バージョンでは未実装です)。
  • omDarken が指定された場合は比較(暗)合成が行われます(現バージョンでは未実装です)。
  • omLighten が指定された場合は比較(明)合成が行われます(現バージョンでは未実装です)。
  • omScreen が指定された場合はスクリーン乗算合成が行われます(現バージョンでは未実装です)。
  • omAlpha が指定された場合はアルファ合成が行われます。
  • omAddAlpha が指定された場合は加算アルファ合成が行われます。この場合は、転送先の Layer.face プロパティが dfOpaque かつ Layer.holdAlpha プロパティが偽のとき、type 引数に stFastLinear を指定することにより線形補間が可能です。
  • omOpaque が指定された場合は src のアルファ情報は無視され、src は常に完全不透明であると見なされます。この場合は、転送先の Layer.face プロパティが dfOpaque かつ Layer.holdAlpha プロパティが偽のとき、type 引数に stFastLinear を指定することにより線形補間が可能です。
opa

重ね合わせの不透明度 ( 0 ~ 255 ) を指定します。

type

アフィン変換のタイプを指定します。

  • stNearest : 最近傍点法が用いられます
  • stFastLinear : 低精度の線形補間が用いられます(一部実装)
  • stLinear : 線形補間が用いられます(未実装)
  • stCubic : 3次元補間が用いられます(未実装)

速度は stNearest > stFastLinear > stLinear > stCubic の順に高速ですが、画質は速度が速ければ速いモードほど低画質になります。
stFastLinear や stLinear, stCubic に対しては、stRefNoClip をビット論理和で追加指定することができ、この場合は、コピーするビットマップの領域外を参照して色を合成することを許可します。
これを指定しない場合は、転送元ビットマップの周囲に余裕があったとしても、転送元ビットマップの範囲外を参照することはありません(範囲外の色はもっとも近い位置にある範囲内のピクセルの色と見なされます)。

戻り値
なし (void)
説明

指定された重ね合わせ元レイヤの矩形を、重ね合わせ先 ( メソッドを実行するレイヤ ) にアフィン変換を行いながら演算合成します。
アフィン変換については Layer.affineCopy も参照してください。
mode に omAuto を指定した場合は、演算元レイヤのLayer.typeプロパティに従って演算の種類が自動的に決定されます。