[Part I. GIMP基礎功]

[Part II. 一種效果的誕生]
[Part III. Script-Fu的秘密]



14.4 Python-Fu 物件導向的語法

以「纖維紋路」的程式碼為例
  • Python-Fu 的開發者 James Henstridge 就是以 clothify 為例,可以在GIMP Python Documentation 看到「纖維紋路」的程式碼。
  • James Henstridge 的程式碼,用了很多 Python 物件導向的語法
    • layer_two = layer_one.copy()
    • layer_two.mode = MULTIPLY_MODE
    • layer_two.name = "Y Dots"
    • img.add_layer(layer_two, 0)
    • ......


盡量不要使用物件導向的語法
  • 嚴格來說, Python-Fu 到處都是物件導向的語法。
  • pdb.gimp_display_new(img) 這一敘述之中
    • pdb. 代表引用 pdb 模組內的函數
    • 這也算是物件導向的語法


  • 因此, 我的意思是
    • 使用 img = pdb.gimp_image_new(width, height, RGB)
    • 不要使用 img = gimp.Image(width, height, RGB)
    • 使用 pdb.gimp_display_new(img)
    • 不要使用 gimp.Display(img)
    • 使用 pdb.gimp_image_add_layer(img, drw, 0)
    • 不要使用 img.add_layer(drw, 0)



使用 pdb.gimp_...() 的函式呼叫方式,查詢 PDB 函式庫時,比較快速

  • 由於,「既有的」函式呼叫方式, Python-Fu 與 Script-Fu 之間的對應關係,比較清楚直覺。
  • 物件導向的語法,重新包裝函式與變數值的設定方式,不容易立即拆解出 Python-Fu 與 Script-Fu 之間的互換方式
  • 我並不建議使用 Python-Fu 物件導向的語法。畢竟,「不使用 Python-Fu 物件導向的語法」,可以讓你較容易學習 Script-Fu ,而 Script-Fu 與 GIMP 是密不可分的 ,至少目前為止還是如此。
  • 只是,如果你要長久地撰寫 Python-Fu 程式碼,是可以考慮使用物件導向的語法。最好是摸熟了 GIMP 的基本函式用法,再使用物件導向的語法。