前回作成したEasyClipping関数では、実際には、関数内部でCropフィルタを実行していました。外見はEasyClipping関数ですが、中身はCropフィルタです。
このように、中にフィルタを包む(Wrap)ような関数を、ラッパー関数(Wrapper Function)といいます。
ラッパー関数は、設定する必要のないパラメータをオプション化するためにデフォルト値を埋め込んだり、プリセット(あらかじめ設定されたパラメータのサンプル)を使えるようにしたりします。
詳しくは、AviSynth.orgのページを参考にしてください。
このように、中にフィルタを包む(Wrap)ような関数を、ラッパー関数(Wrapper Function)といいます。
ラッパー関数は、設定する必要のないパラメータをオプション化するためにデフォルト値を埋め込んだり、プリセット(あらかじめ設定されたパラメータのサンプル)を使えるようにしたりします。
詳しくは、AviSynth.orgのページを参考にしてください。
・Wrapper Function →http://www.avisynth.org/Wrapper |
上で述べたように、ラッパー関数では、自分なりのデフォルト値を埋め込むことが可能です。そこで、EasyClipping関数でも、デフォルト値を設定してみることにしましょう。
例えば、xという引数(変数)のデフォルト値は、次のように記述して設定します。
例えば、xという引数(変数)のデフォルト値は、次のように記述して設定します。
x = default(x, y) |
これは、次の省略形(shorthand)です。
x = defined(x) ? x : y |
三項演算子が使われていますね。これは、「xと定義されたらx、そうでなければyを、xに代入する」ということを表しています。
では、「default(x, y)」を使って、EasyClipping関数の引数rightのデフォルト値を設定してみましょう。
では、「default(x, y)」を使って、EasyClipping関数の引数rightのデフォルト値を設定してみましょう。
right = default(right, 8) |
このようになります。
この場合、rightが定義(指定)されていればその値を、定義されていなければ8を、rightに代入することになります。
この場合、rightが定義(指定)されていればその値を、定義されていなければ8を、rightに代入することになります。
|
例えば、EasyClipping関数を使うときに、このように記述したとします。このとき、rightは指定されていませんので、デフォルト値のright=8が使われます。
|
つまり、このように記述した場合と同じ結果になるというわけです。
同様に、top, bottom, leftのデフォルト値も設定してみましょう。
同様に、top, bottom, leftのデフォルト値も設定してみましょう。
|
それぞれ、top=0, bottom=0, left=8, right=8をデフォルト値に設定してみました。
|
ただし、この状態で上のスクリプトを実行すると、エラーが出てしまいます。
「Invalid arguments to function "EasyClipping"(関数"EasyClipping"に不正な引数)」というエラーです。
じつは、引数リストの書き方に原因があります。引数を省略した場合にデフォルト値を適用するためには、引数リストの書き方を変更しなければなりません。
次回へつづく。
じつは、引数リストの書き方に原因があります。引数を省略した場合にデフォルト値を適用するためには、引数リストの書き方を変更しなければなりません。
次回へつづく。
前のページ | 次のページ |