プリセットを使った関数の例として、次のような関数を考えてみました。
[関数の概要]
|
以上のことをふまえて、まず、引数リストを考えます。
|
widthとheightは、直接、幅と高さを指定する時に使います。int型です。
presetは、プリセット用の引数です。SelectByStringフィルタの引数s(search string)に代入しますので、string型とします。
presetは、プリセット用の引数です。SelectByStringフィルタの引数s(search string)に代入しますので、string型とします。
次に、SelectByStringの書式に従って、プリセット部分を考えていきます。
SelectByString(string s, string key1, value1 [, string key2, value2 [, ...]] [, "else"]) |
SelectByStringの引数s(search string)には、上で述べたようにEasyResize関数の引数presetをあてはめます。
次に、「string key1, value1[, string key2, value2 [, ...]]」の部分を考えます。
keyNとvalueNは2つ1組で、埋め込みたいプリセットの分だけ設定します。keyNはプリセットの名前、valueNはフィルタの設定です。
SelectByStringでは、presetとkey1が一致すればvalue1を返し、presetとkey2が一致すればvalue2を返し・・・というように機能するんでしたね。
次に、「string key1, value1[, string key2, value2 [, ...]]」の部分を考えます。
keyNとvalueNは2つ1組で、埋め込みたいプリセットの分だけ設定します。keyNはプリセットの名前、valueNはフィルタの設定です。
SelectByStringでは、presetとkey1が一致すればvalue1を返し、presetとkey2が一致すればvalue2を返し・・・というように機能するんでしたね。
N | keyN | valueN | |
1 | "default" |
"LanczosResize(clip, width, height)" |
|
2 | "VGA" |
"LanczosResize(clip, 640, 480)" |
|
3 | "QVGA" |
"LanczosResize(clip, 320, 240)" |
|
4 | "VCD" |
"LanczosResize(clip, 352, 240)" |
|
5 | "SVCD" |
"LanczosResize(clip, 480, 480)" |
|
6 | "HalfD1" |
"LanczosResize(clip, 352, 480)" |
VGA、QVGA、VCD、SVCD、HalfD1の5つに、デフォルト(default)を加えた6つのプリセット案を考えました。
defaultは、他の5つのプリセットを使わない時用の設定です。
関数に次の一行を付け加えておくことで、preset省略時はpreset="default"を指定したのと同じになるようにすることができます。
defaultは、他の5つのプリセットを使わない時用の設定です。
関数に次の一行を付け加えておくことで、preset省略時はpreset="default"を指定したのと同じになるようにすることができます。
|
これで、presetを指定しなかった(省略した)場合に、preset="default"(key1)となり、widthとheightの値でリサイズ(value1)します。
このプリセット案を、SelectByStringの書式にあてはめて記述すると、次のようになります。
このプリセット案を、SelectByStringの書式にあてはめて記述すると、次のようになります。
|
最後のelseは、該当するプリセットがなかった場合に返す値の設定です(省略可)。
ここでは、""を返すように設定しました。これを利用して、タイプミスがあった場合に、エラーを返すようにします。
ここでは、""を返すように設定しました。これを利用して、タイプミスがあった場合に、エラーを返すようにします。
前のページ | 次のページ |