ひと息ついて休みをとる必要はないですか。 大丈夫ですね。 よろしい、 ではいよいよはじめての Script-Fu スクリプトを書く第 4 段階に進みましょう。
GIMP を使った私の経験では一番多い使い道のひとつがウェブ用にテキストの入ったロゴやら何やらの作成でした。 でもみなさんにとっては新規画像をどれ位の寸法で作ったら良いか全然判らないはずです。 テキストに使いたい文字の大きさが判ってもそれが画像をどれ位占めるのか見当がつきません。
Script-Fu の達人も入門者のみなさんも Script-Fu を使ったら簡単かつ自動的にこの問題を解決できるとすぐ気付くはずです。
したがってテキストボックスという名前でスクリプトを書いて、 これに画像を作らせ、 テキストを与えたらちょうどぴったり囲む頃合いの寸法になるようなスクリプトにしましょう。 それから好みのフォントやフォントサイズや文字色が選べるようにしましょう。
Up until now, we've been working in the Script-Fu Console. Now, however, we're going to switch to editing script files. Script files should be plain text files that you can edit in a text or code editor. The name you give is not that important, except for being able to recognize the script. You should give your script file the extension 「.scm」.
Where you place your scripts is a matter of preference. In GIMP's folder preferences you can see in which folders GIMP looks for scripts. It is also possible to add a new folder there. The folder where GIMP stores its own scripts is usually not the best choice for your scripts, but for the rest feel free to choose what suits you best.
どんな Script-Fu スクリプトもそのメイン関数として少なくとも 1 つの関数を定義します。 この作業にとりかかりましょう。
またどんな Script-Fu もプロシージャーデータベースに登録して GIMP から呼び出せるようにもしなければなりません。
ではメイン関数をまず定義しましょう。
(define (script-fu-text-box inText inFont inFontSize inTextColor))
この式で script-fu-text-box
という名前の関数を定義し、 テキストや書体や書体の寸法や文字色を受け入れる 4 つのパラメーターをとることにします。 関数は今のところ中身がないので何もできません。 ここまではよろしいですか。 目新しいところはまだありません。
Scheme の変数や関数の名前は小文字の英字を適宜ハイフンでつないだ表現が好まれているようです。 それで私も同じ規則でこの関数の名前をつけました。 ただしパラメーターについてはその規則から外れた方法をとることにします。 私は変数やパラメーターにはもっと説明的な書き方をするのが好きなので、 パラメーターの頭に「in」をつけて関数が受け取った変数だとすぐ判るようにして、 他のところで作った変数と区別します。 またスクリプト内で定義した変数の頭には「the」をつけます。
It's GIMP convention to name your script functions
script-fu-abc
,
because then when they're listed in the procedural database, they'll
all show up under Script-Fu when you're listing the functions. This
also helps distinguish them from plug-ins.
ではこの関数を GIMP に登録しましょう。 この操作には script-fu-register
という関数を起用します。 GIMP はスクリプトを見るとこの関数を実行しプロシージャーデータベースに登録させます。 この関数の実行コードはスクリプトのどの位置に置いても構いませんが、 私なら他のコードを全部書き終えたあとの最後に置きます。
関数を登録している様子をつぎに示します。 パラメーターに関してはまもなく説明します。
(script-fu-register "script-fu-text-box" ;function name "Text Box" ;menu label "Creates a simple text box, sized to fit\ around the user's choice of text,\ font, font size, and color." ;description "Michael Terry" ;author "copyright 1997, Michael Terry;\ 2009, the GIMP Documentation Team" ;copyright notice "October 27, 1997" ;date created "" ;image type that the script works on SF-STRING "Text" "Text Box" ;a string variable SF-FONT "Font" "Charter" ;a font variable SF-ADJUSTMENT "Font size" '(50 1 1000 1 10 0 1) ;a spin-button SF-COLOR "Color" '(0 0 0) ;color variable ) (script-fu-menu-register "script-fu-text-box" "<Image>/File/Create/Text")
以上の関数をテキストファイルにして .scm
という拡張子をつけた名前で保存し、 スクリプトの個人用フォルダーに置いたら、 画像ウィンドウのメニューより → → を実行してください。 すると作成したばかりのスクリプトが → → → としてメニューに出現します。
この新しいスクリプトは実行しても何も起こりません。 もちろんメニューを辿れば説明文が表示されますし、 呼び出せばウィンドウも現れます。 スクリプトの登録が反映されたからなのですが、 何が起きたかの情報についてはあとで詳しく説明します。
最後にプロシージャーブラウザーを画像ウィンドウのメニューより
→ と辿って開き、 作ったばかりのスクリプトがデータベースに登録されていることをご確認ください。GIMP にスクリプトを登録するために登録関数 script-fu-register
を起用しますが、 これには 7 つの必須パラメーターとスクリプト独自のパラメーター、 そして説明文とそれぞれのパラメーターの初期設定値を加えることになります。
必須のパラメーター
関数の name (名前) を定めました。 スクリプトを起用したときに呼び出される関数がこれです。 スクリプトへの入口の役目を果たしています。 同じファイル内に他にも関数を書き加えることになるかもしれないので、 GIMP がどの関数をまず呼び出すべきか判断できるよう、 こうして定義することが重要です。 先の例で登録したのは text-box というたったひとつの関数です。
The menu label is the name that will be shown in the menu. In previous versions of GIMP you could specify the menu location here, but that has changed. How to specify the location will be shown below.
スクリプトの 説明 文をつけると、 プロシージャーブラウザーで表示されます。
あなたのお名前 はスクリプトの作者を書きます。
著作権 を明示します。
スクリプトの 作成日 には作成した日付か最近の改訂日付を記します。
スクリプトが作動できる画像の 形式 を定めます。 適合できる 「画像の形式」 を RGB、 RGBA、 GRAY、 GRAYA、 INDEXED、 INDEXEDA のなかから選びます (複数可)。 しかし今回の例では画像を生成するスクリプトを書いているので画像の形式を設定する必要はありません。
必須のパラメーターを列挙したので、 ここでスクリプトが使うパラメーターについて一覧表にまとめておきます。 これらの媒介変数を紹介するにあたりその型式がわかるようにしました。 これはスクリプトが呼ばれると現れるダイアログを構成するために使います。 また変数には初期設定値を与えておきます。
この節で行なわれる登録処理にはつぎの型式が関わります。
パラメーターの型 |
説明 |
例 |
---|---|---|
|
既に開いてある画像を操作するためのスクリプトを作るときは、 必須のパラメーターの直後にこのパラメーターを置かねばなりません。 GIMP は画像を参照するための情報をこのパラメーターに乗せてスクリプトに渡します。 |
3 |
|
既に開いてある画像を操作するためのスクリプトを作るときは、 |
17 |
|
数値と文字列の両方を受け入れる型です。 初期設定のテキストを渡すとき引用符をエスケープ処理しなければならなくなるので、 文字列には |
42 |
|
文字列を収める変数です。 |
"Some text" |
|
このパラメーターが要求する色の情報を示します。 |
'(0 102 255) |
|
真理 2 値をとるチェックボックスを表示します。 |
有効なら TRUE、 無効なら FALSE |
注記 | |
---|---|
上記のパラメーター型に加え、 操作盤ダイアログ上に使えるさらに多くの相互対話モード用ウィジェットの型があります。 GIMP のソースコードとともに配布されているテスト用スクリプト |
パラメーターの型 |
説明 |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
ダイアログ上に値を調節するためのウィジェットを作成します。
ウィジェット変数表
|
||||||||||||||||
|
ダイアログにカラーボタンを作成します。
もしくは
ウィジェット変数表
|
||||||||||||||||
|
ダイアログにフォント選択ウィジェットを作成します。 フォント名を文字列変数形式で返します。 GIMP にはこの返し値を手軽に扱えるテキスト処理プロシージャーが 2 つ備わっています。
いずれも
ウィジェット変数表
|
||||||||||||||||
|
ダイアログにブラシ選択ウィジェットを作成します。 このウィジェットは縮小見本表示があります。 ここはクリックしたまま待つと大きく表示されます。 さらに のラベルがついたボタンが作られます。 このボタンをクリックするとブラシ選択ダイアログが開かれ、 ブラシを選んだりその特徴を変更できるしくみになっています。
ウィジェット変数表
たとえば「 |
||||||||||||||||
|
ダイアログにパターン選択ウィジェットを作成します。 このウィジェットは縮小見本表示があります。 ここはクリックしたまま待つと大きく表示されます。 さらに のラベルがついたボタンが作られます。 このボタンをクリックするとパターン選択ダイアログが開かれ、 パターンを選んだりその特徴を変更できるしくみになっています。
ウィジェット変数表
スクリプトが呼び出されたときに返される値はパターンの名前をもつ文字列変数です。 たとえば「SF-PATTERN "Pattern" "Maple Leaves"」として呼び出してダイアログで何も変更しなかった場合、 返ってくるパラメーターは「 |
||||||||||||||||
|
ダイアログにグラデーション選択ウィジェットを作成します。 グラデーションボタンが設置され現在選ばれているグラデーションが表示されます。 このボタンはクリックするとグラデーション変更ダイアログが開かれ他のグラデーションも選べるしくみになっています。
ウィジェット変数表
スクリプトが呼び出されたときに返される値はグラデーションの名前をもつ文字列変数です。 たとえば「 |
||||||||||||||||
|
ダイアログにパレット選択ウィジェットを作成します。 このウィジェットは縮小見本とパレット名を表示します。 縮小見本はボタンになっておりクリックするとパレット選択ダイアログが開かれ他のパレットも選べるしくみになっています。
ウィジェット変数表
スクリプトが呼び出されたときに返される値はパレットの名前をもつ文字列変数です。 たとえば「 |
||||||||||||||||
|
ダイアログにファイル選択ウィジェットを作成します。 ファイル名が記されたボタンが設置されます。 このボタンをクリックするとファイルブラウザーが開かれ、 ファイルを探してひとつ選ぶ操作ができるしくみになっています。
ウィジェット変数表
スクリプトが呼び出されたときに返される値はファイルの名前と保管場所を記した文字列変数です。 |
||||||||||||||||
|
対話式操作でのみ有益です。 ファイルではなくディレクトリーを選択するウィジェットであることのほかは
ウィジェット変数表
スクリプトが呼び出されたときに返される値はディレクトリー名とそれまでの筋道を記した文字列変数です。 |
||||||||||||||||
|
ダイアログに数々の選択肢からひとつを選ぶコンボボックスウィジェットを作成します。 選択肢はまとめてリストにして渡し、 ウィジェットは最初の項目を初期値として表示します。
ウィジェット変数表
スクリプトが呼び出されたときに返される値はオプション項目の番号です。 最初のオプションが 0 番です。 |
||||||||||||||||
|
It will create a widget in the control dialog. The widget is a combo-box showing all enum values for the given enum type. This has to be the name of a registered enum, without the "Gimp" prefix. The second parameter specifies the default value, using the enum value's nick.
ウィジェット変数表
スクリプトが呼び出されたときに返される値は扱われる列挙型での値です。 |
Once we have registered our script, we need to tell GIMP where it should be found in the menu.
The best menu location of your script depends on its function. Most scripts are found in the
and menus.
For the current script, which creates a new image, we choose a submenu
of
script-fu-menu-register
function does.
Thus, we registered our Text Box script here:
→ → → .
もうお気付きだとは思いますが
以下に サブメニューがまだできていません。 存在しないメニューやサブメニューを使った場合は GIMP が自動的にそのメニューを作成します。