ひと息ついて休みをとる必要はないですか。 大丈夫ですね。 よろしい、 ではいよいよはじめての Script-Fu スクリプトを書く第 4 段階に進みましょう。
GIMP を使った私の経験では一番多い使い道のひとつがウェブ用にテキストの入ったロゴやら何やらの作成でした。 でもみなさんにとっては新規画像をどれ位の寸法で作ったら良いか全然判らないはずです。 テキストに使いたい文字の大きさが判ってもそれが画像をどれ位占めるのか見当がつきません。
Script-Fu の達人も入門者のみなさんも Script-Fu を使ったら簡単かつ自動的にこの問題を解決できるとすぐ気付くはずです。
したがってテキストボックスという名前でスクリプトを書いて、 これに画像を作らせ、 テキストを与えたらちょうどぴったり囲む頃合いの寸法になるようなスクリプトにしましょう。 それから好みのフォントやフォントサイズや文字色が選べるようにしましょう。
ここまで私たちは「Script-Fu コンソール」を使ってきました。 しかし今からスクリプトはテキストファイルに書くことにします。
自作のスクリプトをどこに置くかは好みの設定の問題でもあります。 もし GIMP の標準のスクリプト用ディレクトリーを操作できる権限をお持ちならそこに保管することもできます。 でも私なら自作のスクリプトは個人用スクリプト保管ディレクトリーに収めるようにして、 GIMP 提供の同梱スクリプトとは混ぜないようにします。
ホームディレクトリー内に GIMP が作成する .gimp-2.8
ディレクトリーに scripts
フォルダーができているのをお確かめください。[10] GIMP は必ず .gimp-2.8
ディレクトリー内で scripts
フォルダーを探し、 このディレクトリーパスを Script-Fu データベースに入れます。 個人用のスクリプトはここに入れるべきでしょう。
どんな 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" ;func 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 というたったひとつの関数です。
スクリプトを挿入するメニュー内での 位置 を定めます。 スクリプトの位置を Unix 風のパス表記で正確に指定してください。 パスのはじめ (ルート) には <Image>
が指定できます。[11]
既存の画像を加工しないスクリプトを書いた場合 (このテキストボックスのような画像を新たに作成するスクリプトもこの分類に含まれる)、 GIMP の分類に従いそのスクリプトを
→ サブメニュー内に置きたいと考えるはずです。それとは反対に画像を編集・加工する目的のスクリプトを書いた場合は画像ウィンドウのメニューの 12] つまり → → → という位置になります。
メニューや、 標準にはない メニューの中に置こうと考えるはずです。 いずれにしろ位置の定義はどのメニューのどのサブメニュー内にするかということに絞られます。 以上の理由から、 画像ウィンドウのメニューの メニューの サブメニューの中に サブメニューを設け、 このテキストボックススクリプトをその中に収めることにしましょう。[もうお気付きだとは思いますが
以下に サブメニューがまだできていません。 存在しないメニューやサブメニューを使った場合は GIMP が自動的にそのメニューを作成します。スクリプトの 説明 文をつけると、 プロシージャーブラウザーで表示されます。
あなたのお名前 はスクリプトの作者を書きます。
著作権 を明示します。
スクリプトの 作成日 には作成した日付か最近の改訂日付を記します。
スクリプトが作動できる画像の 形式 を定めます。 適合できる 「画像の形式」 を 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 番です。 |
||||||||||||||||
|
ダイアログに列挙型リストの選択ウィジェットを作成します。 指定された列挙型の項目を並べたコンボボックスが設けられます。 使える列挙型は登録済のものに限られ、 その名前から冒頭の「Gimp」を取り除いた語で指定します。 第 2 のパラメーターには初期設定値を、 その略称で指定します。
ウィジェット変数表
スクリプトが呼び出されたときに返される値は扱われる列挙型での値です。 |