äžéç® æåã®ã¹ã¯ãªãã 
ããã§æäœéå¿
èŠãª Scheme ã®èª¬æãçµãããæåã®ã¹ã¯ãªãããæžãããšãã§ããããã«ãªããŸãããæåã®ã¹ã¯ãªããã¯éåžžã«ã·ã³ãã«ã§ããããããšãŠãéèŠãªæå³ãæã£ãŠããŸãããŸãã¯ã¬ã€ã€ãŒãè€è£œããã¹ã¯ãªãããšæ°èŠç»åãäœãã¹ã¯ãªãããäœã£ãŠã¿ãŸãããã
3.1 ç»åäŸååãšç¬ç«å®è¡å 
ã¹ã¯ãªããã«ã¯å€§ããåããŠç¬ç«å®è¡åã®ã¹ã¯ãªãããšç»åäŸååã®ã¹ã¯ãªããã®äºçš®é¡ããããŸãã
3.1.1 ç»åäŸåå 
ç»åäŸååã®ã¹ã¯ãªããã¯ãã¹ã¯ãªããã®å®è¡ã«ç»å (ãã¬ã€ã€ãŒç) ãå¿
èŠãšããåŠçãè¡ãã¹ã¯ãªããã§ããã¬ã€ã€ãŒã«å¯ŸããŠäœããã®æäœãè¡ããã®ãããã§ãããã®ã¿ã€ãã®ã¹ã¯ãªããã¯ã¡ãã¥ãŒã®ããŸããŸãªå Žæã«çœ®ãããŠããŸãã
3.1.2 ç¬ç«å®è¡å 
ç¬ç«å®è¡åã®ã¹ã¯ãªããã¯ãã¹ã¯ãªããã®å®è¡ã«ç»åãå¿
èŠãšããªãã¹ã¯ãªããã§ããç»åãèªåã§äœãäžããŠããŸããã®ãå€ãã§ãããã®ã¿ã€ãã®ã¹ã¯ãªããã¯äž»ã« ãã¡ã€ã«/ç»åã®äœæ/{ãã¿ã³|ããŽ|ãã¿ãŒã³|Web ããŒãžããŒãã®äœæ} ã®äžã«çœ®ãããŠããŸãã
ãã®æ¬¡ã§ã¯ç»åäŸååã¹ã¯ãªãããšç¬ç«å®è¡åã®ç°¡åãªäŸãšããŠãæãåºæ¬çãªã¹ã¯ãªãããäœããŸãã
ç»åäŸååã®äŸãšããŠãã¬ã€ã€ãŒãè€è£œããã¹ã¯ãªãããæããŸãããããŠç¬ç«å®è¡åã®äŸãšããŠã¯ãæ°èŠç»åãäœæããã¹ã¯ãªãããæããŸãã
3.2 ããã·ãŒãžã£ãã©ãŠã¶ 
ãã«ã/ããã·ãŒãžã£ãã©ãŠã¶... ã«ãã ããã·ãŒãžã£ãã©ãŠã¶ã§ã¯ãGimp ã®ãããã³ã«ããŒã¿ããŒã¹ã«ç»é²ãããŠã㊠Script-Fu ããåŒã³åºããŠå©çšããããšãã§ãã颿°ãæ€çŽ¢ããããšãã§ããŸãã
3.2.1 ããã·ãŒãžã£ãã©ãŠã¶ã®äœ¿ãæ¹ 
Script-Fu ãæžãæã§ Gimp ã®æ©èœãäœã䜿ããããšããããã·ãŒãžã£ãã©ãŠã¶ãããç®åœãŠã®æ©èœãè¡ã颿°ãæ¢ããŠãå
¥åãšããŠå¿
èŠãªåŒæ° (ããã°åºåã) ã確èªããããšãã§ããŸããã¹ã¯ãªãããäœæããå Žåãã颿°ã®äžã€ãšããŠãã®ã¹ã¯ãªãããããŒã¿ããŒã¹ã«ç»é²ãããŸãã
颿°ãæ¢ãæã¯ãæ€çŽ¢æ¬ã«æ¢ãããã¿ãŒã²ããã®ããŒã¯ãŒããå
¥åããã ãã§ãããããšããŒã¯ãŒãã«äžèŽãã颿°ã ããå·ŠåŽã«æ®ããŸãããã®äžã¯ "new" ã§æ€çŽ¢ããçµæã§ãã

