GIMP Script-fu

Hex Artifact Content
Login

Artifact 19d6dac9e00502483a4548b3ab3942864a1344cf:


0000: 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69  ; This program i
0010: 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b  s free software;
0020: 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72   you can redistr
0030: 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20  ibute it and/or 
0040: 6d 6f 64 69 66 79 0a 3b 20 69 74 20 75 6e 64 65  modify.; it unde
0050: 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74  r the terms of t
0060: 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50  he GNU General P
0070: 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73  ublic License as
0080: 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 20   published by.; 
0090: 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72  the Free Softwar
00a0: 65 20 46 6f 75 6e 64 61 74 69 6f 6e 3b 20 65 69  e Foundation; ei
00b0: 74 68 65 72 20 76 65 72 73 69 6f 6e 20 32 20 6f  ther version 2 o
00c0: 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f  f the License, o
00d0: 72 0a 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74  r.; (at your opt
00e0: 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76  ion) any later v
00f0: 65 72 73 69 6f 6e 2e 0a 3b 0a 3b 20 54 68 69 73  ersion..;.; This
0100: 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74   program is dist
0110: 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68  ributed in the h
0120: 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c  ope that it will
0130: 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 20 62 75   be useful,.; bu
0140: 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41  t WITHOUT ANY WA
0150: 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20  RRANTY; without 
0160: 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64  even the implied
0170: 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 20 4d   warranty of.; M
0180: 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f  ERCHANTABILITY o
0190: 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20  r FITNESS FOR A 
01a0: 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f  PARTICULAR PURPO
01b0: 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 20 47  SE.  See the.; G
01c0: 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69  NU General Publi
01d0: 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f  c License for mo
01e0: 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 20 54  re details...; T
01f0: 68 69 73 20 73 63 72 69 70 74 20 63 72 65 61 74  his script creat
0200: 65 73 20 61 20 6e 65 77 20 6c 61 79 65 72 20 6f  es a new layer o
0210: 6e 20 77 68 69 63 68 20 63 6f 6e 74 69 67 75 6f  n which contiguo
0220: 75 73 20 72 65 67 69 6f 6e 73 20 6f 66 20 74 68  us regions of th
0230: 65 0a 3b 20 73 65 6c 65 63 74 69 6f 6e 20 61 72  e.; selection ar
0240: 65 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68  e filled with th
0250: 65 20 6d 65 61 6e 20 28 61 76 65 72 61 67 65 29  e mean (average)
0260: 20 76 61 6c 75 65 20 6f 66 20 74 68 61 74 20 72   value of that r
0270: 65 67 69 6f 6e 2e 0a 3b 20 0a 3b 20 53 70 65 63  egion..; .; Spec
0280: 69 61 6c 20 74 68 61 6e 6b 73 20 74 6f 20 52 6f  ial thanks to Ro
0290: 62 20 41 6e 74 6f 6e 69 73 68 65 6e 20 66 6f 72  b Antonishen for
02a0: 20 70 72 6f 76 69 64 69 6e 67 20 6f 70 74 69 6d   providing optim
02b0: 69 7a 61 74 69 6f 6e 73 20 61 6e 64 0a 3b 20 6d  izations and.; m
02c0: 61 6b 69 6e 67 20 74 68 65 20 6f 70 65 72 61 74  aking the operat
02d0: 69 6f 6e 20 55 4e 44 4f 2d 61 62 6c 65 0a 0a 28  ion UNDO-able..(
02e0: 64 65 66 69 6e 65 20 28 73 63 72 69 70 74 2d 66  define (script-f
02f0: 75 2d 73 67 2d 6d 65 61 6e 2d 66 69 6c 6c 20 6f  u-sg-mean-fill o
0300: 72 69 67 2d 69 6d 61 67 65 20 64 72 61 77 61 62  rig-image drawab
0310: 6c 65 29 0a 20 20 28 6c 65 74 2a 20 28 0a 20 20  le).  (let* (.  
0320: 20 20 20 20 28 77 69 64 74 68 20 28 63 61 72 20      (width (car 
0330: 28 67 69 6d 70 2d 69 6d 61 67 65 2d 77 69 64 74  (gimp-image-widt
0340: 68 20 6f 72 69 67 2d 69 6d 61 67 65 29 29 29 0a  h orig-image))).
0350: 20 20 20 20 20 20 28 68 65 69 67 68 74 20 28 63        (height (c
0360: 61 72 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 68  ar (gimp-image-h
0370: 65 69 67 68 74 20 6f 72 69 67 2d 69 6d 61 67 65  eight orig-image
0380: 29 29 29 0a 20 20 20 20 20 20 28 6f 72 69 67 2d  ))).      (orig-
0390: 73 65 6c 65 63 74 69 6f 6e 20 30 29 0a 20 20 20  selection 0).   
03a0: 20 20 20 28 6c 61 79 65 72 20 30 29 0a 20 20 20     (layer 0).   
03b0: 20 20 20 28 72 61 77 2d 73 65 6c 65 63 74 69 6f     (raw-selectio
03c0: 6e 20 30 29 0a 20 20 20 20 20 20 28 73 65 6c 65  n 0).      (sele
03d0: 63 74 69 6f 6e 20 30 29 0a 20 20 20 20 20 20 28  ction 0).      (
03e0: 78 20 30 29 0a 20 20 20 20 20 20 28 79 20 30 29  x 0).      (y 0)
03f0: 0a 20 20 20 20 20 20 28 62 6f 75 6e 64 73 20 27  .      (bounds '
0400: 28 29 29 20 20 20 20 20 0a 20 20 20 20 20 20 28  ())     .      (
0410: 6f 72 69 67 2d 64 72 61 77 61 62 6c 65 20 64 72  orig-drawable dr
0420: 61 77 61 62 6c 65 29 0a 20 20 20 20 20 20 28 69  awable).      (i
0430: 6d 61 67 65 20 28 63 61 72 20 28 67 69 6d 70 2d  mage (car (gimp-
0440: 69 6d 61 67 65 2d 64 75 70 6c 69 63 61 74 65 20  image-duplicate 
0450: 6f 72 69 67 2d 69 6d 61 67 65 29 29 29 0a 20 20  orig-image))).  
0460: 20 20 20 20 28 64 72 61 77 61 62 6c 65 20 28 63      (drawable (c
0470: 61 72 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 67  ar (gimp-image-g
0480: 65 74 2d 61 63 74 69 76 65 2d 6c 61 79 65 72 20  et-active-layer 
0490: 69 6d 61 67 65 29 29 29 0a 20 20 20 20 20 20 28  image))).      (
04a0: 62 75 66 66 65 72 20 22 73 67 6d 66 62 75 66 66  buffer "sgmfbuff
04b0: 65 72 22 29 0a 20 20 20 20 20 20 28 73 65 6c 65  er").      (sele
04c0: 63 74 69 6f 6e 2d 64 72 61 77 61 62 6c 65 20 30  ction-drawable 0
04d0: 29 0a 20 20 20 20 20 20 29 0a 20 20 20 0a 20 20  ).      ).   .  
04e0: 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 75 6e    (gimp-image-un
04f0: 64 6f 2d 67 72 6f 75 70 2d 73 74 61 72 74 20 6f  do-group-start o
0500: 72 69 67 2d 69 6d 61 67 65 29 0a 20 20 20 20 28  rig-image).    (
0510: 67 69 6d 70 2d 69 6d 61 67 65 2d 75 6e 64 6f 2d  gimp-image-undo-
0520: 64 69 73 61 62 6c 65 20 69 6d 61 67 65 29 0a 20  disable image). 
0530: 20 20 20 28 67 69 6d 70 2d 63 6f 6e 74 65 78 74     (gimp-context
0540: 2d 70 75 73 68 29 0a 20 20 20 20 28 73 65 74 21  -push).    (set!
0550: 20 72 61 77 2d 73 65 6c 65 63 74 69 6f 6e 20 28   raw-selection (
0560: 63 61 72 20 28 67 69 6d 70 2d 73 65 6c 65 63 74  car (gimp-select
0570: 69 6f 6e 2d 73 61 76 65 20 69 6d 61 67 65 29 29  ion-save image))
0580: 29 0a 20 20 20 20 28 73 65 74 21 20 6f 72 69 67  ).    (set! orig
0590: 2d 73 65 6c 65 63 74 69 6f 6e 20 28 63 61 72 20  -selection (car 
05a0: 28 67 69 6d 70 2d 73 65 6c 65 63 74 69 6f 6e 2d  (gimp-selection-
05b0: 73 61 76 65 20 6f 72 69 67 2d 69 6d 61 67 65 29  save orig-image)
05c0: 29 29 0a 20 20 20 20 28 73 65 74 21 20 73 65 6c  )).    (set! sel
05d0: 65 63 74 69 6f 6e 20 28 63 61 72 20 28 67 69 6d  ection (car (gim
05e0: 70 2d 63 68 61 6e 6e 65 6c 2d 63 6f 70 79 20 72  p-channel-copy r
05f0: 61 77 2d 73 65 6c 65 63 74 69 6f 6e 29 29 29 0a  aw-selection))).
0600: 20 20 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d      (gimp-image-
0610: 61 64 64 2d 63 68 61 6e 6e 65 6c 20 69 6d 61 67  add-channel imag
0620: 65 20 73 65 6c 65 63 74 69 6f 6e 20 2d 31 29 0a  e selection -1).
0630: 20 20 20 20 28 67 69 6d 70 2d 73 65 6c 65 63 74      (gimp-select
0640: 69 6f 6e 2d 6e 6f 6e 65 20 69 6d 61 67 65 29 0a  ion-none image).
0650: 20 20 20 20 28 67 69 6d 70 2d 74 68 72 65 73 68      (gimp-thresh
0660: 6f 6c 64 20 73 65 6c 65 63 74 69 6f 6e 20 31 32  old selection 12
0670: 37 20 32 35 35 29 0a 20 20 20 20 28 67 69 6d 70  7 255).    (gimp
0680: 2d 69 6d 61 67 65 2d 73 65 74 2d 61 63 74 69 76  -image-set-activ
0690: 65 2d 6c 61 79 65 72 20 69 6d 61 67 65 20 64 72  e-layer image dr
06a0: 61 77 61 62 6c 65 29 0a 20 20 20 20 28 73 65 74  awable).    (set
06b0: 21 20 6c 61 79 65 72 20 28 63 61 72 20 28 67 69  ! layer (car (gi
06c0: 6d 70 2d 6c 61 79 65 72 2d 6e 65 77 2d 66 72 6f  mp-layer-new-fro
06d0: 6d 2d 64 72 61 77 61 62 6c 65 20 64 72 61 77 61  m-drawable drawa
06e0: 62 6c 65 20 69 6d 61 67 65 29 29 29 0a 20 20 20  ble image))).   
06f0: 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 61 64 64   (gimp-image-add
0700: 2d 6c 61 79 65 72 20 69 6d 61 67 65 20 6c 61 79  -layer image lay
0710: 65 72 20 2d 31 29 0a 20 20 20 20 28 67 69 6d 70  er -1).    (gimp
0720: 2d 6c 61 79 65 72 2d 61 64 64 2d 61 6c 70 68 61  -layer-add-alpha
0730: 20 6c 61 79 65 72 29 0a 20 20 20 20 28 67 69 6d   layer).    (gim
0740: 70 2d 64 72 61 77 61 62 6c 65 2d 66 69 6c 6c 20  p-drawable-fill 
0750: 6c 61 79 65 72 20 54 52 41 4e 53 50 41 52 45 4e  layer TRANSPAREN
0760: 54 2d 46 49 4c 4c 29 0a 20 20 20 20 28 67 69 6d  T-FILL).    (gim
0770: 70 2d 73 65 6c 65 63 74 69 6f 6e 2d 6c 6f 61 64  p-selection-load
0780: 20 73 65 6c 65 63 74 69 6f 6e 29 0a 20 20 20 20   selection).    
0790: 28 73 65 74 21 20 73 65 6c 65 63 74 69 6f 6e 2d  (set! selection-
07a0: 64 72 61 77 61 62 6c 65 20 28 63 61 72 20 28 67  drawable (car (g
07b0: 69 6d 70 2d 69 6d 61 67 65 2d 67 65 74 2d 73 65  imp-image-get-se
07c0: 6c 65 63 74 69 6f 6e 20 69 6d 61 67 65 29 29 29  lection image)))
07d0: 0a 20 20 20 20 28 77 68 69 6c 65 20 28 3c 20 79  .    (while (< y
07e0: 20 68 65 69 67 68 74 29 0a 20 20 20 20 20 20 28   height).      (
07f0: 77 68 69 6c 65 20 28 3c 20 78 20 77 69 64 74 68  while (< x width
0800: 29 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 3e  ).        (if (>
0810: 20 28 63 61 72 20 28 67 69 6d 70 2d 73 65 6c 65   (car (gimp-sele
0820: 63 74 69 6f 6e 2d 76 61 6c 75 65 20 69 6d 61 67  ction-value imag
0830: 65 20 78 20 79 29 29 20 31 32 37 29 0a 20 20 20  e x y)) 127).   
0840: 20 20 20 20 20 20 20 28 62 65 67 69 6e 0a 20 20         (begin.  
0850: 20 20 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d            (gimp-
0860: 66 75 7a 7a 79 2d 73 65 6c 65 63 74 20 73 65 6c  fuzzy-select sel
0870: 65 63 74 69 6f 6e 20 78 20 79 20 31 32 37 20 43  ection x y 127 C
0880: 48 41 4e 4e 45 4c 2d 4f 50 2d 49 4e 54 45 52 53  HANNEL-OP-INTERS
0890: 45 43 54 20 46 41 4c 53 45 20 46 41 4c 53 45 20  ECT FALSE FALSE 
08a0: 30 20 46 41 4c 53 45 29 0a 20 20 20 20 20 20 20  0 FALSE).       
08b0: 20 20 20 20 20 28 67 69 6d 70 2d 63 6f 6e 74 65       (gimp-conte
08c0: 78 74 2d 73 65 74 2d 66 6f 72 65 67 72 6f 75 6e  xt-set-foregroun
08d0: 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  d.              
08e0: 20 20 28 6c 69 73 74 20 28 63 61 72 20 28 67 69    (list (car (gi
08f0: 6d 70 2d 68 69 73 74 6f 67 72 61 6d 20 64 72 61  mp-histogram dra
0900: 77 61 62 6c 65 20 48 49 53 54 4f 47 52 41 4d 2d  wable HISTOGRAM-
0910: 52 45 44 20 30 20 32 35 35 29 29 0a 20 20 20 20  RED 0 255)).    
0920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0930: 20 20 28 63 61 72 20 28 67 69 6d 70 2d 68 69 73    (car (gimp-his
0940: 74 6f 67 72 61 6d 20 64 72 61 77 61 62 6c 65 20  togram drawable 
0950: 48 49 53 54 4f 47 52 41 4d 2d 47 52 45 45 4e 20  HISTOGRAM-GREEN 
0960: 30 20 32 35 35 29 29 0a 20 20 20 20 20 20 20 20  0 255)).        
0970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63                (c
0980: 61 72 20 28 67 69 6d 70 2d 68 69 73 74 6f 67 72  ar (gimp-histogr
0990: 61 6d 20 64 72 61 77 61 62 6c 65 20 48 49 53 54  am drawable HIST
09a0: 4f 47 52 41 4d 2d 42 4c 55 45 20 30 20 32 35 35  OGRAM-BLUE 0 255
09b0: 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  )))).           
09c0: 20 28 67 69 6d 70 2d 65 64 69 74 2d 66 69 6c 6c   (gimp-edit-fill
09d0: 20 6c 61 79 65 72 20 46 4f 52 45 47 52 4f 55 4e   layer FOREGROUN
09e0: 44 2d 46 49 4c 4c 29 0a 20 20 20 20 20 20 20 20  D-FILL).        
09f0: 20 20 20 20 28 67 69 6d 70 2d 63 68 61 6e 6e 65      (gimp-channe
0a00: 6c 2d 63 6f 6d 62 69 6e 65 2d 6d 61 73 6b 73 20  l-combine-masks 
0a10: 73 65 6c 65 63 74 69 6f 6e 20 73 65 6c 65 63 74  selection select
0a20: 69 6f 6e 2d 64 72 61 77 61 62 6c 65 20 43 48 41  ion-drawable CHA
0a30: 4e 4e 45 4c 2d 4f 50 2d 53 55 42 54 52 41 43 54  NNEL-OP-SUBTRACT
0a40: 20 30 20 30 29 0a 20 20 20 20 20 20 20 20 20 20   0 0).          
0a50: 20 20 28 67 69 6d 70 2d 73 65 6c 65 63 74 69 6f    (gimp-selectio
0a60: 6e 2d 6c 6f 61 64 20 73 65 6c 65 63 74 69 6f 6e  n-load selection
0a70: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67  ).            (g
0a80: 69 6d 70 2d 72 65 63 74 2d 73 65 6c 65 63 74 20  imp-rect-select 
0a90: 69 6d 61 67 65 20 78 20 79 20 77 69 64 74 68 20  image x y width 
0aa0: 31 20 43 48 41 4e 4e 45 4c 2d 4f 50 2d 49 4e 54  1 CHANNEL-OP-INT
0ab0: 45 52 53 45 43 54 20 46 41 4c 53 45 20 30 29 0a  ERSECT FALSE 0).
0ac0: 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20              (if 
0ad0: 28 3d 20 28 63 61 72 20 28 73 65 74 21 20 62 6f  (= (car (set! bo
0ae0: 75 6e 64 73 20 28 67 69 6d 70 2d 73 65 6c 65 63  unds (gimp-selec
0af0: 74 69 6f 6e 2d 62 6f 75 6e 64 73 20 69 6d 61 67  tion-bounds imag
0b00: 65 29 29 29 20 54 52 55 45 29 0a 20 20 20 20 20  e))) TRUE).     
0b10: 20 20 20 20 20 20 20 20 20 28 73 65 74 21 20 78           (set! x
0b20: 20 28 63 61 64 72 20 62 6f 75 6e 64 73 29 29 0a   (cadr bounds)).
0b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73                (s
0b40: 65 74 21 20 78 20 77 69 64 74 68 29 20 20 20 20  et! x width)    
0b50: 20 20 20 20 20 20 20 20 20 20 29 0a 20 20 20 20            ).    
0b60: 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d 73 65          (gimp-se
0b70: 6c 65 63 74 69 6f 6e 2d 6c 6f 61 64 20 73 65 6c  lection-load sel
0b80: 65 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20  ection).        
0b90: 20 20 20 20 28 69 66 20 28 3d 20 28 63 61 72 20      (if (= (car 
0ba0: 28 73 65 74 21 20 62 6f 75 6e 64 73 20 28 67 69  (set! bounds (gi
0bb0: 6d 70 2d 73 65 6c 65 63 74 69 6f 6e 2d 62 6f 75  mp-selection-bou
0bc0: 6e 64 73 20 69 6d 61 67 65 29 29 29 20 54 52 55  nds image))) TRU
0bd0: 45 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E).             
0be0: 20 28 62 65 67 69 6e 0a 20 20 20 20 20 20 20 20   (begin.        
0bf0: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 77 69          (set! wi
0c00: 64 74 68 20 28 63 61 64 64 64 72 20 62 6f 75 6e  dth (cadddr boun
0c10: 64 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  ds)).           
0c20: 20 20 20 20 20 28 73 65 74 21 20 79 20 28 6d 61       (set! y (ma
0c30: 78 20 79 20 28 63 61 64 64 72 20 62 6f 75 6e 64  x y (caddr bound
0c40: 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  s))).           
0c50: 20 20 20 20 20 28 73 65 74 21 20 68 65 69 67 68       (set! heigh
0c60: 74 20 28 63 61 64 72 20 28 63 64 64 64 72 20 62  t (cadr (cdddr b
0c70: 6f 75 6e 64 73 29 29 29 20 20 20 20 20 20 20 20  ounds)))        
0c80: 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 20 20          ).      
0c90: 20 20 20 20 20 20 20 20 28 62 65 67 69 6e 0a 20          (begin. 
0ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
0cb0: 73 65 74 21 20 78 20 77 69 64 74 68 29 29 29 29  set! x width))))
0cc0: 0a 20 20 20 20 20 20 20 20 20 20 28 62 65 67 69  .          (begi
0cd0: 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73  n.            (s
0ce0: 65 74 21 20 78 20 30 29 0a 20 20 20 20 20 20 20  et! x 0).       
0cf0: 20 20 20 20 20 28 67 69 6d 70 2d 72 65 63 74 2d       (gimp-rect-
0d00: 73 65 6c 65 63 74 20 69 6d 61 67 65 20 78 20 79  select image x y
0d10: 20 77 69 64 74 68 20 31 20 43 48 41 4e 4e 45 4c   width 1 CHANNEL
0d20: 2d 4f 50 2d 49 4e 54 45 52 53 45 43 54 20 46 41  -OP-INTERSECT FA
0d30: 4c 53 45 20 30 29 0a 20 20 20 20 20 20 20 20 20  LSE 0).         
0d40: 20 20 20 28 69 66 20 28 3d 20 28 63 61 72 20 28     (if (= (car (
0d50: 73 65 74 21 20 62 6f 75 6e 64 73 20 28 67 69 6d  set! bounds (gim
0d60: 70 2d 73 65 6c 65 63 74 69 6f 6e 2d 62 6f 75 6e  p-selection-boun
0d70: 64 73 20 69 6d 61 67 65 29 29 29 20 54 52 55 45  ds image))) TRUE
0d80: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
0d90: 28 73 65 74 21 20 78 20 28 63 61 64 72 20 62 6f  (set! x (cadr bo
0da0: 75 6e 64 73 29 29 0a 20 20 20 20 20 20 20 20 20  unds)).         
0db0: 20 20 20 20 20 28 73 65 74 21 20 78 20 77 69 64       (set! x wid
0dc0: 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  th)).           
0dd0: 20 28 67 69 6d 70 2d 73 65 6c 65 63 74 69 6f 6e   (gimp-selection
0de0: 2d 6c 6f 61 64 20 73 65 6c 65 63 74 69 6f 6e 29  -load selection)
0df0: 29 29 0a 20 20 20 20 20 20 20 20 28 67 69 6d 70  )).        (gimp
0e00: 2d 70 72 6f 67 72 65 73 73 2d 70 75 6c 73 65 29  -progress-pulse)
0e10: 29 0a 20 20 20 20 20 20 28 69 66 20 28 3d 20 28  ).      (if (= (
0e20: 63 61 72 20 28 73 65 74 21 20 62 6f 75 6e 64 73  car (set! bounds
0e30: 20 28 67 69 6d 70 2d 73 65 6c 65 63 74 69 6f 6e   (gimp-selection
0e40: 2d 62 6f 75 6e 64 73 20 69 6d 61 67 65 29 29 29  -bounds image)))
0e50: 20 54 52 55 45 29 0a 20 20 20 20 20 20 20 20 28   TRUE).        (
0e60: 62 65 67 69 6e 0a 20 20 20 20 20 20 20 20 20 20  begin.          
0e70: 28 73 65 74 21 20 78 20 28 63 61 64 72 20 62 6f  (set! x (cadr bo
0e80: 75 6e 64 73 29 29 0a 20 20 20 20 20 20 20 20 20  unds)).         
0e90: 20 28 73 65 74 21 20 77 69 64 74 68 20 28 63 61   (set! width (ca
0ea0: 64 64 64 72 20 62 6f 75 6e 64 73 29 29 0a 20 20  dddr bounds)).  
0eb0: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 79 20          (set! y 
0ec0: 28 6d 61 78 20 28 2b 20 79 20 31 29 20 28 63 61  (max (+ y 1) (ca
0ed0: 64 64 72 20 62 6f 75 6e 64 73 29 29 29 0a 20 20  ddr bounds))).  
0ee0: 20 20 20 20 20 20 20 20 28 73 65 74 21 20 68 65          (set! he
0ef0: 69 67 68 74 20 28 63 61 64 72 20 28 63 64 64 64  ight (cadr (cddd
0f00: 72 20 62 6f 75 6e 64 73 29 29 29 29 0a 20 20 20  r bounds)))).   
0f10: 20 20 20 20 20 28 62 65 67 69 6e 0a 20 20 20 20       (begin.    
0f20: 20 20 20 20 20 20 28 73 65 74 21 20 78 20 77 69        (set! x wi
0f30: 64 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 28  dth).          (
0f40: 73 65 74 21 20 79 20 68 65 69 67 68 74 29 29 29  set! y height)))
0f50: 29 0a 20 20 20 20 28 67 69 6d 70 2d 73 65 6c 65  ).    (gimp-sele
0f60: 63 74 69 6f 6e 2d 6c 6f 61 64 20 72 61 77 2d 73  ction-load raw-s
0f70: 65 6c 65 63 74 69 6f 6e 29 0a 20 20 20 20 28 67  election).    (g
0f80: 69 6d 70 2d 69 6d 61 67 65 2d 72 65 6d 6f 76 65  imp-image-remove
0f90: 2d 63 68 61 6e 6e 65 6c 20 69 6d 61 67 65 20 73  -channel image s
0fa0: 65 6c 65 63 74 69 6f 6e 29 0a 20 20 20 20 28 67  election).    (g
0fb0: 69 6d 70 2d 69 6d 61 67 65 2d 72 65 6d 6f 76 65  imp-image-remove
0fc0: 2d 63 68 61 6e 6e 65 6c 20 69 6d 61 67 65 20 72  -channel image r
0fd0: 61 77 2d 73 65 6c 65 63 74 69 6f 6e 29 0a 20 20  aw-selection).  
0fe0: 20 0a 20 20 20 20 28 73 65 74 21 20 62 75 66 66   .    (set! buff
0ff0: 65 72 20 28 63 61 72 20 28 67 69 6d 70 2d 65 64  er (car (gimp-ed
1000: 69 74 2d 6e 61 6d 65 64 2d 63 6f 70 79 20 6c 61  it-named-copy la
1010: 79 65 72 20 62 75 66 66 65 72 29 29 29 0a 20 20  yer buffer))).  
1020: 20 20 28 73 65 74 21 20 6c 61 79 65 72 20 28 63    (set! layer (c
1030: 61 72 20 28 67 69 6d 70 2d 6c 61 79 65 72 2d 6e  ar (gimp-layer-n
1040: 65 77 2d 66 72 6f 6d 2d 64 72 61 77 61 62 6c 65  ew-from-drawable
1050: 20 6f 72 69 67 2d 64 72 61 77 61 62 6c 65 20 6f   orig-drawable o
1060: 72 69 67 2d 69 6d 61 67 65 29 29 29 0a 20 20 20  rig-image))).   
1070: 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 61 64 64   (gimp-image-add
1080: 2d 6c 61 79 65 72 20 6f 72 69 67 2d 69 6d 61 67  -layer orig-imag
1090: 65 20 6c 61 79 65 72 20 2d 31 29 0a 20 20 20 20  e layer -1).    
10a0: 28 67 69 6d 70 2d 6c 61 79 65 72 2d 61 64 64 2d  (gimp-layer-add-
10b0: 61 6c 70 68 61 20 6c 61 79 65 72 29 0a 20 20 20  alpha layer).   
10c0: 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d   (gimp-drawable-
10d0: 66 69 6c 6c 20 6c 61 79 65 72 20 54 52 41 4e 53  fill layer TRANS
10e0: 50 41 52 45 4e 54 2d 46 49 4c 4c 29 0a 20 20 20  PARENT-FILL).   
10f0: 20 28 67 69 6d 70 2d 66 6c 6f 61 74 69 6e 67 2d   (gimp-floating-
1100: 73 65 6c 2d 61 6e 63 68 6f 72 20 28 63 61 72 20  sel-anchor (car 
1110: 28 67 69 6d 70 2d 65 64 69 74 2d 6e 61 6d 65 64  (gimp-edit-named
1120: 2d 70 61 73 74 65 20 6c 61 79 65 72 20 62 75 66  -paste layer buf
1130: 66 65 72 20 46 41 4c 53 45 29 29 29 0a 20 20 20  fer FALSE))).   
1140: 0a 20 20 20 20 28 67 69 6d 70 2d 64 69 73 70 6c  .    (gimp-displ
1150: 61 79 73 2d 66 6c 75 73 68 29 0a 20 20 20 20 28  ays-flush).    (
1160: 67 69 6d 70 2d 63 6f 6e 74 65 78 74 2d 70 75 73  gimp-context-pus
1170: 68 29 0a 20 20 20 20 28 67 69 6d 70 2d 70 72 6f  h).    (gimp-pro
1180: 67 72 65 73 73 2d 65 6e 64 29 0a 20 20 20 20 28  gress-end).    (
1190: 67 69 6d 70 2d 73 65 6c 65 63 74 69 6f 6e 2d 6c  gimp-selection-l
11a0: 6f 61 64 20 6f 72 69 67 2d 73 65 6c 65 63 74 69  oad orig-selecti
11b0: 6f 6e 29 0a 20 20 20 20 28 67 69 6d 70 2d 69 6d  on).    (gimp-im
11c0: 61 67 65 2d 72 65 6d 6f 76 65 2d 63 68 61 6e 6e  age-remove-chann
11d0: 65 6c 20 6f 72 69 67 2d 69 6d 61 67 65 20 6f 72  el orig-image or
11e0: 69 67 2d 73 65 6c 65 63 74 69 6f 6e 29 0a 20 20  ig-selection).  
11f0: 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 75 6e    (gimp-image-un
1200: 64 6f 2d 65 6e 61 62 6c 65 20 69 6d 61 67 65 29  do-enable image)
1210: 0a 20 20 20 20 28 67 69 6d 70 2d 69 6d 61 67 65  .    (gimp-image
1220: 2d 75 6e 64 6f 2d 67 72 6f 75 70 2d 65 6e 64 20  -undo-group-end 
1230: 6f 72 69 67 2d 69 6d 61 67 65 29 0a 20 20 20 20  orig-image).    
1240: 28 67 69 6d 70 2d 69 6d 61 67 65 2d 64 65 6c 65  (gimp-image-dele
1250: 74 65 20 69 6d 61 67 65 29 0a 20 20 20 0a 20 20  te image).   .  
1260: 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 73 65    (gimp-image-se
1270: 74 2d 61 63 74 69 76 65 2d 6c 61 79 65 72 20 6f  t-active-layer o
1280: 72 69 67 2d 69 6d 61 67 65 20 6c 61 79 65 72 29  rig-image layer)
1290: 29 29 0a 0a 28 73 63 72 69 70 74 2d 66 75 2d 72  ))..(script-fu-r
12a0: 65 67 69 73 74 65 72 20 22 73 63 72 69 70 74 2d  egister "script-
12b0: 66 75 2d 73 67 2d 6d 65 61 6e 2d 66 69 6c 6c 22  fu-sg-mean-fill"
12c0: 0a 20 20 22 4d 65 61 6e 20 46 69 6c 6c 22 0a 20  .  "Mean Fill". 
12d0: 20 22 46 69 6c 6c 20 63 6f 6e 74 69 67 75 6f 75   "Fill contiguou
12e0: 73 20 72 65 67 69 6f 6e 73 20 77 69 74 68 20 74  s regions with t
12f0: 68 65 20 61 76 65 72 61 67 65 20 6f 66 20 74 68  he average of th
1300: 65 20 72 65 67 69 6f 6e 22 0a 20 20 22 53 61 75  e region".  "Sau
1310: 6c 20 47 6f 6f 64 65 22 0a 20 20 22 53 61 75 6c  l Goode".  "Saul
1320: 20 47 6f 6f 64 65 22 0a 20 20 22 34 2f 32 31 2f   Goode".  "4/21/
1330: 32 30 31 30 22 0a 20 20 22 52 47 42 2a 22 0a 20  2010".  "RGB*". 
1340: 20 53 46 2d 49 4d 41 47 45 20 22 49 6d 61 67 65   SF-IMAGE "Image
1350: 22 20 30 0a 20 20 53 46 2d 44 52 41 57 41 42 4c  " 0.  SF-DRAWABL
1360: 45 20 22 44 72 61 77 61 62 6c 65 22 20 30 0a 20  E "Drawable" 0. 
1370: 20 29 0a 28 73 63 72 69 70 74 2d 66 75 2d 6d 65   ).(script-fu-me
1380: 6e 75 2d 72 65 67 69 73 74 65 72 20 22 73 63 72  nu-register "scr
1390: 69 70 74 2d 66 75 2d 73 67 2d 6d 65 61 6e 2d 66  ipt-fu-sg-mean-f
13a0: 69 6c 6c 22 0a 20 20 22 3c 49 6d 61 67 65 3e 2f  ill".  "<Image>/
13b0: 46 69 6c 74 65 72 73 2f 4d 69 73 63 22 0a 20 20  Filters/Misc".  
13c0: 29 0a                                            ).