これは、かつて「AviSynthのぺーじ」として公開されていたものの "残骸" です。ここに記されている内容には、間違いが含まれている可能性があります。より正確で新しい情報を知りたい場合は、AviSynth 付属のドキュメントや AviSynth 公式サイトを参考にすることをおすすめします。私(にーやん)が管理人をつとめる AviSynth Wiki も利用してください。また、このページは、予告なしに削除される可能性もあります。
ラッパー関数
 前回作成したEasyClipping関数では、実際には、関数内部でCropフィルタを実行していました。外見はEasyClipping関数ですが、中身はCropフィルタです。

 このように、中にフィルタを包む(Wrap)ような関数を、ラッパー関数(Wrapper Function)といいます。

 ラッパー関数は、設定する必要のないパラメータをオプション化するためにデフォルト値を埋め込んだり、プリセット(あらかじめ設定されたパラメータのサンプル)を使えるようにしたりします。

 詳しくは、AviSynth.orgのページを参考にしてください。
・Wrapper Function
http://www.avisynth.org/Wrapper

デフォルト値の設定
 上で述べたように、ラッパー関数では、自分なりのデフォルト値を埋め込むことが可能です。そこで、EasyClipping関数でも、デフォルト値を設定してみることにしましょう。

 例えば、xという引数(変数)のデフォルト値は、次のように記述して設定します。
x = default(x, y)
 これは、次の省略形(shorthand)です。
x = defined(x) ? x : y
 三項演算子が使われていますね。これは、「xと定義されたらx、そうでなければyを、xに代入する」ということを表しています。

 では、「default(x, y)」を使って、EasyClipping関数の引数rightのデフォルト値を設定してみましょう。
right = default(right, 8)
 このようになります。

 この場合、rightが定義(指定)されていればその値を、定義されていなければ8を、rightに代入することになります。
EasyClipping(0, 0, 8)
 例えば、EasyClipping関数を使うときに、このように記述したとします。このとき、rightは指定されていませんので、デフォルト値のright=8が使われます。
EasyClipping(0, 0, 8, 8)
 つまり、このように記述した場合と同じ結果になるというわけです。

 同様に、top, bottom, leftのデフォルト値も設定してみましょう。
function EasyClipping(clip clip, int top, int bottom, int left, int right )
{
#//--- デフォルト値の設定 ---//
top = default(top, 0)
bottom = default(bottom, 0)
left = default(left, 8)
right = default(right, 8)
#//--- widthheightを求める ---//
width = Width(clip) - (left + right)
height = Height(clip) - (top + bottom)
#//--- Cropフィルタ(書式1) ---//
clip = Crop(clip, left, top, width, height)
#//--- return文 ---//
return clip
}
 それぞれ、top=0, bottom=0, left=8, right=8をデフォルト値に設定してみました。
ColorBars(720, 480)
EasyClipping()
 ただし、この状態で上のスクリプトを実行すると、エラーが出てしまいます。
引数省略時にエラー
 「Invalid arguments to function "EasyClipping"(関数"EasyClipping"に不正な引数)」というエラーです。

 じつは、引数リストの書き方に原因があります。引数を省略した場合にデフォルト値を適用するためには、引数リストの書き方を変更しなければなりません。

 次回へつづく。

最終更新日 2004年8月4日
前のページ | 次のページ