ch.kuramo.javie.api.services
インタフェース IBlendSupport


public interface IBlendSupport

描画モードを用いた合成処理を支援するサービスです。 このサービスはシングルトンではないため、インジェクトするごとに新しいインスタンスが生成されます。

replace(BlendMode, IShaderProgram) メソッドや setProgramsClass(Class) メソッドによって 描画モードの実装を変更することができます。例えば、フラクタルノイズエフェクトは色相と彩度の実装を独自のものに置き換えています。


メソッドの概要
 IVideoBuffer blend(IVideoBuffer src, IVideoBuffer dstIn, IVideoBuffer dstOut, BlendMode blendMode, double opacity)
           
 IVideoBuffer blend(IVideoBuffer src, IVideoBuffer dstIn, IVideoBuffer dstOut, BlendMode blendMode, double opacity, IVideoEffectContext context)
           blendMode で指定した描画モードを用いて dstIn の上に src を合成し、dstOut に結果を出力します。
 IVideoBuffer dissolve(IVideoBuffer src, IVideoBuffer dstIn, IVideoBuffer dstOut, double opacity, double seed)
           
 java.lang.Class<?> getUnmultSrcClass()
          ソースバッファがストレートアルファである場合の、描画モードの実装を取得します。
 void replace(BlendMode blendMode, IShaderProgram program)
          blendMode で指定した描画モードの実装を、 program のシェーダプログラムに置き換えます。
 void setProgramsClass(java.lang.Class<?> programsClass)
          描画モードの実装を programsClass のクラスが持つものに全て置き換えます。
 

メソッドの詳細

getUnmultSrcClass

java.lang.Class<?> getUnmultSrcClass()
ソースバッファがストレートアルファである場合の、描画モードの実装を取得します。

戻り値:
描画モードの実装を持つクラスオブジェクト

setProgramsClass

void setProgramsClass(java.lang.Class<?> programsClass)
描画モードの実装を programsClass のクラスが持つものに全て置き換えます。 programsClass のクラス内で、BlendMode.DANCING_DISSOLVE を除くすべての描画モードに対してシェーダプログラムが定義されている必要があります。

パラメータ:
programsClass - 描画モードの実装をもつクラスオブジェクト

replace

void replace(BlendMode blendMode,
             IShaderProgram program)
blendMode で指定した描画モードの実装を、 program のシェーダプログラムに置き換えます。

パラメータ:
blendMode - 実装を置き換える描画モード
program - 描画モードのシェーダプログラム

blend

IVideoBuffer blend(IVideoBuffer src,
                   IVideoBuffer dstIn,
                   IVideoBuffer dstOut,
                   BlendMode blendMode,
                   double opacity,
                   IVideoEffectContext context)

blendMode で指定した描画モードを用いて dstIn の上に src を合成し、dstOut に結果を出力します。 opacitysrc の不透明度を指定することができます。

dstOutnull を指定した場合、dstIn と同じ位置とサイズで出力バッファが作成され、戻り値に返されます。

blendModeBlendMode.DISSOLVE または BlendMode.DANCING_DISSOLVE の場合、実行中のエフェクトのコンテキストを 引数 context に与える必要があります。これは、コンテキストから乱数のシードを決定するためです。 シードを明示的に指定する場合は dissolve(IVideoBuffer, IVideoBuffer, IVideoBuffer, double, double) メソッドを使用してください。

パラメータ:
src - 上になる画像
dstIn - 下になる画像
dstOut - 合成の結果を出力するバッファ
blendMode - 合成に用いる描画モード
opacity - src の不透明度
context - 実行中のエフェクトのコンテキスト
戻り値:
dstOutnull の場合は新たに作成されたバッファ、そうでない場合は dstOut

blend

IVideoBuffer blend(IVideoBuffer src,
                   IVideoBuffer dstIn,
                   IVideoBuffer dstOut,
                   BlendMode blendMode,
                   double opacity)

dissolve

IVideoBuffer dissolve(IVideoBuffer src,
                      IVideoBuffer dstIn,
                      IVideoBuffer dstOut,
                      double opacity,
                      double seed)