å·ŠåŽããäœãäžã€é¢æ°ãéžã¶ãšããã®é¢æ°ã«é¢ããæ
å ±ãå³åŽã«è¡šç€ºãããŸãããã®é¢æ°ã®èª¬æãšã(ããã°) å
šãŠã®å
¥åã®åŒæ°ãšãå
šãŠã®åºåã®åŒæ°ã«ã€ããŠã®æ
å ±ãšããã«ããšãã®ä»ã®èäœæš©æ
å ±ãªã©ã§ãããã«ãã«ã¯ãã®é¢æ°ã䜿ãäžã§éèŠãªæ
å ±ã詳ããæžãããŠããã®ã§ãã¯ãããŠäœ¿ã颿°ã®æã«ã¯äžåºŠç®ãéããŠããããã«ããŸãããã
Script-Fu ãæžãæã«ã¯ãåºæ¬çã«ãã®ããã·ãŒãžã£ãã©ãŠã¶ã§é¢æ°ãæ¢ããªããæžãããšã«ãªããŸãã䜿ãããã»æ¬²ããæ©èœ (颿°) ããã â ããã·ãŒãžã£ãã©ãŠã¶ã§æ¢ã â å
¥å/åºåã®åŒæ°ãèŠã â ã¹ã¯ãªããã«æžã â æ¬¡ã®é¢æ°ãž ãšããç¹°ãè¿ãã§ã¹ã¯ãªãããæžããŸãã
3.2.2 ããã·ãŒãžã£ãã©ãŠã¶ã§è¡šç€ºãããåŒæ°å 
ããã·ãŒãžã£ãã©ãŠã¶ã®å³åŽã®å
¥åãã©ã¡ãŒã¿/åºåè¿ãå€ã®ãšããã§ã¯ãåŒæ°ãšããŠæåŸ
ãããŠããåã衚瀺ãããŠããŸããã¹ã¯ãªãããæžãå Žåã«ã¯ãééã£ãåã®å€ãäžããªãããã«ããŸããããããåŒæ°ã®æ¹ãééãããšãã¹ã¯ãªãããå®è¡ãããšãã«ãšã©ãŒãšãªããŸãã
ãã®äžã«ã¯åŒæ°åã®èª¬æããããŸãããã¯ãããŠèªãå Žåã¯èªã¿é£ã°ããŠããŸã£ãŠãæ§ããŸãããåŸã§èªãå¿
èŠãåºãŠãããšãã«åç
§ããçšåºŠã§ããã§ãããã
- ARRAY (FLOATARRAY/INT8ARRAY/INT32ARRAY/STRINGARRAY)
- é
åã§ããé
åã®åã«ãã£ãŠãå°æ°ç¹åã8/32 ãããæŽæ°åãæåååã«åãããŸãã
- CHANNEL
- ãã£ã³ãã«ã§ãããªã¹ãã«ãªã£ãŠãããå
é ã®èŠçŽ ã¯ãã£ã³ãã«ã® ID ã§ãããã£ã³ãã«ãã¹ã¯ãã¯ã€ãã¯ãã¹ã¯ã CHANNEL ãšããŠæ±ãããŸãã
- COLOR
- è²ã§ããRGB ã®äžèŠçŽ ã®æ°å€ãå
¥ã£ããªã¹ãã«ãªããŸãã
- DISPLAY
- äœæãã IMAGE ãå®éã«ç»åãŠã£ã³ããŠã«è¡šç€ºãããšãã«é¢ä¿ããŸãã
- DRAWABLE
- ããã¢ãã«ã§ããããã¢ãã«ã¯ã¬ã€ã€ãŒãšãã£ã³ãã«ã®ç·ç§°ã§ãããªã¹ãã«ãªã£ãŠãããå
é ã®èŠçŽ ã¯ããã¢ãã«ã® ID ã§ãã
- FLOAT
- (æµ®åïŒ) å°æ°ç¹ã§ããæŽæ°ã§ãã£ãŠã 127.000000 ã®ããã«å°æ°ç¹ã®æå¹æ¡ãŸã§ä»ããŠåãæž¡ããè¡ããŸãã
- IMAGE
- ç»åã§ãããªã¹ãã«ãªã£ãŠãããå
é ã®èŠçŽ ã¯ç»åã® ID ã§ãã
- INT32
- 32 ãããåã®æŽæ°ã§ããåãåŸãæ°å€ã®ç¯å²ã決ãŸã£ãŠããå Žåãããã®ã§ãDB ãã©ãŠã¶ã«æžããŠãã説æãèªãã§ãããŸãããã
- LAYER
- ã¬ã€ã€ãŒã§ãããªã¹ãã«ãªã£ãŠãããå
é ã®èŠçŽ ã¯ã¬ã€ã€ãŒã® ID ã§ãã
- PARASITE
- ãã©ãµã€ãã§ãããã©ãµã€ããå©çšãããš drawable ãªã©ã®ã¿ãŒã²ããã«å¯ŸããŠæ
å ±ãä»å ããããšãã§ããŸãã
- SELECTION
- éžæé åã§ãããªã¹ãã«äžã€ã ãèŠçŽ ãå
¥ã£ãŠãããéžæé åã® ID (æŽæ°) ããããŸãã
- STRING
- æååã§ããæååã¯äºéåŒçšç¬Š (") ã§ååŸãå²ãŸãªããŠã¯ãããŸãããäŸãã°æåå string 㯠"string" ã®ããã«ããŸããäºéåŒçšç¬Š " èªèº«ãåºåããã«ã¯ãšã¹ã±ãŒãèšå· \ ã§ \" ã®ããã«ãšã¹ã±ãŒãããŸãã
- VECTOR
- ãã¯ãã«æ
å ±ã§ããINT32 åã®æŽæ°ãšããŠåããããŸãã
3.3 ã¬ã€ã€ãŒãè€è£œããã¹ã¯ãªãã 
ããããæåã® Script-Fu ãæžãäœæ¥ã§ãããã®ã¬ã€ã€ãŒãè€è£œããã¹ã¯ãªããã¯ãè€è£œå
ã®ã¬ã€ã€ãŒãå¿
èŠãšããç»åäŸååã®ã¹ã¯ãªããã§ãã
ããã§ã¯ Scheme ã«ã€ããŠè²ã
ãšèª¬æããåã«ãã¬ã€ã€ãŒãè€è£œããã ããšããéåžžã«ã·ã³ãã«ãª Script-Fu ãæžããŠããŸããŸããããããã¹ã¯ãªãããã©ã®ãããªæ§æã«ãªã£ãŠããã®ãã説æããŸãã
3.3.1 æžããã¹ã¯ãªããã眮ã 
æåã®ã¹ã¯ãªãããã±ã£ãšèŠãã ãã§ã¯ããŸã äœãã©ããªã£ãŠããã®ãåãããªãã§ãããããšãããããã®ã¹ã¯ãªããããUnix ãŠãŒã¶ãŒã¯ Emacs çã®ãšãã£ã¿ã§ãWindows ãŠãŒã¶ãŒã¯ã¡ã¢åž³ãªã©ã䜿ã£ãŠå
¥åããŠäžãããå
¥åãããã¡ã€ã«ã¯ããã¡ã€ã«åãšã㊠duplicate-layer.scm ãªã©ãšããŠä¿åããŠäžããã
ãã®ä¿åãã duplicate-layer.scm ããããªãã®å人çšã® scripts ãã£ã¬ã¯ããªã«å
¥ããŸããUnix ãŠãŒã¶ãŒãš Windows ãŠãŒã¶ãŒã®å Žåã§ã¯ãããããã®ããã«ãªããŸãã
- Unix:
$ cpãduplicate.scm ~/.gimp-2.6/scripts/
- Windows:
duplicate.scm ãã¡ã€ã«ã C:\Documents and Settings\(ãŠãŒã¶ãŒå)\.gimp-2.6\scripts ãã©ã«ãã«å
¥ãã
3.3.2 ã¬ã€ã€ãŒè€è£œã®ã¹ã¯ãªãã 
(define (script-fu-duplicate-layer img layer)
(let* (
(copy-layer (car (gimp-layer-copy layer TRUE)))
)
(gimp-image-add-layer img copy-layer -1)
(gimp-displays-flush)
)
)
(script-fu-register
"script-fu-duplicate-layer"
"Duplicate Layer..."
"description"
"name"
"copyright"
"date"
"RGB*"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0)
(script-fu-menu-register "script-fu-duplicate-layer"
"<Image>/Filters/Test")
3.3.3 ã¹ã¯ãªãããåãã 
ããã§ã¯äžã®ã¹ã¯ãªããã®èª¬æã«å
¥ããŸããæ°ããã¹ã¯ãªããã scripts ãã£ã¬ã¯ããªã«ã³ããŒããããGimp ãèµ·åããŠäžãããèªåçã«ãã®ã¹ã¯ãªãããèªã¿èŸŒãŸããŸããããæ¢ã« Gimp ãèµ·åããŠããç¶æ
ã§ã¹ã¯ãªãããã³ããŒããã®ãªããæ°ããã¹ã¯ãªããã Gimp ã«èªã¿èŸŒãŸãããã ãã£ã«ã¿/Script-Fu/ã¹ã¯ãªãããåèªã¿èŸŒã¿... ãããŠãããŠäžãããã¹ã¯ãªããã®äžéšãæžãæããŠããã®å€æŽãåæ ãããããšãã«ãã¹ã¯ãªãããåèªã¿èŸŒã¿ããããšåæ ã§ããŸãã
ãã£ããäœæããã¹ã¯ãªãããåãããŠã¿ãŸãããããã£ã«ã¿/Test/Duplicate Layer... ã®ã¡ãã¥ãŒãã¹ã«ä»åæ°ããäœã£ãã¹ã¯ãªãããç»é²ãããŠãããšæããŸããããã䜿ããšãã¬ã€ã€ãŒãè€è£œãããŸã (ã¬ã€ã€ãŒãã€ã¢ãã°ã§ç¢ºèªããŠäžãã)ãã¡ããã©ã¬ã€ã€ãŒãã€ã¢ãã°ã®è€è£œãã¿ã³ãæŒãããšããšåãåäœã§ããã
3.3.4 äžã§ãã£ãŠããããš 
ãªããã®ããã«ãªãã®ããã¹ã¯ãªããã§ãã£ãŠããããšã«ã€ããŠèª¬æããŸããé çªãéã«ãªã£ãŠããŸããŸãããæåŸã®æ¹ããèŠãŠãããŸãããã(å
é ã®æ°åã¯ããã®ã¹ã¯ãªããã®ç©ºçœè¡ãå«ãã æåã®æ¹ããã®éãè¡çªå·ã§ã)
ã¹ã¯ãªããã®ç»é²
10| (script-fu-register
11| "script-fu-duplicate-layer"
12| "Duplicate Layer..."
13| "description"
14| "name"
15| "copyright"
16| "date"
17| "RGB*"
18| SF-IMAGE "Image" 0
19| SF-DRAWABLE "Drawable" 0)
20|
21| (script-fu-menu-register "script-fu-duplicate-layer"
22| "<Image>/Filters/Test")
script-fu-register ããå§ãŸã£ãŠãããã® 10 è¡ç®ãã 19 è¡ç®ãŸã§ã®éšåã¯ãscript-fu-duplicate-layer ãšãã颿°ã Gimp ãžç»é²ããŠããŸãã21 è¡ç®ãš 22 è¡ç®ã§ã¯ script-fu-duplicate-layer ãšãã颿°ãã¡ãã¥ãŒã«ç»é²ããŠããŸãã
script-fu-register ã«ãã Gimp ãžã®ç»é²ã¯ãåºæ¬çã«å
šãŠã®ã¹ã¯ãªããã«ãšã£ãŠå¿
é ã§ãã11 è¡ç®ã¯ãã®ã¹ã¯ãªããã Gimp ã§ç»é²ããæã«æå®ããååã§ããã§ã«äœ¿çšæžã¿ã§ã¯ãªãååãèªåã§èªç±ã«èšå®ããããšãã§ããŸãããã ã Script-Fu ã®ã¹ã¯ãªããã®å Žå㯠"script-fu-" ã«ç¶ããŠã¹ã¯ãªããã®ååãä»ããã®ãæ
£äŸãšãªã£ãŠããŸãã
12 è¡ç®ã¯ãã®ã¹ã¯ãªããã®ã³ãã³ãã®ã¡ãã¥ãŒã§ã®è¡šç€ºåãæžããŸãã
13 è¡ç®ã¯ãã®ã¹ã¯ãªããã®èª¬æãæžããŸãã
14 è¡ç®ã¯ãã®ã¹ã¯ãªããã®èäœæš©æ
å ±ãæžããŸãã
15 è¡ç®ã¯ãã®ã¹ã¯ãªãããäœæããæ¥ä»ãæžããŸãããããã¯ããããã¢ã«ãã¡ãããã§èšè¿°ããããã·ãŒãžã£ãã©ãŠã¶... ã§èŠããšãã«å³åŽã«è¡šç€ºãããæ
å ±ãšãªããŸãã
17 è¡ç®ã¯ãã®ã¹ã¯ãªãããã©ã®ç»åã¢ãŒãã§äœ¿çšã§ããã®ããšããèšå®ã§ããRGB* ãšãªã£ãŠããã®ã¯ãRGB ã¢ãŒããš RGBA ã¢ãŒãã®äž¡æ¹ã§äœ¿ããããšã瀺ããŠããŸããRGB ã¢ãŒãã ããããã§æå®ããå Žåãã¬ã€ã€ãŒã«ã¢ã«ãã¡ãã£ã³ãã«ããã£ããšãã«ãã®ã¹ã¯ãªããã䜿ãããšãã§ããŸãããã¢ãŒãæå®ã¯ RGB(RGBA) ã®ã»ãã«ãGRAY(GRAYA)ãINDEXED(INDEXEDA) ããããããããã°ã¬ãŒã¹ã±ãŒã«ãšã€ã³ããã¯ã¹ã¢ãŒãã«ãªããŸããã¹ã¯ãªããã察象ãšããã¢ãŒãã«åãããŠæå®ããŸããã
ããããåŸã¯ã¹ã¯ãªããæ¬äœã«æž¡ãåŒæ°ã«ãªããŸãã18 è¡ç®ãš 19 è¡ç®ã¯ããããã€ã¡ãŒãžãšããã¢ãã«ãåã£ãŠãããšããæå®ã§ããç»åäŸååã¹ã¯ãªããã®å ŽåãSF-IMAGE "Image" 0 ãš SF-DRAWABLE "Drawable" 0 ã®äºã€ã¯å¿
ãå¿
èŠã«ãªããŸãããããæžããŠãããšããã®æã¢ã¯ãã£ã*1ã«ãªã£ãŠããç»å (ç»åãŠã£ã³ããŠããèŠããç»åãšèãããšåãããããããª) ãšããã®æã¢ã¯ãã£ãã«ãªã£ãŠããããã¢ãã« (ãã®å Žåã¯ã¬ã€ã€ãŒã§ã) ã®äºã€ãã¹ã¯ãªããæ¬äœã«æž¡ãããšãã§ããŸãã
21 è¡ç®ãš 22 è¡ç®ã¯ã¹ã¯ãªãããã¡ãã¥ãŒã«é
眮ããããã®ç»é²ããã£ãŠãããšããã§ãã"Duplicate Layer..." ã®ã³ãã³ããã¡ãã¥ãŒã®ã©ã®äœçœ®ã«çœ®ãã®ããšãããã®ã§ãç»åäŸååã¹ã¯ãªããã®å Žå㯠<Image> ããã¡ãã¥ãŒãã¹ãæžãã¯ãããã¿ã€ããå€ããªããŸãã
ã¹ã¯ãªããæ¬äœã®åŒã³åºã
1| (define (script-fu-duplicate-layer img layer)
1 è¡ç®ãããããã¹ã¯ãªããã®æ¬äœãå§ãŸããŸãããã®è¡ã¯ script-fu-duplicate-layer ãšããååã®é¢æ°ãå®çŸ©ããŠããŸãããã®ååã¯ã¹ã¯ãªããã®ç»é²ããæã« 11 è¡ç®ã§ä»ããååãšåãã«ããªããã°ãªããããã®ååã®é¢æ°ãã¹ã¯ãªãããå®è¡ããæã«åŒã³åºãããããšã«ãªããŸãã
ãã®åŒã³åºãã«ç¶ã㊠img ãš layer ãšãããã®ããããŸããããã¯äœããšãããšãåè¿°ã® SF-IMAGE ãš SF-DRAWABLE ã§åã£ãŠããç»åã®æ
å ±ãšããã¢ãã« (ã¬ã€ã€ãŒ) ã®æ
å ±ãããããã®å€æ°ã«å
¥ã£ãŠããã®ã§ãããã®ããã¹ã¯ãªããã®äžã§ã¢ã¯ãã£ããªç»åãåãæ±ãããæã¯ img ããã¬ã€ã€ãŒãæ±ããããšã㯠layer ã䜿ãã°ããããšã«ãªããŸãã
æ¬äœã®äœæ¥
2| (let* (
3| (copy-layer (car (gimp-layer-copy layer TRUE)))
4| )
5| (gimp-image-add-layer img copy-layer -1)
6| (gimp-displays-flush)
7| )
8|)
ã¹ã¯ãªããæ¬äœãåŒã³åºããããæ¬¡ã¯æ¬äœå
éšã§è¡ãäœæ¥ãæžããŸããäœæ¥ãå
šãŠæžãçµãããã1è¡ç®ã§åŒã³åºãã (define æã®æ¬åŒ§ãéããªããã°ãªããªãã®ã§ã8 è¡ç®ã§æ¬åŒ§éã ")" ãæžããŠãã®ã¹ã¯ãªãããçµããŠããŸããã€ãŸã 1 è¡ç®ã® (define (script-fu-duplicate-layer img layer) ã®çµãã㯠8 è¡ç®ã§ã1 è¡ç®ãã 8 è¡ç®ã®ãã®éãå®éã«ä»åã®ã¹ã¯ãªããã®åŠçãè¡ã£ãŠãããšããã§ãã
2 è¡ç®ã¯å±æå€æ°ã䜿çšãããã let* æ§æã䜿ã£ãŠããŸããããã§äœ¿çšããŠãã屿倿°ã¯ copy-layer ã®äžã€ã ãã§ãã屿倿°ã®å®£èšã¯ 3 è¡ç®ã§è¡ã£ãŠããã4 è¡ç®ã®éãæ¬åŒ§ã¯ããã§ let* æ§æã®å€æ°å®£èšéšåãçµããã§ããããšã瀺ãéãæ¬åŒ§ã§ãã
3 è¡ç®ã¯ã¬ã€ã€ãŒãã³ããŒããŠããŸããä»ãããšèŠãã ãã§ã¯ããªã car ã䜿ã£ãŠ (car ã¯ãªã¹ãã®å
é ã®èŠçŽ ãåãåºãããšãæãåºããŠäžãã)ãããã copy-layer ã«å
¥ããŠããã®ãåãããªãã§ãããã
ããã®ã§éèŠãªã®ã¯ã(gimp-layer-copy layer TRUE) ã§ã¯äœãè¿ã£ãŠããã®ããšããããšã§ãããã«ã/Script-Fu/ããã·ãŒãžã£ãã©ãŠã¶... ãéããŠã¿ãŠäžãããããã¯ã¬ã€ã€ãŒãã³ããŒãã颿°ã§ããã®é¢æ°ãæ¢ãããã«æ€çŽ¢æ¬ã« copy ãšå
¥åããŠæ€çŽ¢ãããšäžã®ããã«ãªããŸãã

ãããš Gimp ã«ç»é²ãããŠãã颿°ã§ copy ãšããããŒã¯ãŒãã«äžèŽãããã®ããªã¹ãã¢ãããããŸãããããã gimp-layer-copy ãšããã®ãã¬ã€ã€ãŒãã³ããŒãã颿°ã ãšäºæ³ãã€ããŸãããããèŠãŠã¿ããšãå
¥åã« layer ãš add-alpha ã®äºã€ã®ãã©ã¡ãŒã¿ãå¿
èŠã§ãåºå㯠layer-copy ã ãšããããšãåãããŸãã
layer ãšããã®ã¯ 1 è¡ç®ã® define ã§åºãŠãã layer ã«å
¥ã£ãŠããæ°å€ããã®ãŸãŸäœ¿ããŸããadd-alpha ã¯ã¬ã€ã€ãŒã«ã¢ã«ãã¡ãã£ã³ãã«ã远å ãããã©ããã§ãããã§ã¯ TRUE ãšããŠãããŸãã
ãããŠãªã 3 è¡ç®ã§ car ã䜿ãã®ããšããçç±ã¯ãgimp-layer-copy ã§ layer ãã³ããŒããçµæã¯ãªã¹ãã§è¿ã£ãŠããããã§ãããã®ãªã¹ãã®å
é ã«ã¯ã³ããŒããã¬ã€ã€ãŒã® ID çªå·ãå
¥ã£ãŠããŸãããã® ID çªå·ãåãåºã㊠copy-layer ã«å
¥ããããšã§ã次åãã㯠copy-layer ãã³ããŒããã¬ã€ã€ãŒãšããŠæ±ãããšãã§ããããã«ãªããŸãã
ããã§ã¬ã€ã€ãŒãã³ããŒãããã®ãæã«å
¥ã£ãã®ã§ããããŸã ã³ããŒããã¬ã€ã€ãŒã¯å®éã®ã¬ã€ã€ãŒã¹ã¿ãã¯ã«ã¯çŸããŠããŸãããåã«ã³ããŒããã¬ã€ã€ãŒã Gimp å
éšã§äœãããã ããªã®ã§ãã¬ã€ã€ãŒéå±€ã«ã³ããŒããã¬ã€ã€ãŒã远å ããå¿
èŠããããŸããlayer ã§æ€çŽ¢ãããšãgimp-image-add-layer ãèŠä»ãããŸãã

ããã«ã¯å
¥åãã©ã¡ãŒã¿ãšã㊠image ãš layer ãš position ãå¿
èŠãšããŸãããã®é¢æ°ã¯ç»å image ã«ã¬ã€ã€ãŒ layer ã远å ãããšããæå³ã§ããããimage ã«ã¯ define è¡ã§åºãŠãã img ããlayer ã«ã¯ã³ããŒããã¬ã€ã€ãŒãæã copy-layer ã䜿ããŸããposition ã¯ã¬ã€ã€ãŒã¹ã¿ãã¯ã®ã©ãã«çœ®ãã®ããšããäœçœ®ãæå®ãããã®ã§ã-1 ãæå®ãããšçŸåšã¢ã¯ãã£ãã«ãªã£ãŠããã¬ã€ã€ãŒã®äžã«ã¬ã€ã€ãŒã远å ãããŸãã0 ãæå®ãããšåŒ·å¶çã«ã¬ã€ã€ãŒã¹ã¿ãã¯ã®äžçªäžã«è¿œå ãããŸãã
(gimp-displays-flush) ãšããã®ã¯ãè¡šç€ºãæŽæ°ããããã®æ±ºãŸãæå¥ã§ããããã§ã¯ã¬ã€ã€ãŒãã³ããŒããŠè¿œå ããã®ã§è¡šç€ºã«å€åããããŸãã5 è¡ç®ãç¡ããã°ãã®å€åãå®éã®è¡šç€ºã«åæ ãããŸãããã¹ã¯ãªããæ¬äœã®æåŸã«ã¯å¿
ãæžãããã«ããŸãããã
8 è¡ç®ã® ) ã®éãæ¬åŒ§ã¯ (define ã«å¯Ÿå¿ããæ¬åŒ§ã§ããããã§ã¹ã¯ãªããã®æ¬äœãçµãããŸããå¿ããã«éããããã«ããŸãããã
3.4 ç»åãäœæããã¹ã¯ãªãã 
æ¬¡ã¯æ°èŠç»åãäœæããã¹ã¯ãªãããäœã£ãŠã¿ãŸãããã®ã¹ã¯ãªããã¯ç¡ããç»åãç£ã¿åºãç¬ç«å®è¡åã®ã¹ã¯ãªããã§ãã§ããäžã®ã¹ã¯ãªããããå
ã»ã©ã®ã¹ã¯ãªãããšåãèŠé ã§ãã¡ã€ã«ã«æžããscripts ãã£ã¬ã¯ããªã«å
¥ããŠã¹ã¯ãªãããåèªã¿èŸŒã¿ããŠäžããã
3.4.1 ç»åäœæã®ã¹ã¯ãªãã 
(define (script-fu-create-new-image bg-color width height)
(let* (
(img (car (gimp-image-new width height RGB)))
(layer (car (gimp-layer-new img width height RGB-IMAGE
"Background" 100 NORMAL-MODE)))
)
(gimp-context-push)
(gimp-context-set-background bg-color)
(gimp-drawable-fill layer BG-IMAGE-FILL)
(gimp-image-add-layer img layer -1)
(gimp-context-pop)
(gimp-display-new img)
(gimp-displays-flush)
))
(script-fu-register
"script-fu-create-new-image"
"New Image..."
"description"
"name"
"copyright"
"date"
""
SF-COLOR "Background color" '(255 255 255)
SF-ADJUSTMENT "Width" '(256 1 1024 1 10 0 1)
SF-ADJUSTMENT "Height" '(256 1 1024 1 10 0 1))
(script-fu-menu-register "script-fu-create-new-image"
"<Image>/Filters/Test")
ãã㯠ãã£ã«ã¿/Test/New Image... ã«ãããŸãããããåŒã³åºããšäžã®ãããªãã€ã¢ãã°ãçŸããŸããå®è¡ãããšãèæ¯è²ã§æå®ããè²ã®èæ¯ã¬ã€ã€ãŒãæã¡ã倧ãããå¹
ãšé«ãã§æå®ãããµã€ãºã®ã¬ã€ã€ãŒãçŸããã§ãããã

ãã®ã¹ã¯ãªããã¯å
ã»ã©ã®ã¹ã¯ãªãããããé·ãã®ã§ãå
¥åã®ãã¹ãªã©ã§ã¹ã¯ãªããã®å®è¡äžã«ãšã©ãŒãè¿ãããããããããããŸãããåèªã¿èŸŒã¿ãããæã«ãšã©ãŒãè¿ãããå Žåã¯ãéãæ¬åŒ§ãšéãæ¬åŒ§ãæ£ãã察å¿ããŠããªãæãå€ãããã§ããäžæåäžæåãééã£ãŠããªãããã確ãããŠäžããã
3.4.2 äžã§ãã£ãŠããããš 
ã¹ã¯ãªããã®ç»é²
20| (script-fu-register
21| "script-fu-create-new-image"
22| "New Image..."
23| "description"
24| "name"
25| "copyright"
26| "date"
27| ""
ä»åã®ã¹ã¯ãªããã®é¢æ°ã®åå㯠create-new-image ã«ããŸãããããã 21 è¡ç®ã§ãã22 è¡ç®ã§ã¡ãã¥ãŒäžã§ã®ã³ãã³ãåãæå®ããŠããŸãã23ã24ã25ã26 è¡ã¯ååãšåãããã¹ã¯ãªããã®èª¬æãšäœè
ã®ååãšã¹ã¯ãªããã®èäœæš©è¡šç€ºãšã¹ã¯ãªãããäœæããæ¥ä»ã§ãã27 è¡ç®ã«ã¯äœãæå®ããããŸããããããã¯ãã®ã¹ã¯ãªããããŒãã®ç¶æ
ããç»åãäœæããç¬ç«å®è¡åã®ããã察象ãšããã€ã¡ãŒãžã®åãæå®ãããå¿
èŠãç¡ãã®ã§ãã
åŒæ°å
¥åããã¯ã¹ã®äœæ
28| SF-COLOR "Background color" '(255 255 255)
29| SF-ADJUSTMENT "Width" '(256 1 1024 1 10 0 1)
30| SF-ADJUSTMENT "Height" '(256 1 1024 1 10 0 1))
31|
32| (script-fu-menu-register "script-fu-create-new-image"
33| "<Image>/Filters/Test")
28ã29ã30 è¡ç®ã§ã¯ãã¹ã¯ãªããã«äžããå€ããŠãŒã¶ãŒã«æå®ããããã€ã¢ãã°ãäœãå
ãšãªããŸããããã¯ç¬ç«å®è¡åã¹ã¯ãªããã§ãããå
çšã®ç»åäŸååã¹ã¯ãªããã®ããã«æåã« SF-IMAGE ãš SF-DRAWABLE ãå¿
ãå¿
èŠãšã¯ããŸããã
ããã§ã¯ã¹ã¯ãªããã«æž¡ããŠããåŒæ°ã¯ 3 ã€ã§ããSF-COLOR ã¯ãŠãŒã¶ãŒã«è²ãéžã°ããŸãã2 ã€ã® SF-ADJUSTMENT ã¯ãŠãŒã¶ãŒã«å€ãéžã°ããŸãããã®çµæãäžã®ãããªãã€ã¢ãã°ãèªåçã«äœãããŸãã

28 è¡ç®ã® SF-COLOR ã®æåã®æååã¯ãäžã®ãã€ã¢ãã°ã§ããã°ãã®èšå®ã®ã©ãã«åã§ããããã§ã¯ããã®è²ã¯èæ¯è²ãšããŠäœ¿ãããããšãæå³ããŠããã®ã§ "Background Color" ãšããŸããããã®é£ã«ã¯ãªã¹ãããããŸãããã®ãªã¹ãã¯è²ã衚ããŠããŠã'(èµ€ ç· é) ãšãã颚ã«èµ€/ç·/éã 0 ãã 255 ã®æŽæ°ã§æå®ãããšããã®è²ãã¹ã¯ãªãããæåã«åŒã³åºããæã®ããã©ã«ãã®è²ã«ãªããŸããä»å㯠'(255 255 255) ãªã®ã§çœè²ã«ãªã£ãŠããŸãã
29 è¡ç®ãš 30 è¡ç®ã® SF-ADJUSTMENT ã¯ã©ãã«åã "Width" ãš "Height" ãšéã£ãŠãã以å€ã¯åãã§ããããã§ã¯æ°ããäœãç»åã®å€§ãã (å¹
ãšé«ã) ããŠãŒã¶ãŒã«éžã°ããŠããŸãããªã¹ãã®äžã®èŠçŽ ã¯ 7 ã€å¿
èŠã§ããããããã®èŠçŽ ãäœãæå®ããŠããã®ãå·Šããé çªã«èª¬æããŸãã
äžçªæåã¯ããã®ã¹ã¯ãªãããåŒã³åºããæã®ããã©ã«ãã®å€ãèšå®ããŠããŸãããã®æ¬¡ã¯ãã®æ°å€ã®ç¯å²ã®æäœå€ãæå®ããŠããŸãããã®æ¬¡ã¯ãã®æ°å€ã®æé«å€ãæå®ããŠããŸãããã®é£ã¯å°ããã¹ãããå¹
ã§ããã®é£ã¯å€§ããã¹ãããå¹
ã§ãããã®äºã€ã¯æ°å€ã墿žãããæã«ã©ã®ããããã€å€ãå€åããã®ããšãããã®ã§ãããã®æ¬¡ã¯å®æ°ã®ç²ŸåºŠãã€ãŸãå°æ°ç¹ç¬¬äœäœãŸã§ã®å€æŽãèš±ããã§ãå°æ°ç¹ä»¥äžã®æ°å€ãå¿
èŠãšããå Žåã«å€æŽããŸããæåŸã®æ°å€ã¯ããã®æ°å€éžæã 0 ã§ããã°ã¹ã©ã€ããŒã§ã1 ã§ããã°æ°å€å
¥åããã¯ã¹ã§è¡ãããã«ããŸãã
ãããããŸãšãããšããã®æ°å€éžæã§ã¯ã¹ã©ã€ããŒã«ãã£ãŠ 1 ãã 1024 ãŸã§ã®æŽæ°ãéžã¶ããšãã§ããããã©ã«ãã®å€ã¯ 256 ã§ããããšããããšã§ããSF-ADJUSTMENT ã«ããæ°å€éžæã¯ãã䜿ãã®ã§ãèŠããŠãããšè¯ãã§ãããã
ã¹ã¯ãªããæ¬äœã®åŒã³åºã
1| (define (script-fu-create-new-image bg-color width height)
ãã®ã¹ã¯ãªããã®æ¬äœã®é¢æ°ã®ååã script-fu-create-new-image ãšããŠå®çŸ©ããŠããŸããããã¯äžã€ã®åŒæ°ãå¿
èŠãšããŸãããã㯠bg-color ãš width ãš height ã§ããbg-color ã«ã¯ã¹ã¯ãªãããå®è¡ããæã«çŸãããã€ã¢ãã°ã§ãŠãŒã¶ãŒãæå®ããè² (ããã¯èŠçŽ ãäžã€ã®ãªã¹ãã«ãªã£ãŠãã) ãå
¥ããŸããwidth ãš height ã«ã¯å¹
ãšé«ããå
¥ããŸãã
ç»åäŸååã¹ã¯ãªããã§ããäžçªã¯ããã®ã¹ã¯ãªãããšæ¯èŒããå Žåãç¬ç«å®è¡åã¹ã¯ãªããã§ã¯ç»åã® img ãšã¬ã€ã€ãŒã® layer ãåãåãå¿
èŠããªãããšã«æ³šæããŠäžããã
ç»åãšã¬ã€ã€ãŒã®äœæ
3| (let* (
4| (img (car (gimp-image-new width height RGB)))
5| (layer (car (gimp-layer-new img width height RGB-IMAGE
6| "Background" 100 NORMAL-MODE)))
7| )
ãã®ã¹ã¯ãªããã¯æ°ããç»åãäœãã®ã§ããããŸã äœãååšããªãç¶æ
ãªã®ã§ãã¯ããã«ç»åãšç»åäžã«ååšããã¬ã€ã€ãŒãäžã€ã¥ã€å¿
èŠã§ããæ°ããäœæããç»åã«ã¯ã¬ã€ã€ãŒãç¡ãã®ã§ããç»åãšã¬ã€ã€ãŒãæåã«äœãããšã«ããŸãã

4 è¡ç®ã§ã¯æ°ããç»åãäœã£ãŠããŸããããã·ãŒãžã£ãã©ãŠã¶ã§ gimp-image-new ãèŠãŠã¿ããšãå
¥åã« width ãš height ãš type ãå¿
èŠãšãªã£ãŠããŸããåºåã®è¿ãå€ã¯ image ãšãªã£ãŠããŸããã€ãŸãæ°ããäœæããç»åã®å¹
ãšé«ããšçš®é¡ (ç»åã®ã¢ãŒã: RGBãã°ã¬ãŒã¹ã±ãŒã«ãã€ã³ããã¯ã¹) ãäžããŠããã°ããã®æ¡ä»¶ã§äœãããç»åãè¿ã£ãŠãããšããããã§ããç»åã®çš®é¡ã¯ RGB ãªã®ã§ãRGB ãæå®ããŠãããŸãã
gimp-image-new 颿°ãåŒã³åºããæã®è¿ãå€ã¯ãªã¹ãã«ãªã£ãŠããã®ã§ããã®å
é ã car ã§åãåºããŠãããŸããããã§æ°ããäœæããç»åã® ID ãæã«å
¥ããŸãããã®ç»å ID ã img ã«å
¥ããŠãããŸããããã§ img ãæ°ããäœæããç»åãæãããšã«ãªããŸãã

ç»åãäœæããã ãã§ã¯ãŸã ç»åã®äžã«ã¬ã€ã€ãŒãååšããªãã®ã§ã次ã¯ã¬ã€ã€ãŒãæ°ããäœããŸãã5 è¡ç®ã® gimp-layer-new 颿°ã¯æ²¢å±±ã®å
¥åãå¿
èŠã§ãããããŠåºåãšããŠæ°ããäœæããã¬ã€ã€ãŒãè¿ããŸãã
image ã¯ãã©ã®ç»åã«ã¬ã€ã€ãŒãäœãã®ããæå®ããŸããããã§ã¯äœã£ãã°ããã® img ã䜿ããŸããwidth ãš height ã¯ã¬ã€ã€ãŒã®å¹
ãšé«ãã§ããç»åã®æã®å¹
ãšé«ããšåããªã®ã§ããŠãŒã¶ãŒãæå®ãã width ãš height ã«ãªããŸããtype ã¯ã¬ã€ã€ãŒã®çš®é¡ã§ããã¢ã«ãã¡ãã£ã³ãã« (A) ç¡ãã® RGB ã€ã¡ãŒãžã§ããã®ã§ãRGB-IMAGE ãæå®ããŠããŸãã
name ã¯ã¬ã€ã€ãŒã®ååã§ãæååãªã®ã§ "" ã§å·Šå³ãå²ã¿ãŸããopacity ã¯ã¬ã€ã€ãŒã®äžéæåºŠã§ãã¬ã€ã€ãŒãã€ã¢ãã°ã«ããã¬ã€ã€ãŒäžéæåºŠã®ã¹ã©ã€ããŒã衚ããã®ãšåãã§ããmode ã¯ã¬ã€ã€ãŒã®çµåã¢ãŒãã§ãã¬ã€ã€ãŒãã€ã¢ãã°ã«ããã¬ã€ã€ãŒã¢ãŒãã«çžåœããŸããæšæºã¢ãŒã㯠NORMAL-MODE ãšæå®ããŸãã
ãã®ãããªæå®ã§äœæãããã¬ã€ã€ãŒã®çµæã¯ããã¯ãããããªã¹ãã§è¿ã£ãŠããã®ã§ car ã§å
é ãåãåºããŠããå¿
èŠããããŸãããããŠåãåºããã¬ã€ã€ãŒ ID ã layer ã«å
¥ããŠããŸããããã§ layer ãæ°ããäœæããã¬ã€ã€ãŒãæãããã«ãªããŸããã
ååŠç
9| (gimp-context-push)
9 è¡ç®ã§ã¯ããã®æç¹ã§ã®ã³ã³ããã¹ãã Gimp ã«èšæ¶ãããŠããŸãããã³ã³ããã¹ããèšæ¶ããããšããã®ã¯ãäŸãã°ãã®æã«äœ¿çšäžã®ãã©ã·ããã¿ãŒã³ãæç»è²/èæ¯è²ãªã©ãèšæ¶ãããšããããšã§ããæ¬¡ã® 11 è¡ç®ã®åŠçã§èæ¯è²ã倿ŽããŠããŸãã®ã§ã倿Žåã®ç¶æ
ãèšé²ããŠããããã®ã§ãã
ç»åã«ã¬ã€ã€ãŒãå
¥ãã
11| (gimp-context-set-background bg-color)
12| (gimp-drawable-fill layer BG-IMAGE-FILL)
13| (gimp-image-add-layer img layer -1)
11 è¡ç®ã¯èæ¯è²ã®è²ã倿ŽããŠããŸããbg-color ã¯ã¹ã¯ãªãããå®è¡ããæã«ãŠãŒã¶ãŒãæå®ããè²ã§ãããã bg-color ã«äœãå
¥ã£ãŠããã®ãå¿ããŠããŸã£ããããã®ã¹ã¯ãªããã®èª¬æã®æåã®æ¹ã«æ»ããŸãããã
12 è¡ç®ã® gimp-drawable-fill ã§ã¯ãåŒæ°ãšããŠäžãã layer ã 11 è¡ç®ã§ã»ããããè²ã® bg-color ã§å¡ãäœæ¥ãè¡ã£ãŠããŸãããã®äœæ¥ã¯èæ¯ã®è²ãã»ãããããšããæå³ã ãã§ã¯ãªããã¬ã€ã€ãŒã®ç¶æ
ãåæåãããšããæå³ãæã£ãŠããŸãããªãããšãããšãå€§æµæ°ããäœæããã¬ã€ã€ãŒã¯åæåãããŠããªããŠã©ã³ãã ãªæš¡æ§ãæãããŠããããã§ãããã®ããæ°èŠã¬ã€ã€ãŒãäœæããæã«ã¯ gimp-drawable-fill ã®åŒã³åºãã§ã¬ã€ã€ãŒãåæåããŠããå¿
èŠããããŸããè²ã§å¡ãã€ã¶ãã®ã§ã¯ãªããéæ*2ã§å¡ãã€ã¶ãããå Žåã«ã¯ TRANS-IMAGE-FILL ãå¡ãã€ã¶ãã¿ã€ãã«äžããŠãããŸãã
ãã®æç¹ã§ã¯ãŸã ç»åã«ã¬ã€ã€ãŒã¯ãããŸããããã®ãã 13 è¡ç®ã§å®éã«ç»åã«ã¬ã€ã€ãŒã远å ããŠããŸããgimp-layer-add-layer ã®èª¬æã¯æåã®ã¹ã¯ãªããã§ããŠããã®ã§ããã¡ããåç
§ããŠäžããã
åŸåŠç
15| (gimp-context-pop)
16| (gimp-display-new img)
17| (gimp-displays-flush)
18| ))
çŸåšã®èæ¯è²ã 1ïŒ è¡ç®ã§å€æŽããŠããŸã£ãããã¹ã¯ãªãããåŒã³åºãåãšã¯éã£ãŠãããããããŸããã15 è¡ç®ã§ã¯ããã 9 è¡ç®ã§ gimp-context-push ããæã®ç¶æ
ã«å
ã«æ»ããŠããŸãããã®ããã«ã¹ã¯ãªããã®éäžã§å€åããŠããŸã£ãç¶æ
ãã§ããã ãã¹ã¯ãªããã®å®è¡åã®ç¶æ
ã«æ»ããŠããããšããå§ãã§ãã
16 è¡ç®ã§ã¯äœæããç»åããã£ã¹ãã¬ã€ã«åºçŸãããŠããŸããç»åãæ°ããäœæããŠã gimp-display-new ã䜿ããŸã§ã¯å®éã®ãã£ã¹ãã¬ã€ã«ã¯è¡šç€ºãããŸãããããã¯ã¬ã€ã€ãŒãäœæããŠã gimp-image-add-layer ã䜿ããŸã§ã¯å®éã«ç»åã«ã¬ã€ã€ãŒãçŸããªãããšãšåãã§ããæ°èŠç»åãäœæããã¿ã€ãã®ã¹ã¯ãªããã§ã¯ãæ°èŠç»åã®è¡šç€ºã®ããã«ãã®åŒã³åºããå¿
èŠã«ãªããŸãã
17 è¡ç®ã¯ãã£ã¹ãã¬ã€ã®æŽæ°ã§ãã18 è¡ç®ã§ (let* ãš (define ã§å§ãŸã£ãçµããã®æ¬åŒ§ã®äºã€ããããŸãã
3.5 ããããã·ã£ããŠæåãäœãã¹ã¯ãªãã 
äžã®äºã€ã®ã¹ã¯ãªããã¯ãç»åäŸååã¹ã¯ãªãããšç¬ç«å®è¡åã¹ã¯ãªããã®äŸãšããŠåºæ¬çãªéšåããæã£ãŠããªãéåžžã«ç°¡åãªã¹ã¯ãªããã§ããããããããã§ã¯ãäžèŸã«ãå®çšçã§ãããšã¯èšããŸãããããå°ãå®éã«äœ¿ããã¹ã¯ãªãããšããŠãããããã·ã£ããŠãäœãã¹ã¯ãªãããäœããŸãããããç°¡åãªã¹ã¯ãªããã§ããããããã§ããã°ããã¹ã¯ãªããã®æžãæ¹ã®åºæ¬ã¯ãã¹ã¿ãŒããããšã«ãªãã®ã§ãä»ã®ã¹ã¯ãªãããæžãããšãã§ããããã«ãªããŸãã
3.5.1 æé ã®ç¢ºèª 
ãŸãã¹ã¯ãªããã®åã«ããã®ãããªæé ã§ããããã·ã£ããŠæåãäœãã®ãã Gimp ã§ãã£ãŠã¿ãŸãããããå
ã«ã¹ã¯ãªãããæžãèµ·ããããã«ãããšãã¹ã¯ãªããäœæã®æµããåãã£ãŠå¹çãè¯ããªããŸãã
- æ°èŠç»åäœæ
- ããã¹ããå
¥åããŠæåã¬ã€ã€ãŒãäœã
- äžã®æåã¬ã€ã€ãŒãšåãæ¡ä»¶ã§ãè²ã ãå€ããŠã·ã£ããŠã¬ã€ã€ãŒãäœã
- æåã¬ã€ã€ãŒãšã·ã£ããŠã¬ã€ã€ãŒãå察æ¹åã«å°ãããã
- ã·ã£ããŠã¬ã€ã€ãŒãã¬ãŠã·ã¢ã³ãŒããã§ãŒãã
- ã·ã£ããŠã¬ã€ã€ãŒã®äžéæåºŠãå°ãèœãšã
3.5.2 ããããã·ã£ããŠæåã®ã¹ã¯ãªãã 
ãã®ã¹ã¯ãªããäžã®ã»ãã³ãã³ ";" ã§å§ãŸãè¡ã¯ã³ã¡ã³ãæ±ãã«ãªããã¹ã¯ãªããã®å®è¡ã«ã¯åœ±é¿ãåãŒããŸãããã¹ã¯ãªãããããçšåºŠé·ããªã£ããããã®éšåãäœã®åŠçããã£ãŠããã®ããã³ã¡ã³ãè¡ãšããŠæžããŠãããšãåŸã§ã¹ã¯ãªãããèŠããšãã«åããããããªããŸãã
;; ããããã·ã£ããŠãäœãã¹ã¯ãªãã
(define (script-fu-drop-shadow-text text size font bg-color text-color)
;; 倿°å®£èš
(let* ((img (car (gimp-image-new 256 256 RGB)))
(text-layer 0)
(width 0)
(height 0)
(bg-layer 0)
(shadow-layer 0))
;; ååŠç
(gimp-image-undo-disable img)
(gimp-context-push)
;; ããã¹ãã¬ã€ã€ãŒäœã
(gimp-context-set-foreground text-color)
(set! text-layer (car (gimp-text-fontname img -1 0 0 text 20
TRUE size PIXELS font)))
;; èæ¯ã¬ã€ã€ãŒäœã
(set! width (car (gimp-drawable-width text-layer)))
(set! height (car (gimp-drawable-height text-layer)))
(gimp-image-resize img width height 0 0)
(set! bg-layer (car (gimp-layer-new img width height RGB-IMAGE
"Background" 100 NORMAL-MODE)))
(gimp-image-add-layer img bg-layer 1)
(gimp-context-set-background bg-color)
(gimp-edit-clear bg-layer)
;; ããããã·ã£ããŠã®äœæ
(gimp-context-set-foreground '(0 0 0))
(set! shadow-layer (car (gimp-text-fontname img -1 0 0 text 20
TRUE size PIXELS font)))
(gimp-channel-ops-offset shadow-layer FALSE OFFSET-TRANSPARENT 5 5)
(gimp-channel-ops-offset text-layer FALSE OFFSET-TRANSPARENT (- 5) (- 5))
(plug-in-gauss-iir2 1 img shadow-layer 20 20)
(gimp-layer-set-opacity shadow-layer 75)
;; åŸåŠç
(gimp-context-pop)
(gimp-image-undo-enable img)
(gimp-display-new img)
(gimp-displays-flush)
))
;; ã¹ã¯ãªããã®ç»é²
(script-fu-register
"script-fu-drop-shadow-text"
"Drop Shadow Text..."
"Create the drop shadow text"
"Iccii <iccii@hotmail.com>"
"Iccii"
"Jun, 2001/May, 2009"
""
SF-STRING "Text" "Script-Fu!"
SF-ADJUSTMENT "Font size (pixels)" '(100 2 1000 1 10 0 1)
SF-FONT "Font" "Dragonwick"
SF-COLOR "Background color" '(255 255 255)
SF-COLOR "Text color" '(223 8 8))
(script-fu-menu-register "script-fu-drop-shadow-text"
"<Image>/Filters/Test")
ãã®ã¹ã¯ãªãããåãããšäžã®ãããªãã€ã¢ãã°ãåºãŠããŸããå
çšãããæåãšãã©ã³ããéžæãããããã¯ã¹ãå¢ããŠããŸãããã¹ã¯ãªããã®æ©èœãè²ã
ãšå¢ããŠãã£ãŠãããæè»ã«ãªã£ãŠããŸãããã

3.5.3 äžã§ãã£ãŠããããš 
ç»é²ãšå§ãŸã
1| ;; ããããã·ã£ããŠãäœãã¹ã¯ãªãã
2| (define (script-fu-drop-shadow-text text size font bg-color text-color)
47| ;; ã¹ã¯ãªããã®ç»é²
48| (script-fu-register
49| "script-fu-drop-shadow-text"
50| "Drop Shadow Text.."
51| "Create the drop shadow text"
52| "Iccii <iccii@hotmail.com>"
53| "Iccii"
54| "Jun, 2001/May, 2009"
55| ""
56| SF-STRING "Text" "Script-Fu!"
57| SF-ADJUSTMENT "Font size (pixels)" '(100 2 1000 1 10 0 1)
58| SF-FONT "Font" "Dragonwick"
59| SF-COLOR "Background color" '(255 255 255)
60| SF-COLOR "Text color" '(223 8 8))
61|
62| (script-fu-menu-register "script-fu-drop-shadow-text"
63| "<Image>/Filters/Test")
æåã«ã¹ã¯ãªããã®ç»é²ãšãæ¬äœã®åŒã³åºãã®ãšãããã説æããŸãããã®ã¹ã¯ãªããã®é¢æ°å㯠script-fu-drop-shadow-text ã§ããå
¥åããã¯ã¹ãå¢ããŠããŸãããåºæ¬çã«ã¯ãããŸã§ãšäœãå€ããã¯ãããŸããã
ããã§å
¥åããã¯ã¹ã§ãŠãŒã¶ãŒã«æå®ãããŠããå€ã¯ãããŽãšããŠäœ¿çšããæåãš (56 è¡ç®)ãæåã®å€§ãããš (57 è¡ç®)ããã©ã³ãã®çš®é¡ãš (58 è¡ç®)ãèæ¯ãšæåã®è²ã§ã (59ã60 è¡ç®)ãããã 2 è¡ç®ã® define ã®ãšããã§ãããã text size font bg-color text-color ã®åŒæ°ãšããŠã¹ã¯ãªããæ¬äœã«æž¡ããŠããŸãã
倿°å®£èš
4| ;; 倿°å®£èš
5| (let* ((img (car (gimp-image-new 256 256 RGB)))
6| (text-layer 0)
7| (width 0)
8| (height 0)
9| (bg-layer 0)
10| (shadow-layer 0))
倿°ã¯äœ¿çšããåã«ã䜿ã倿°ã宣èšããå¿
èŠããããŸãã宣èšã®ãšãã«åæå€ãäžããããå Žåã¯å
ã«äžããŠãããåæå€ãäžããããªãå Žå㯠0 ã仮代å
¥ããŠãããŠ*3ãåŸã§ set! æ§æã䜿çšããŠå€ã代å
¥ãããšããæ¹æ³ã䜿ããŸãã
æåã«ç»åãäœããŸããRGB ã¢ãŒãã§ã256x256 ã®å€§ããã«ããŸããããã§å€§ãããæã¡æ±ºãããŠããŸã£ãŠããã®ã¯ãåŸã§ç»åã®å€§ãã (ãã£ã³ãã¹ãµã€ãº) ãå倿Žããããã§ãããã®æç¹ã§ã¯ç»å img ãå
ã«äœã£ãŠããŸãå¿
èŠããããŸãã
ãªãå
ã«ç»å img ãäœã£ãŠããŸãå¿
èŠãããããšããã°ãgimp-text-fontname ã§æåã®ã¬ã€ã€ãŒãäœãã«ã¯ãæåã¬ã€ã€ãŒãå
¥ããå Žæãšãªãç»åãå
ã«ååšããŠããå¿
èŠãããããã§ãã
ååŠç
12| ;; ååŠç
13| (gimp-image-undo-disable img)
14| (gimp-context-push)
13 è¡ç®ã¯ãã¢ã³ãã¥ã¹ã¿ãã¯ãç¡å¹ã«ãã颿°ã§ããããã«ã€ããŠã¯åŸè¿°ããŸãã14 è¡ç®ã¯ã³ã³ããã¹ãã®ä¿åãè¡ã£ãŠããŸãã
ç»åãšããŽã¬ã€ã€ãŒäœã
16| ;; ããã¹ãäœã
17| (gimp-context-set-foreground text-color)
18| (set! text-layer (car (gimp-text-fontname img -1 0 0 text 20
19| TRUE size PIXELS font)))
gimp-text-fontname ãåŒã³åºããšããã®æç¹ã§ã®æç»è²ã䜿ã£ãŠæåã¬ã€ã€ãŒãäœããŸããæåãäœãåã«æç»è²ã®è²ãæå®ããæåã®è²ã«å€æŽããŠãããªããã°ãªããªãã®ã§ãçŽåã® 17 è¡ç®ã§ gimp-context-set-foreground ãåŒã³åºããŠããŸãã
gimp-text-fontname 颿°ã¯æå®ãã倧ããã®ãã©ã³ã (ããã§ã¯ size) ã§æåå text ã®æåãå
¥ã£ãã¬ã€ã€ãŒãäœããŸããããã§ã¯äžäžå·Šå³ã« 20 ãã¯ã»ã«ã ãã®äœçœããããããªå€§ãããèªåçã«èšç®ããŠã¬ã€ã€ãŒãäœã£ãŠãããŸãããã®ãããã©ã³ããµã€ãºã倧ããããŠãåžžã« 20 ãã¯ã»ã«ã®äœçœãããããã¹ãã¬ã€ã€ãŒãã§ããŸãã
ãªãµã€ãºãšèæ¯ã¬ã€ã€ãŒäœã
21| ;; èæ¯ã¬ã€ã€ãŒäœã
22| (set! width (car (gimp-drawable-width text-layer)))
23| (set! height (car (gimp-drawable-height text-layer)))
24| (gimp-image-resize img width height 0 0)
25| (set! bg-layer (car (gimp-layer-new img width height RGB-IMAGE
26| "Background" 100 NORMAL-MODE)))
27| (gimp-image-add-layer img bg-layer 1)
28| (gimp-context-set-background bg-color)
29| (gimp-edit-clear bg-layer)
ãã®æç¹ã§ç»åã«ã¯ããã¹ãã¬ã€ã€ãŒãååšããã®ã§ãããç»åã®å¢çã®å€§ãããšæåã¬ã€ã€ãŒã®å¢çã®å€§ããã¯äžèŽããŠããŸãããæåã¬ã€ã€ãŒã®å¢çã®å€§ãããæ±ããŠãç»åã®å€§ãããæåã¬ã€ã€ãŒã®å€§ããã«åãããªããã°ãªããŸãããgimp-drawable-width/height ã§ããã¢ãã«ã®å€§ãããæ±ããããšãã§ããŸãããã㊠gimp-image-resize ã§ç»åã®å€§ãããå倿ŽããŠããŸãã
ãã®ããã«ãããã¹ãã®å€§ããã«å¿ãããµã€ãºã®ç»åãäœãããå Žåã¯ãgimp-image-new ã§ä»»æã®å€§ããã®ç»åãä»®ã«äœã£ãŠãã â ããã¹ãã¬ã€ã€ãŒãäœã£ãŠãµã€ãºãèªåäœæããŠããã â ããã¹ãã¬ã€ã€ãŒã®å€§ããã調ã¹ãŠ â gimp-image-resize ã§ç»åã®å€§ãããåå€æŽ ãšããäžé£ã®æµãã¯å®çªãªã®ã§èŠããŠãããšããã§ãã
ãŸã ç»åã«ã¯æåã¬ã€ã€ãŒã ãããååšãããããããã·ã£ããŠã®ã¬ã€ã€ãŒãšèæ¯ã¬ã€ã€ãŒãååšããŠããŸããããã®ããèæ¯ã¬ã€ã€ãŒããäœãããšã«ããŸããããgimp-image-add-layer ã§èæ¯ã¬ã€ã€ãŒã远å ããå Žæã¯äžçªäžã§ããã position ã«ã¯ 1 ãäžããŠãããŸãã
ããããã·ã£ããŠã¬ã€ã€ãŒäœã
31| ;; ããããã·ã£ããŠã®äœæ
32| (gimp-context-set-foreground '(0 0 0))
33| (set! shadow-layer (car (gimp-text-fontname img -1 0 0 text 20
34| TRUE size PIXELS font)))
35| (gimp-channel-ops-offset shadow-layer FALSE OFFSET-TRANSPARENT 5 5)
36| (gimp-channel-ops-offset text-layer FALSE OFFSET-TRANSPARENT (- 5) (- 5))
37| (plug-in-gauss-iir2 1 img shadow-layer 20 20)
38| (gimp-layer-set-opacity shadow-layer 75)
ããããã·ã£ããŠã®ã¬ã€ã€ãŒãäœãæ¹æ³ã¯ããã€ãèããããŸãããä»åã¯æåã¬ã€ã€ãŒãšå
šãåãããã«ã㊠(äœãè²ã ãã¯åœ±ã£ãœãé»ã«å€ããŠ) äœãããšã«ããŸããããããããšæåã¬ã€ã€ãŒãšåãå Žæã«éãªãããã«ããŠã·ã£ããŠã¬ã€ã€ãŒãã§ããŸãã
æåãšåœ±ãããã¿ãªãšéãªã£ãŠããã®ã¯ãŸããã®ã§ãgimp-channel-ops-offset ã§ããããå³äžãšå·Šäžã«å°ãã ãããããŠè·é¢ãäœããŸããããããŠã·ã£ããŠã¬ã€ã€ãŒã«ã¬ãŠã·ã¢ã³ãŒãã (IIR) ããããŸãã (37 è¡ç®)ããã®ç¶æ
ã§ã¯ãŸã ã·ã£ããŠãã¯ãããªããããŠããã®ã§ãã¬ã€ã€ãŒã®äžéæåºŠã 75% ã«äžããŠãããŸãã (38 è¡ç®)ã
åŸåŠç
40| ;; åŸåŠç
41| (gimp-context-pop)
42| (gimp-image-undo-enable img)
43| (gimp-display-new img)
44| (gimp-displays-flush)
45| ))
åŸåŠçã¯å€§äœã©ã®ã¹ã¯ãªããã§ãããã»ã©å€ãããªãããã§ããã³ã³ããã¹ãã®ç¶æ
ãã¹ã¯ãªããå®è¡åã«æ»ããŠããã£ã¹ãã¬ã€ãæŽæ°ããŸãã
3.5.4 ã¢ã³ã㥠
ããæ¬æ Œçãªã¹ã¯ãªãããæžããªããã¢ã³ãã¥åŠçã«ãçæããããã«ããŸããããä»åã®ã¹ã¯ãªããã§ã¢ã³ãã¥åŠçãè¡ã£ãŠããã®ã¯ãã®äºè¡ã§ãã
13| (gimp-image-undo-disable img)
42| (gimp-image-undo-enable img)
ããã¯ç»å img ã®åŠçãã¢ã³ãã¥ã¹ã¿ãã¯ã«è¿œå ããªã/ãããšãããã®ã§ããã¯ããã«ã¢ã³ãã¥ãç¡å¹ã«ããåŸã§æå¹ã«ããŠããŸããã€ãŸãã13 è¡ç®ã® gimp-image-unod-disable ãã 42 è¡ç®ã® gimp-image-undo-enable ã§å²ãŸãããšãããŸã§ã®åŠçãã¢ã³ãã¥ãããªããšããããšã§ãã
ãããã®ã¢ã³ãã¥åŠçãè¡ããªããã°ãã¹ã¯ãªãããå®è¡ããåŸã®ç»åã§ã¢ã³ãã¥æäœ (Ctrl-Z) ãããæã«ã¯ãäžååã®åŠçã¥ã€ç»åã®ç¶æ
ãæ»ã£ãŠãããŸããéåžžããã¯å¥œãŸããããšã§ã¯ãããŸããããã®ããã¹ã¯ãªããã®å®è¡äžã«ã¯ã¢ã³ãã¥ãã§ããªãããã«ããŠããã®ã§ãã
ããããããã²ãšãŸãšãŸãã®åŠçãäžåºŠã®ã¢ã³ãã¥æäœã§è¡ããããšããå ŽåããããŸããã¢ã³ãã¥æäœã«ãã£ãŠç»åã®ããç¶æ
ã«æ»ããããããªæã§ãããã®ããã®é¢æ°ãçšæãããŠããŸãã
(gimp-image-undo-group-start img)
(gimp-image-undo-group-end img)
ããã¯ç»å img ã«ãã㊠gimp-image-undo-group-start ãã gimp-image-undo-group-end ãŸã§ã«è¡ã£ãåŠçãäžåã®ã¢ã³ãã¥æäœã§è¡ããããã«ã°ã«ãŒãåãããã®ã§ããã€ãŸãããã®éã«æãŸããåŠçã¯äžåã®åŠçãšããŠã¢ã³ãã¥ã¹ã¿ãã¯ã«åããããã®ã§ããã¢ã³ã㥠(Ctrl-Z) ãããš gimp-image-undo-group-start ãåŒã³åºããæç¹ã«æ»ãããšãã§ããŸãã
3.5.5 ãã©ã°ã€ã³ã®åŒã³åºãæ¹æ³ 
ãããŸã§ã®ã¹ã¯ãªããã®äœæ¥ã§ã¯ãã¹ãŠ GIMP æ¬äœã§çšæãããŠãã颿°ã ãã䜿ã£ãŠããŸãããã37 è¡ç®ã§ã¯åã㊠plug-in-gauss-iir2 ãã©ã°ã€ã³ãåŒã³åºããŠããŸãããã©ã°ã€ã³ã¯ GIMP æ¬äœãšã¯å¥ã®ããã°ã©ã ã§ããããã©ã°ã€ã³ãå©çšããå Žåã GIMP æ¬äœãæäŸããŠãã颿°ãšã»ãšãã©åãããã«å©çšããããšãã§ããŸãã
ãã©ã°ã€ã³ãåŒã³åºãå Žåã«ãããŸã§ãšéãç¹ã¯ãã€ã³ã¿ã©ã¯ãã£ãã«åŒã³åºãã®ããéã€ã³ã¿ã©ã¯ãã£ãã«åŒã³åºãã®ããšããéãã§ãã
- ã€ã³ã¿ã©ã¯ãã£ãã¢ãŒã
- ãã©ã°ã€ã³ãåŒã³åºããšããã©ã¡ãŒã¿å
¥åã®ããã®ãã€ã¢ãã°ãåºã
- éã€ã³ã¿ã©ã¯ãã£ãã¢ãŒã
- ãã©ã¡ãŒã¿å
¥åã®ããã®ãã€ã¢ãã°ã¯åºãããã©ã°ã€ã³ãåŒã³åºããšãã«ã¯ãã©ã¡ãŒã¿ããã£ãããšæå®ããŠããå¿
èŠããã
éåžžãã©ã°ã€ã³ãåŒã³åºããšãã«ã¯éã€ã³ã¿ã©ã¯ãã£ãã¢ãŒããå©çšããã®ãäžè¬çã§ããã®ãããã¡ããšãã©ã¡ãŒã¿ãäžããŠããå¿
èŠããããŸãã
ã€ã³ã¿ã©ã¯ãã£ãã¢ãŒãã§åŒã³åºããšãã«ã¯ 0 ããéã€ã³ã¿ã©ã¯ãã£ãã¢ãŒãã§åŒã³åºããšãã«ã¯ 1 ãæå®ããŸãã0 ãš 1 ã®ä»£ããã« RUN-INTERACTIVE ãš RUN-NONINTERACTIVE ã䜿ãããšãã§ããŸãã
ãã©ã°ã€ã³ãåŒã³åºããšãã®äžè¬çãªæžåŒ:
(plug-in-[ãã©ã°ã€ã³å] run-mode image drawable paramaters ...)
run-mode ãã€ã³ã¿ã©ã¯ãã£ãã¢ãŒãã§åŒã³åºãã®ãã©ããã§ãimageãdawableãã«ç¶ããŠåŒæ°ãããã€ãç¶ãå Žåãå€ãã§ããã©ã®åŒæ°ãå¿
èŠãªã®ããããã·ãŒãžã£ãã©ãŠã¶ã§ãã£ãããšç¢ºèªããŠãããŸãããã
3.6 ã¹ã¯ãªããã®çºå± 
ä»åã®ããããã·ã£ããŠæåã®ã¹ã¯ãªããã¯ãããã»ã©è¯ããã®ã§ã¯ãããŸãããæåã®å€§ãããããã©ã«ãããã倧ããããæãæåãšæ¯ã¹ãŠåœ±ã®ãã©ã³ã¹ãæªããªã£ãŠããŸããŸããèæ¯ãšæåã®è²ãäžè²ã¥ã€ãšããã®ãå調ã§ããã
ã·ã£ããŠã¬ã€ã€ãŒãè²ã
ãšçްãã調ç¯ããããšãã§ããããã«ããããæåãèæ¯ã«ã°ã©ããŒã·ã§ã³ããã¿ãŒã³å¡ããè¡ããããã«ãçã®å·¥å€«ã§ã¹ã¯ãªãããçºå±ãããŠã¿ãŠäžãããããã§çºå±äŸãæžãããšãã§ããŸãããããã¯ããªããžã®å®¿é¡ãšããŠãããŸããæ¯éææŠããŠã¿ãŠäžããã
ã°ã©ããŒã·ã§ã³ããã¿ãŒã³ã䜿ã£ãæã«ã¯ãè²ã倿Žããæã«ãã£ãããã«ãã¹ã¯ãªããã®å®è¡ã®ååŸã§ã°ã©ããŒã·ã§ã³ããã¿ãŒã³ãå
ã«æ»ãããã«ããŠã¿ãŠäžãããããã»ã©é£ããã¯ãªããšæããŸãã