Scheme»y¨¥ªº°ò¥»»yªk
¥»¤å¥Dn°Ñ¦ÒGimp User Manual Chapter 43¡AMike Terry¡¦s Black School Of Script-Fu¡AAuthor Mike Terry¡C
¤@¡B
«e¨¥¡G
Ãö©óScript-Fu ¨Ï¥ÎGIMPªºµøµ¡¬É±¨Ó³B²z¼v¹³ªº¥ô¦ó°Ê§@³£¦³¬Û¹ïÀ³ªº¨ç¼Æ¡]function or procedure ¡^¡A°õ¦æ[GIMP] ->Xtns -> DB Browser²£¥Í¤@DB Browser¹ï¸Ü²°¡A³o¹ï¸Ü²°´£¨Ñ¤FGIMP©Ò¦³¨ç¼Æªº¿é¤JÅܼƪº¸ê®Æ§ÎºA¡B¿é¥XÅܼƪº¸ê®Æ§ÎºA¡B¸Ó¨ç¼Æªº¥\¯à¡K..µ¥¬ÛÃö¸ê°T¡C¦p¡Ggimp-edit-copy¡Bgimp-edit-paste¡Bgimp-edit-cut¹ïÀ³ªº«K¬O³Ì±`¨Ï¥Îªº¼v¹³½Æ»s¡B¼v¹³¶K¤W¡B¼v¹³°Å¤Uµ¥°Ê§@¡C Script-Fu©Ò¨Ï¥Îªº»y¨¥¬OScheme¤@ºØÃþ¦üLispªº»y¨¥¡C¨CÓ¦bGIMPµ{¦¡¥Dµe±¿ï³æªºScript-Fu¡A©Î¼v¹³ªº¯B°Ê¿ï³æªºScript-Fu³£¥i¦bDB Browser¹ï¸Ü²°§ä±o¨ì¹ïÀ³ªº¨ç¼Æ¡C[GIMP] -> Xtns -> Script-Fu -> Web Page Themes -> Gimp.Org -> Big Header³o°Ê§@©Ò¹ïÀ³ªº¨ç¼Æ¬°script-fu-big-header-gimp-org¡C GIMPªºScript-Fu´N¦n¹³UNIXªºShell Script¡A³z¹LScript-FuªºScheme»y¨¥§A¥i¥H²Õ¦XGIMP³B²z¼v¹³ªº°Ê§@¹F¨ì§A·Qnªº¥\¯à¡AÅý³o¨Ç³B²z¼v¹³ªº°Ê§@¦Û°Ê¤Æ¡C ¾Ç²ßScript-Fuªº³Ì¦n¤èªk´N¬O¾\Ūgimp/scripts¥Ø¿ý¤Uªº*.scmÀÉ¡C |
¤G¡BScript-Fu Console¡G
Script-Fu Console¹ï¸Ü²° |
°õ¦æ[GIMP] -> Xtrns -> Script-Fu -> Console·|¥X²{Script-Fu Console¹ï¸Ü²°¡C§A¥i¥H¦bCurrent Command¤å¦r¿é¤J®Ø¤º¿é¤J§An°õ¦æªº©R¥O¡C Scheme»y¨¥¨Ã¨S¦³«Ü¦nªº°£¿ù¤u¨ã¡A³y¦¨¤F«á¨Ó¦³¤Hµo®iPerl¡BTCL¡BPython¨Ó±±¨îGimpªº¨ç¦¡¡C §A¥i¥H¦bScript-Fu Console¹ï¸Ü²°¤º½m²ßSchemeªº»yªk¡C |
|
¦bCurrent Command¤å¦r¿é¤J®Ø¤º¿é¤J (* 3 5) ±o¨ì 15 |
|
¿é¤J (* 6 7) ±o¨ì 13 |
|
¿é¤J ((- (* 3 5) (+ 6 7)) ±o¨ì 2 |
|
(let* ((x 3) (y 5))(* x y)) ±o¨ì 15 ¥»¦¡¤l¥i¬Ý¦¨¡G (let* ( (x 3) (y 5) ) (* x y) ) |
|
¿é¥X (* x y) ±o¨ì ¿ù»~°T®§ Â÷¶}let* ()ªº¬A¸¹¥~¡Aì³]©wªº°Ï°ìÅܼÆx¡By´NÅܦ¨¨S¦³«Å§i¡C¬G¦³¿ù»~°T®§ |
Áä¤J(script-fu-slime-logo "Gimp" 72 "-*-ComicsCarToon-*-r-*-*-24-*-*-*-p-*-*-*") ¬Û·í©ó°õ¦æ[image] -> Script-Fu -> Logo -> Slime¡A¨Ï¥Î¹w³]ªº°Ñ¼Æ³]©w¡C ±o¨ì |
|
|
Áä¤J(script-fu-gradient-example 400 30 ) ¬Û·í©ó°õ¦æ[image] -> Script-Fu -> ¨Ï¥Î¹w³]ªº°Ñ¼Æ³]©w¡C ±o¨ì¥ª¹Ï¡C |
¤T¡BSchemeªº»yªk¡G
¥Ñ«e¤@¸`ªº½m²ß¬O§_¦³µo²{Scheme»yªkªº³W«h¡C
§¹¾ãªº±Ôz (let* ( (x 3) (y 5) ) (* x y) ) |
l ¬A¸¹¡]¡^¯S§O¦h l ¨C¤@Ó§¹¾ãªº±Ôz¡]statement¡^³£n¥Î¬A¸¹¡]¡^¬A°_¨Ó¡C l ¬A¸¹¡]¡^¤ºªº²Ä¤@¶µ¤@©w¬O¨ç¼Æ¦WºÙ©Î¹Bºâ¤l¡C |
µù¸Ñ ¡F |
l ¤À¸¹¡F¬°µù¸Ñ²Å¸¹¡C |
¹Bºâ¦¡ (* 3 5)
|
l ¹Bºâ¦¡¬°«e§Ç¡]prefix¡^¹Bºâ¦¡¡A l (* 3 5)¬Û·í©ó3*5 l 3*5¬O¤¤§Ç¡]infix¡^¹Bºâ¦¡ l Y§A¤£²ßºD«e§Çªí¥Ü¦¡¡A§A¥i¥H±N¹Bºâ¤lµø¬°¨ç¼Æ¡C l * µø¬°¨ç¼Æ¡A3¡B5µø¬°°Ñ¼Æ¡C l ¦b¤¤§Ç¹Bºâ¦¡3*5¡A ¹Bºâ¤l*»P¹Bºâ¤¸3¡B5¤¤¶¡¤£·|¦³ªÅ¥Õ¡]space¡^¡F¦ý«e§Ç¹Bºâ¦¡(* 3 5)¡A*»P3¤¤¶¡¤@©w¦³ªÅ¥Õ¡C |
¹Bºâ¦¡ (* 6 7) |
l (* 6 7) ¬Û·í©ó6*7 |
¹Bºâ¦¡ ((- (* 3 5) (+ 6 7)) |
l ((- (* 3 5) (+ 6 7)) ¬Û·í©ó3*5-6*7 |
°Ï°ìÅÜ¼Æ (let* ( (x 3) (y 5) ) (* x y) ) |
l ¨Ï¥Î let* ()¨Ó«Å§i»P¨Ï¥Î°Ï°ìÅÜ¼Æ l »yªk¡G(let* (variables) expressions) l ¥ª¦¡¡G³]©w x=3¡By=5¡A¦Ó«á°õ¦æ¹Bºâx*y l Â÷¶}let* ()ªº¬A¸¹¥~¡Aì³]©wªº°Ï°ìÅܼƴNÅܦ¨¨S¦³«Å§i¡C |
¨ç¼Æ©w¸q»P«Å§i (define (Multiply X Y) (* X Y) ) ¨ç¼Æ¨Ï¥Î (Multiply 3 5) ±o¨ì15 |
l ¨Ï¥Îdefine¨Ó©w¸q¨ç¼Æ l »yªk¡G(define (name param-list) expressions)¡Anameªí¨ç¼Æ¦WºÙ¡Bparam-listªí¿é¤J¨ç¼Æªº°Ñ¼Æ¡C l ¥ª¦¡¡G³]©w¤@Ó¼ªk¨ç¼Æ l °Ñ¼Æ«¬ºA¡G°Ñ¼Æ¤£¥Î³]©w°Ñ¼Æ«¬ºA¡A´X¥G©Ò¦³script»y¨¥³£¬O¦p¦¹¡C l ¦^¶ÇÈ¡G¨ç¼Æ¤ºªº³Ì«á¤@Ó±Ôz¬°¦^¶ÇÈ¡C l (Multiply (Multiply 3 5) 2)·|±o¨ì¦h¤Ö¡H |
¦ê¦C ¡¥(1 6 8) |
l ¨Ï¥ÎºJ¸¹ ¡¥¡]apostrophe¡^¨Ó©w¸q¦ê¦C l »yªk¡G¡¥(a b c) l ºJ¸¹ ¡¥ «ü¥Ü¦b¬A¸¹¡]¡^¤ºªº¬O¦ê¦C¦Ó¤£¬O¤@Ó³æÈ l ¦ê¦C¡]list¡^¬Û·í©ó°}¦C¡AÀx¦s¦hÓ³æÈ¡C |
(let* (x 5) x) |
l ¦bConsole¹ï¸Ü²°Áä¤J¥ª¦¡±o¨ì5 |
(let* (x ¡¥(1 6 8)) x) |
l ¦bConsole¹ï¸Ü²°Áä¤J¥ª¦¡±o¨ì(1 6 8) |
(let* (x ¡¥(¡§Gimp¡¨ 1.2 ¡§v¡¨)) |
l ¦ê¦Cªºì¯À¥i¥H²V¦X¦UºØ¸ê®Æ§ÎºA |
¦ê±µ (cons ¡§Gimp¡¨ (1 6 8) ) |
l ¨Ï¥Îcons¨Ó³sµ²¦ê¦C²£¥Í·sªº¦ê¦C l ¥ª¦¡¡G¿é¥Xµ²ªG(¡§Gimp¡¨ 1 6 8) |
§ì¨ú¦ê¦C¤º¤¸¯À (car ¡¥(¡§Gimp¡¨ 2 3 4)) |
l car§ì¨ú¦ê¦C¤º²Ä¤@Ó¤¸¯À l ¥ª¦¡¡G¿é¥Xµ²ªG¡¨Gimp¡¨ |
(cdr ¡¥(¡§Gimp¡¨ 1 6 8)) |
l cdr§ì¨ú¦ê¦C¤º°£²Ä¤@Ó¤¸¯À¥~ªº¨ä¾l¤¸¯À¡C l ¥ª¦¡¡G¿é¥Xµ²ªG(2 3 4) |
(car (cdr ¡¥(¡§Gimp¡¨ 1 6 8))) |
l car(cdr())§ì¨ú²Ä¤GÓ¤¸¯À l ¥ª¦¡¡G¿é¥Xµ²ªG2 |