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