Scheme»y¨¥ªº°ò¥»»yªk

 

        ¥»¤å¥D­n°Ñ¦Ò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·Q­nªº¥\¯à¡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§A­n°õ¦æªº©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