SAKAI Masahiro - Gimp-Ruby::Ruby-Fu Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

= Ruby-Fu

Gimp-Rubyはlibgimpやlibgimpuiの機能をほぼそのまま提供しているだけでなく、
Script-Fu的なインターフェースをその上に構築しています。
このフレームワークがRuby-Fuと呼ばれています。
このフレームワークには幾つかの制限がありますが、
典型的なスクリプトの作成をかなり容易にしてくれます。

以下にRuby-Fuを使った例を示します。

  #!/usr/bin/env ruby
  require 'gimp/fu'
  include Gimp
  
  # 実際に処理を行なう関数を定義します。
  # パラメータと返り値は以下のregisterの呼び出しと一致している必要があります。
  
  def ruby_fu_uni_img(size, color)
    img = Image.new(size, size, RGB)
    layer = Layer.new(img, size, size, RGB, "layer 1", 100, NORMAL_MODE)
    
    # アンドゥを無効化
    img.undo_disable
    
    # レイヤを追加
    img.add_layer(layer, 0)
    
    # 色を設定してレイヤを塗りつぶす
    gimp_palette_set_background(color)
    gimp_edit_fill(layer, BG_IMAGE_FILL)
    
    # 画像を表示する新しいウィンドウを作成
    Display::new(img)
    
    # アンドゥを有効化
    img.undo_enable
    
    img
  end
  
  # Ruby-Fuに関数を登録する。
  # この形で登録するとトップレベルの関数が登録される。

  register("ruby_fu_uni_img",           # 関数名
           "Creates a uniform image",   # 短い説明(blurb)
           "Creates a uniform image",   # ヘルプ
           "Masahiro Sakai",            # 著者
           "Masahiro Sakai",            # 著作権情報
           "2001",                      # 作成日時
           # Gimpのメニュー中のスクリプトの場所
           "<Toolbox>/Xtns/Ruby-Fu/Tutorials/Uniform image",
           "",                          # 扱うイメージのタイプ
           # パラメータの定義
           # 型、名前、説明、デフォルト値、オプションの順番です。
           [
             [RF_ADJUSTMENT, "size",  "Size of new image",  100],
             [RF_COLOR,      "color", "Color of new image", Color(255, 127, 0)]
           ],
           # 返り値の定義
           [
             [RF_IMAGE, "image", "Result image"],
           ])
  
  # mainを呼ぶのを忘れがちなので注意
  main


このスクリプトはユーザから指定されたサイズの画像を作成して、
指定された色で塗りつぶします。
試しに、実行権を付けて~/.gimp-1.2/plug-ins/に放り込んで、
Gimpを再起動してみましょう。

どうです?
簡単でしょ?