複製一個Script-Fu程式:slime2.scm
要寫Script-Fu程式前,先複製一個Script-Fu程式,看Script-Fu程式是如何運作的。
一、目錄與路徑:
|
Linux的使用者 在Linux下當你第一次啟動Gimp程式時,Gimp程式會在使用者的根目錄下產生 .gimp的隱藏目錄,儲存使用者與Gimp相關的資料。 .gimp目錄下還有許多子目錄,一開始這些目錄都是空目錄,brushes目錄用來儲存使用者自己所製作的brush檔案,patterns目錄用來儲存使用者自己所製作的pattern檔案,scripts目錄用來儲存使用者自己所製作的scripts檔案,一開始這些目錄都是空目錄。 而Gimp程式的安裝目錄(我的是:gimp)下也有一些子目錄,用來儲存Gimp程式已有的brush檔案、pattern檔案、script_fu檔案、plug_in檔案、、、。將./gimp/scripts/slime.scm檔複製一份到~./gimp/scripts/目錄下,將檔名改變為slime2.scm。 |
|
Window98的使用者 若是在Win98下使用Gimp,第一次啟動Gimp程式時,Gimp程式會在的安裝目錄下,為使用者產生 _gimp1.2.user_name的目錄(不是隱藏目錄)。我登入Win98的名字sclee,我的Gimp程式安裝目錄:C:\Program Files\GIMP\,Gimp為我產生的目錄:C:\Program Files\GIMP\_gimp1.2.sclee。 將C:\Program Files\GIMP\scripts\slime.scm檔複製一份到C:\Program Files\GIMP\_gimp1.2.sclee\ scripts\目錄下,將檔名改變為slime2.scm。 |
二、slime2.scm程式碼:
|
l 複製slime.scm檔成slime2.scm後 l 使用文字編輯器修改slime2.scm檔 l 以下是slime2.scm程式碼修改的部份 l 第1行script-fu-slime-logo改為 script-fu-slime-logo2 l 第35行script-fu-slime-logo改為 script-fu-slime-logo2 l 第36行Slime改為Slime2 |
|
|
1: (define (script-fu-slime-logo2 text size font) 2: (let* ((img (car (gimp-image-new 256 256 RGB))) 3: (text-layer (car (gimp-text-fontname img -1 0 0 text 30 TRUE size PIXELS font))) 4: (width (car (gimp-drawable-width text-layer))) 5: (height (* (car (gimp-drawable-height text-layer)) 1.3)) 6: (layer1 (car (gimp-layer-new img width height RGBA_IMAGE "Back" 100 NORMAL)))) 7: |
第1行 |
|
8: ;; put the text white 9: (gimp-invert text-layer) 10: ;; put the background black 11: (gimp-palette-set-background '(0 0 0)) 12: (gimp-image-add-layer img layer1 1) 13: (gimp-edit-fill layer1 FG-IMAGE-FILL) 14: ;; Resize the image 15: (gimp-image-resize img width height 0 0) 16: ;; merge the text and the bg 17: (set! sboub (car (gimp-image-merge-down img text-layer 0))) 18: ;; rotate the image from 90 degress 19: (plug-in-rotate 1 img sboub 1 TRUE) 20: ;; put some wind 21: (plug-in-wind 1 img sboub 10 1 8 1 1) 22: ;; rotate back 23: (plug-in-rotate 1 img sboub 3 TRUE) 24: ;; wave it 25: (plug-in-waves 1 img sboub 4 0 50 0 0) 26: ;; blur 27: (plug-in-gauss-iir 1 img sboub 5 1 1) 28: ;; change the color to give the slime 29: (gimp-color-balance sboub 0 1 -100 0 -100) 30: (gimp-color-balance sboub 2 1 100 0 10) 31: ;; display 32: (gimp-display-new img))) 33: 34: |
|
|
35: (script-fu-register "script-fu-slime-logo2" 36: "<Toolbox>/Xtns/Script-Fu/Logos/Slime2" 37: "Slime yourself..." 38: 39: "Jean-Philippe Turcat (cmrjpt@soc.staffs.ac.uk)" 40: "Jean-Philippe Turcat" 41: "08/06/1999" 42: "" 43: SF-STRING "Text String" "Gimp" 44: SF-ADJUSTMENT "Font Size (pixels)" '(72 2 1000 1 10 0 1) 45: SF-FONT "Font" "-*-ComicsCarToon-*-r-*-*-24-*-*-*-p-*-*-*") |
第35行 第36行 |
|
史萊姆字體 |
選單 |
l 若還未執行Gimp程式,請啟動Gimp程式。 l 若你已執行Gimp程式,執行[Gimp] -> Xtrns -> Script-Fu -> Refresh,更新Gimp的程序資料庫內的資料。 l 這時候Script-Fu / Logos內的子選單多了Slime2這個選項。 l 執行[Gimp] -> Xtrns -> Script-Fu -> Logos -> Slime2會產生一張史萊姆字體的Gimp四個字的圖。 |
三、程式碼與視窗界面的關係:
DB Browser對話盒
|
DB Browser對話盒的一部分 |
執行[Gimp] -> DB Browser, 查詢script-fu-slime-logo2這函數 slime2.scm程式碼第35行 script-fu-register "script-fu-slime-logo2" 代表跟程序資料庫註冊函式。 DB Browser對話盒,所顯示的資訊與程式碼的對應關係為:
|
選單路徑
|
選單路徑 |
程式碼第36行 "<Toolbox>/Xtns/Script-Fu/Logos/Slime2" 代表slime2.scm這個script_fu在那一個選單路徑。 |
對話盒的參數設定
|
Logos/Slime2對話盒 |
Logos/Slime2對話盒,所顯示的資訊與程式碼的對應關係為:
|
參數的意義
|
43行:SF-STRING "Text String" "Gimp" l SF-STRING,表示會在Logos/Slime2對話盒上產生一個字串的文字輸入框。 l "Text String",為輔助說明的文字。 l "Gimp",表文字輸入框內預設的字串為Gimp。 |
|
44行:SF-ADJUSTMENT "Font Size (pixels)" '(72 2 1000 1 10 0 1) l SF-ADJUSTMENT,在對話盒上產生一個可上下調整大小值的控制元件。 l "Font Size (pixels)",為輔助說明的文字。 l
'(72 2 1000 1 10 0 1),字形大小預設值72、最小值2、最大值1000、每次調整控制元件增加值1。 |
|
45行:SF-FONT "Font" "-*-ComicsCarToon-*-r-*-*-24-*-*-*-p-*-*-*") l SF-FONT,在對話盒上產生一個字型設定按鈕,按下按鈕可啟動設定字型的對話盒。 l "Font",為輔助說明的文字。 l "-*-ComicsCarToon-*-r-*-*-24-*-*-*-p-*-*-*"),為預設字型,Gimp的字型是使用X11的格式。 |
|
第1行:(define (script-fu-slime-logo2 text size font) 藉由Logos/Slime2對話盒所輸入的參數設定script-fu-slime-logo2函式的text、size、font這三個變數。 |
|
OK按鈕: 按下Logos/Slime2對話盒的OK按鈕後,OK按鈕下方的文字顯示框內的文字會快速改變,此時script-fu-slime-logo2 函數被呼叫,傳入變數設定,slime2.scm從第1行執行到第32行。 |
|
第32行:(gimp-display-new img) 秀出最後的結果,一張史萊姆字體的Gimp四個字的圖 |
About按鈕
|
按下About按鈕後 |
按下Logos/Slime2對話盒About按鈕後,產生一對話盒,所顯示的資訊與程式碼的對應關係為:
|