2016年1月28日木曜日

GIMP Script-Fu (8) 雛形とは ちょっと 外れるもの

以前、 GIMP Script-Fu (2) 雛形と進め方 と言う投稿をしました。
大抵の スクリプト は この形 が お勧め です。  ヘルプやマニュアルで ご覧 の様に、です。
でも、実際には、 別の形の Script-Fu が在る事も事実です。
謂わば、 ライブラリ と呼んで良い 形 の Script-Fu ですね。


関数型 もしくは 手続き型 の言語で書かれる Script-Fu は、
関数 として 処理を定義し、 PDB と呼ばれる GIMP 本体 (< 感覚的な表現です。) に登録します。
(define ... ) が定義で、 (script-fu-register ... ) が登録 でしたね。


では、 ここで、 (script-fu-register ... ) そう、 登録 を記述していないファイルを 既定の場所に 配置 すると、 どうなるでしょうか?。

勿論、ユーザーが指定する パラメータ は、 選択用の画面が表示出来ないので、 実行は無理ですね。
そして、 プロシージャブラウザ にも 保存した筈 の 関数 は表示されません。

仮に、 この関数名が script-fu-test-my1 としましょうか。  引数(パラメータ)は数字ひとつ とします。
Script-Fu コンソール を 立ち上げ、 (script-fu-test-my1 10) と してみると ... 。

恐らく、実行が出来る筈です。


そうです。
Scripts フォルダに投げ入れられた 正常な 関数 は、 登録をしなくても 認識 はされているのです。


通常のプロシージャ検索では Hit しませんが、 ちゃんと、動く筈です。
逆を考えれば、 Script-Fu を書く場合には、名称の衝突に注意しないと いけない! と言う事でもあります。


もし、 メニューに表示させないが、 プロシージャブラウザ では表示したい! となれば、
(script-fu-register ... ) で ふたつ目の 引数を
    "<Image>/Script-Fu/Test/my1"    ;menu label 等と書かずに、 *1.

  "my1"    ;menu label 等と書かずに、
   "my1 Is My Registed Procedure"    ;menu label  等と書いて置けば、 (メニューに無い語句で書き出す)
目的は達成出来る筈です。  ... (?) *1.


どう言う事か?、 と言えば。
通常の記述で長くなって分り辛い部分や、 各種の自作スクリプトから呼び出すものを、 この様に予め定義して置く 方法に繋がります。
ライブラリ化。
直感的な関数名で定義し、 これを呼ぶ事によって、 後々、コードの内容を追い易くします。
Script-Fu や Scheme の記述に慣れた方には 不毛な 作業かもしれませんが、
他言語からやって来た 私 の様に、 この言語の記述に慣れていない 人間 には 重宝かも知れません。
ただ、闇雲にライブラリ化しても意味がありませんので、 使い方には要注意ですが。



[2019/07/05] GIMP 3.0 で (script-fu-register ... ) がメニューパス付を受け付けない事を反映

0 件のコメント:

コメントを投稿