GIMP Script-fu

Hex Artifact Content
Login

Artifact 4647efe626931ee3ca6064d8da69ac689e2e791b:


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 20 0a 3b 0a 3b 20 54 68 69  ersion. .;.; Thi
0100: 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73  s program is dis
0110: 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20  tributed in the 
0120: 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c  hope that it wil
0130: 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 20 62  l be useful,.; b
0140: 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57  ut WITHOUT ANY W
0150: 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74  ARRANTY; without
0160: 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65   even the implie
0170: 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 20  d warranty of.; 
0180: 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20  MERCHANTABILITY 
0190: 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41  or FITNESS FOR A
01a0: 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50   PARTICULAR PURP
01b0: 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 20  OSE.  See the.; 
01c0: 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c  GNU General Publ
01d0: 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d  ic License for m
01e0: 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 3b 0a 3b  ore details..;.;
01f0: 20 54 68 65 20 47 4e 55 20 50 75 62 6c 69 63 20   The GNU Public 
0200: 4c 69 63 65 6e 73 65 20 69 73 20 61 76 61 69 6c  License is avail
0210: 61 62 6c 65 20 61 74 0a 3b 20 68 74 74 70 3a 2f  able at.; http:/
0220: 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 63 6f 70  /www.gnu.org/cop
0230: 79 6c 65 66 74 2f 67 70 6c 2e 68 74 6d 6c 0a 0a  yleft/gpl.html..
0240: 28 64 65 66 69 6e 65 20 28 73 63 72 69 70 74 2d  (define (script-
0250: 66 75 2d 73 67 2d 65 78 70 61 6e 64 2d 73 74 72  fu-sg-expand-str
0260: 69 70 20 69 6d 61 67 65 20 64 72 61 77 61 62 6c  ip image drawabl
0270: 65 29 0a 20 20 28 6c 65 74 2a 20 28 28 6c 61 79  e).  (let* ((lay
0280: 65 72 20 28 63 61 72 20 28 67 69 6d 70 2d 69 6d  er (car (gimp-im
0290: 61 67 65 2d 67 65 74 2d 61 63 74 69 76 65 2d 6c  age-get-active-l
02a0: 61 79 65 72 20 69 6d 61 67 65 29 29 29 0a 20 20  ayer image))).  
02b0: 20 20 20 20 20 20 20 28 6c 61 79 65 72 2d 6e 61         (layer-na
02c0: 6d 65 20 28 63 61 72 20 28 67 69 6d 70 2d 64 72  me (car (gimp-dr
02d0: 61 77 61 62 6c 65 2d 67 65 74 2d 6e 61 6d 65 20  awable-get-name 
02e0: 6c 61 79 65 72 29 29 29 0a 20 20 20 20 20 20 20  layer))).       
02f0: 20 20 28 62 6f 75 6e 64 73 20 28 67 69 6d 70 2d    (bounds (gimp-
0300: 64 72 61 77 61 62 6c 65 2d 6d 61 73 6b 2d 69 6e  drawable-mask-in
0310: 74 65 72 73 65 63 74 20 6c 61 79 65 72 29 29 0a  tersect layer)).
0320: 20 20 20 20 20 20 20 20 20 28 73 65 6c 2d 78 20           (sel-x 
0330: 28 63 61 64 72 20 62 6f 75 6e 64 73 29 29 0a 20  (cadr bounds)). 
0340: 20 20 20 20 20 20 20 20 28 73 65 6c 2d 79 20 28          (sel-y (
0350: 63 61 64 64 72 20 62 6f 75 6e 64 73 29 29 0a 20  caddr bounds)). 
0360: 20 20 20 20 20 20 20 20 28 73 65 6c 2d 77 69 64          (sel-wid
0370: 74 68 20 28 63 61 64 64 64 72 20 62 6f 75 6e 64  th (cadddr bound
0380: 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65  s)).         (se
0390: 6c 2d 68 65 69 67 68 74 20 28 63 61 72 20 28 63  l-height (car (c
03a0: 64 64 64 64 72 20 62 6f 75 6e 64 73 29 29 29 0a  ddddr bounds))).
03b0: 20 20 20 20 20 20 20 20 20 28 69 6d 61 67 65 2d           (image-
03c0: 77 69 64 74 68 20 28 63 61 72 20 28 67 69 6d 70  width (car (gimp
03d0: 2d 69 6d 61 67 65 2d 77 69 64 74 68 20 69 6d 61  -image-width ima
03e0: 67 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28  ge))).         (
03f0: 69 6d 61 67 65 2d 68 65 69 67 68 74 20 28 63 61  image-height (ca
0400: 72 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 68 65  r (gimp-image-he
0410: 69 67 68 74 20 69 6d 61 67 65 29 29 29 0a 20 20  ight image))).  
0420: 20 20 20 20 20 20 20 28 6f 66 66 73 65 74 2d 78         (offset-x
0430: 20 28 63 61 72 20 28 67 69 6d 70 2d 64 72 61 77   (car (gimp-draw
0440: 61 62 6c 65 2d 6f 66 66 73 65 74 73 20 6c 61 79  able-offsets lay
0450: 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28  er))).         (
0460: 6f 66 66 73 65 74 2d 79 20 28 63 61 64 72 20 28  offset-y (cadr (
0470: 67 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d 6f 66  gimp-drawable-of
0480: 66 73 65 74 73 20 6c 61 79 65 72 29 29 29 20 20  fsets layer)))  
0490: 20 20 0a 20 20 20 20 20 20 20 20 20 28 77 69 64    .         (wid
04a0: 74 68 20 28 63 61 72 20 28 67 69 6d 70 2d 64 72  th (car (gimp-dr
04b0: 61 77 61 62 6c 65 2d 77 69 64 74 68 20 6c 61 79  awable-width lay
04c0: 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28  er))).         (
04d0: 68 65 69 67 68 74 20 28 63 61 72 20 28 67 69 6d  height (car (gim
04e0: 70 2d 64 72 61 77 61 62 6c 65 2d 68 65 69 67 68  p-drawable-heigh
04f0: 74 20 6c 61 79 65 72 29 29 29 0a 20 20 20 20 20  t layer))).     
0500: 20 20 20 20 28 6f 6c 64 2d 6d 65 73 73 61 67 65      (old-message
0510: 2d 68 61 6e 64 6c 65 72 20 28 63 61 72 20 28 67  -handler (car (g
0520: 69 6d 70 2d 6d 65 73 73 61 67 65 2d 67 65 74 2d  imp-message-get-
0530: 68 61 6e 64 6c 65 72 29 29 29 0a 20 20 20 20 20  handler))).     
0540: 20 20 20 20 28 66 6c 6f 61 74 69 6e 67 2d 73 65      (floating-se
0550: 6c 20 30 29 0a 20 20 20 20 20 20 20 20 20 28 62  l 0).         (b
0560: 75 66 66 65 72 20 22 22 29 0a 20 20 20 20 20 20  uffer "").      
0570: 20 20 20 28 65 72 72 6f 72 3f 20 23 66 29 20 29     (error? #f) )
0580: 0a 20 20 20 20 28 67 69 6d 70 2d 63 6f 6e 74 65  .    (gimp-conte
0590: 78 74 2d 70 75 73 68 29 0a 20 20 20 20 28 67 69  xt-push).    (gi
05a0: 6d 70 2d 69 6d 61 67 65 2d 75 6e 64 6f 2d 67 72  mp-image-undo-gr
05b0: 6f 75 70 2d 73 74 61 72 74 20 69 6d 61 67 65 29  oup-start image)
05c0: 0a 20 20 20 20 28 69 66 20 28 6f 72 20 28 6e 6f  .    (if (or (no
05d0: 74 20 28 7a 65 72 6f 3f 20 28 63 61 72 20 28 67  t (zero? (car (g
05e0: 69 6d 70 2d 73 65 6c 65 63 74 69 6f 6e 2d 69 73  imp-selection-is
05f0: 2d 65 6d 70 74 79 20 69 6d 61 67 65 29 29 29 29  -empty image))))
0600: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 7a  .             (z
0610: 65 72 6f 3f 20 28 63 61 72 20 62 6f 75 6e 64 73  ero? (car bounds
0620: 29 29 20 29 0a 20 20 20 20 20 20 28 73 65 74 21  )) ).      (set!
0630: 20 65 72 72 6f 72 3f 20 23 74 29 20 20 20 20 0a   error? #t)    .
0640: 20 20 20 20 20 20 28 62 65 67 69 6e 20 0a 20 20        (begin .  
0650: 20 20 20 20 20 20 28 73 65 74 21 20 62 75 66 66        (set! buff
0660: 65 72 20 28 63 61 72 20 28 67 69 6d 70 2d 65 64  er (car (gimp-ed
0670: 69 74 2d 6e 61 6d 65 64 2d 63 6f 70 79 20 6c 61  it-named-copy la
0680: 79 65 72 20 22 73 74 72 69 70 22 29 29 29 0a 20  yer "strip"))). 
0690: 20 20 20 20 20 20 20 28 63 6f 6e 64 20 0a 20 20         (cond .  
06a0: 20 20 20 20 20 20 20 20 28 28 3d 20 73 65 6c 2d          ((= sel-
06b0: 77 69 64 74 68 20 77 69 64 74 68 29 20 3b 20 65  width width) ; e
06c0: 78 70 61 6e 64 20 68 6f 72 69 7a 6f 6e 74 61 6c  xpand horizontal
06d0: 20 73 74 72 69 70 0a 20 20 20 20 20 20 20 20 20   strip.         
06e0: 20 20 20 28 75 6e 6c 65 73 73 20 28 3d 20 73 65     (unless (= se
06f0: 6c 2d 68 65 69 67 68 74 20 68 65 69 67 68 74 29  l-height height)
0700: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  .              (
0710: 6c 65 74 2a 20 28 28 6d 6f 76 65 2d 75 70 20 28  let* ((move-up (
0720: 74 72 75 6e 63 61 74 65 20 28 2f 20 73 65 6c 2d  truncate (/ sel-
0730: 68 65 69 67 68 74 20 32 29 29 29 0a 20 20 20 20  height 2))).    
0740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0750: 20 28 6d 6f 76 65 2d 64 6f 77 6e 20 28 2d 20 73   (move-down (- s
0760: 65 6c 2d 68 65 69 67 68 74 20 6d 6f 76 65 2d 75  el-height move-u
0770: 70 29 29 20 29 0a 20 20 20 20 20 20 20 20 20 20  p)) ).          
0780: 20 20 20 20 20 20 28 67 69 6d 70 2d 6c 61 79 65        (gimp-laye
0790: 72 2d 72 65 73 69 7a 65 20 6c 61 79 65 72 20 77  r-resize layer w
07a0: 69 64 74 68 20 28 2b 20 68 65 69 67 68 74 20 73  idth (+ height s
07b0: 65 6c 2d 68 65 69 67 68 74 29 20 30 20 6d 6f 76  el-height) 0 mov
07c0: 65 2d 75 70 29 0a 20 20 20 20 20 20 20 20 20 20  e-up).          
07d0: 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 7a        (unless (z
07e0: 65 72 6f 3f 20 73 65 6c 2d 79 29 0a 20 20 20 20  ero? sel-y).    
07f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67                (g
0800: 69 6d 70 2d 72 65 63 74 2d 73 65 6c 65 63 74 20  imp-rect-select 
0810: 69 6d 61 67 65 20 6f 66 66 73 65 74 2d 78 20 6f  image offset-x o
0820: 66 66 73 65 74 2d 79 20 77 69 64 74 68 20 73 65  ffset-y width se
0830: 6c 2d 79 20 43 48 41 4e 4e 45 4c 2d 4f 50 2d 52  l-y CHANNEL-OP-R
0840: 45 50 4c 41 43 45 20 46 41 4c 53 45 20 30 29 0a  EPLACE FALSE 0).
0850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0860: 20 20 28 73 65 74 21 20 66 6c 6f 61 74 69 6e 67    (set! floating
0870: 2d 73 65 6c 20 28 63 61 72 20 28 67 69 6d 70 2d  -sel (car (gimp-
0880: 73 65 6c 65 63 74 69 6f 6e 2d 66 6c 6f 61 74 20  selection-float 
0890: 6c 61 79 65 72 20 30 20 28 2d 20 6d 6f 76 65 2d  layer 0 (- move-
08a0: 75 70 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  up)))).         
08b0: 20 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d 66           (gimp-f
08c0: 6c 6f 61 74 69 6e 67 2d 73 65 6c 2d 61 6e 63 68  loating-sel-anch
08d0: 6f 72 20 66 6c 6f 61 74 69 6e 67 2d 73 65 6c 29  or floating-sel)
08e0: 20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ).             
08f0: 20 20 20 28 75 6e 6c 65 73 73 20 28 3d 20 28 2b     (unless (= (+
0900: 20 73 65 6c 2d 79 20 73 65 6c 2d 68 65 69 67 68   sel-y sel-heigh
0910: 74 29 20 68 65 69 67 68 74 29 0a 20 20 20 20 20  t) height).     
0920: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 69               (gi
0930: 6d 70 2d 72 65 63 74 2d 73 65 6c 65 63 74 20 69  mp-rect-select i
0940: 6d 61 67 65 20 0a 20 20 20 20 20 20 20 20 20 20  mage .          
0950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0960: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
0970: 2d 78 20 0a 20 20 20 20 20 20 20 20 20 20 20 20  -x .            
0980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0990: 20 20 20 20 20 20 20 20 28 2b 20 6f 66 66 73 65          (+ offse
09a0: 74 2d 79 20 73 65 6c 2d 79 20 73 65 6c 2d 68 65  t-y sel-y sel-he
09b0: 69 67 68 74 29 20 0a 20 20 20 20 20 20 20 20 20  ight) .         
09c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
09d0: 20 20 20 20 20 20 20 20 20 20 20 77 69 64 74 68             width
09e0: 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20   .              
09f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a00: 20 20 20 20 20 20 28 2d 20 68 65 69 67 68 74 20        (- height 
0a10: 73 65 6c 2d 79 20 73 65 6c 2d 68 65 69 67 68 74  sel-y sel-height
0a20: 29 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ) .             
0a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a40: 20 20 20 20 20 20 20 43 48 41 4e 4e 45 4c 2d 4f         CHANNEL-O
0a50: 50 2d 52 45 50 4c 41 43 45 20 0a 20 20 20 20 20  P-REPLACE .     
0a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
0a80: 41 4c 53 45 20 0a 20 20 20 20 20 20 20 20 20 20  ALSE .          
0a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0aa0: 20 20 20 20 20 20 20 20 20 20 30 20 29 0a 20 20            0 ).  
0ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ac0: 28 73 65 74 21 20 66 6c 6f 61 74 69 6e 67 2d 73  (set! floating-s
0ad0: 65 6c 20 28 63 61 72 20 28 67 69 6d 70 2d 73 65  el (car (gimp-se
0ae0: 6c 65 63 74 69 6f 6e 2d 66 6c 6f 61 74 20 6c 61  lection-float la
0af0: 79 65 72 20 30 20 6d 6f 76 65 2d 64 6f 77 6e 29  yer 0 move-down)
0b00: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )).             
0b10: 20 20 20 20 20 28 67 69 6d 70 2d 66 6c 6f 61 74       (gimp-float
0b20: 69 6e 67 2d 73 65 6c 2d 61 6e 63 68 6f 72 20 66  ing-sel-anchor f
0b30: 6c 6f 61 74 69 6e 67 2d 73 65 6c 29 20 29 0a 20  loating-sel) ). 
0b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
0b50: 73 65 74 21 20 66 6c 6f 61 74 69 6e 67 2d 73 65  set! floating-se
0b60: 6c 20 28 63 61 72 20 28 67 69 6d 70 2d 65 64 69  l (car (gimp-edi
0b70: 74 2d 6e 61 6d 65 64 2d 70 61 73 74 65 20 6c 61  t-named-paste la
0b80: 79 65 72 20 62 75 66 66 65 72 20 46 41 4c 53 45  yer buffer FALSE
0b90: 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))).            
0ba0: 20 20 20 20 28 67 69 6d 70 2d 6c 61 79 65 72 2d      (gimp-layer-
0bb0: 73 63 61 6c 65 2d 66 75 6c 6c 20 66 6c 6f 61 74  scale-full float
0bc0: 69 6e 67 2d 73 65 6c 0a 20 20 20 20 20 20 20 20  ing-sel.        
0bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77                 w
0bf0: 69 64 74 68 0a 20 20 20 20 20 20 20 20 20 20 20  idth.           
0c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c10: 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 32              (* 2
0c20: 20 73 65 6c 2d 68 65 69 67 68 74 29 20 0a 20 20   sel-height) .  
0c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c50: 20 20 20 20 20 54 52 55 45 0a 20 20 20 20 20 20       TRUE.      
0c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c80: 20 49 4e 54 45 52 50 4f 4c 41 54 49 4f 4e 2d 43   INTERPOLATION-C
0c90: 55 42 49 43 20 29 0a 20 20 20 20 20 20 20 20 20  UBIC ).         
0ca0: 20 20 20 20 20 20 20 28 67 69 6d 70 2d 6c 61 79         (gimp-lay
0cb0: 65 72 2d 73 65 74 2d 6f 66 66 73 65 74 73 20 66  er-set-offsets f
0cc0: 6c 6f 61 74 69 6e 67 2d 73 65 6c 20 0a 20 20 20  loating-sel .   
0cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0cf0: 20 20 20 20 20 6f 66 66 73 65 74 2d 78 20 0a 20       offset-x . 
0d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d20: 20 20 20 20 20 20 20 28 2b 20 6f 66 66 73 65 74         (+ offset
0d30: 2d 79 20 28 2d 20 73 65 6c 2d 79 20 6d 6f 76 65  -y (- sel-y move
0d40: 2d 75 70 29 29 20 29 0a 20 20 20 20 20 20 20 20  -up)) ).        
0d50: 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d 66 6c          (gimp-fl
0d60: 6f 61 74 69 6e 67 2d 73 65 6c 2d 61 6e 63 68 6f  oating-sel-ancho
0d70: 72 20 66 6c 6f 61 74 69 6e 67 2d 73 65 6c 29 0a  r floating-sel).
0d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d90: 28 67 69 6d 70 2d 72 65 63 74 2d 73 65 6c 65 63  (gimp-rect-selec
0da0: 74 20 69 6d 61 67 65 0a 20 20 20 20 20 20 20 20  t image.        
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0dc0: 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
0dd0: 2d 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  -x.             
0de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0df0: 20 20 20 20 20 28 2d 20 28 2b 20 6f 66 66 73 65       (- (+ offse
0e00: 74 2d 79 20 73 65 6c 2d 79 29 20 6d 6f 76 65 2d  t-y sel-y) move-
0e10: 75 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  up).            
0e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e30: 20 20 20 20 20 20 77 69 64 74 68 0a 20 20 20 20        width.    
0e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a                (*
0e60: 20 32 20 73 65 6c 2d 68 65 69 67 68 74 29 0a 20   2 sel-height). 
0e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e90: 20 43 48 41 4e 4e 45 4c 2d 4f 50 2d 52 45 50 4c   CHANNEL-OP-REPL
0ea0: 41 43 45 20 0a 20 20 20 20 20 20 20 20 20 20 20  ACE .           
0eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ec0: 20 20 20 20 20 20 20 46 41 4c 53 45 20 0a 20 20         FALSE .  
0ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ef0: 30 20 29 29 29 29 0a 20 20 20 20 20 20 20 20 20  0 )))).         
0f00: 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20         .        
0f10: 20 20 28 28 3d 20 73 65 6c 2d 68 65 69 67 68 74    ((= sel-height
0f20: 20 68 65 69 67 68 74 29 20 3b 20 65 78 70 61 6e   height) ; expan
0f30: 64 20 76 65 72 74 69 63 61 6c 20 73 74 72 69 70  d vertical strip
0f40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e  .            (un
0f50: 6c 65 73 73 20 28 3d 20 73 65 6c 2d 77 69 64 74  less (= sel-widt
0f60: 68 20 77 69 64 74 68 29 0a 20 20 20 20 20 20 20  h width).       
0f70: 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6d         (let* ((m
0f80: 6f 76 65 2d 6c 65 66 74 20 28 74 72 75 6e 63 61  ove-left (trunca
0f90: 74 65 20 28 2f 20 73 65 6c 2d 77 69 64 74 68 20  te (/ sel-width 
0fa0: 32 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  2))).           
0fb0: 20 20 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d            (move-
0fc0: 72 69 67 68 74 20 28 2d 20 73 65 6c 2d 77 69 64  right (- sel-wid
0fd0: 74 68 20 6d 6f 76 65 2d 6c 65 66 74 29 29 20 29  th move-left)) )
0fe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0ff0: 20 28 67 69 6d 70 2d 6c 61 79 65 72 2d 72 65 73   (gimp-layer-res
1000: 69 7a 65 20 6c 61 79 65 72 20 28 2b 20 77 69 64  ize layer (+ wid
1010: 74 68 20 73 65 6c 2d 77 69 64 74 68 29 20 68 65  th sel-width) he
1020: 69 67 68 74 20 6d 6f 76 65 2d 6c 65 66 74 20 30  ight move-left 0
1030: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
1040: 20 20 28 75 6e 6c 65 73 73 20 28 7a 65 72 6f 3f    (unless (zero?
1050: 20 73 65 6c 2d 78 29 0a 20 20 20 20 20 20 20 20   sel-x).        
1060: 20 20 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d            (gimp-
1070: 72 65 63 74 2d 73 65 6c 65 63 74 20 69 6d 61 67  rect-select imag
1080: 65 20 6f 66 66 73 65 74 2d 78 20 6f 66 66 73 65  e offset-x offse
1090: 74 2d 79 20 73 65 6c 2d 78 20 68 65 69 67 68 74  t-y sel-x height
10a0: 20 43 48 41 4e 4e 45 4c 2d 4f 50 2d 52 45 50 4c   CHANNEL-OP-REPL
10b0: 41 43 45 20 46 41 4c 53 45 20 30 29 0a 20 20 20  ACE FALSE 0).   
10c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
10d0: 73 65 74 21 20 66 6c 6f 61 74 69 6e 67 2d 73 65  set! floating-se
10e0: 6c 20 28 63 61 72 20 28 67 69 6d 70 2d 73 65 6c  l (car (gimp-sel
10f0: 65 63 74 69 6f 6e 2d 66 6c 6f 61 74 20 6c 61 79  ection-float lay
1100: 65 72 20 28 2d 20 6d 6f 76 65 2d 6c 65 66 74 29  er (- move-left)
1110: 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20   0))).          
1120: 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d 66 6c          (gimp-fl
1130: 6f 61 74 69 6e 67 2d 73 65 6c 2d 61 6e 63 68 6f  oating-sel-ancho
1140: 72 20 66 6c 6f 61 74 69 6e 67 2d 73 65 6c 29 20  r floating-sel) 
1150: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
1160: 20 20 28 75 6e 6c 65 73 73 20 28 3d 20 28 2b 20    (unless (= (+ 
1170: 73 65 6c 2d 78 20 73 65 6c 2d 77 69 64 74 68 29  sel-x sel-width)
1180: 20 77 69 64 74 68 29 0a 20 20 20 20 20 20 20 20   width).        
1190: 20 20 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d            (gimp-
11a0: 72 65 63 74 2d 73 65 6c 65 63 74 20 69 6d 61 67  rect-select imag
11b0: 65 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e .             
11c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d0: 20 20 20 20 20 20 20 28 2b 20 6f 66 66 73 65 74         (+ offset
11e0: 2d 78 20 73 65 6c 2d 78 20 73 65 6c 2d 77 69 64  -x sel-x sel-wid
11f0: 74 68 29 20 0a 20 20 20 20 20 20 20 20 20 20 20  th) .           
1200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1210: 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 2d           offset-
1220: 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  y.              
1230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1240: 20 20 20 20 20 20 28 2d 20 77 69 64 74 68 20 73        (- width s
1250: 65 6c 2d 78 20 73 65 6c 2d 77 69 64 74 68 29 20  el-x sel-width) 
1260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1280: 20 20 20 20 20 68 65 69 67 68 74 0a 20 20 20 20       height.    
1290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b0: 43 48 41 4e 4e 45 4c 2d 4f 50 2d 52 45 50 4c 41  CHANNEL-OP-REPLA
12c0: 43 45 20 0a 20 20 20 20 20 20 20 20 20 20 20 20  CE .            
12d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e0: 20 20 20 20 20 20 20 20 46 41 4c 53 45 20 0a 20          FALSE . 
12f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1310: 20 20 20 30 20 29 0a 20 20 20 20 20 20 20 20 20     0 ).         
1320: 20 20 20 20 20 20 20 20 20 28 73 65 74 21 20 66           (set! f
1330: 6c 6f 61 74 69 6e 67 2d 73 65 6c 20 28 63 61 72  loating-sel (car
1340: 20 28 67 69 6d 70 2d 73 65 6c 65 63 74 69 6f 6e   (gimp-selection
1350: 2d 66 6c 6f 61 74 20 6c 61 79 65 72 20 6d 6f 76  -float layer mov
1360: 65 2d 72 69 67 68 74 20 30 29 29 29 0a 20 20 20  e-right 0))).   
1370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
1380: 67 69 6d 70 2d 66 6c 6f 61 74 69 6e 67 2d 73 65  gimp-floating-se
1390: 6c 2d 61 6e 63 68 6f 72 20 66 6c 6f 61 74 69 6e  l-anchor floatin
13a0: 67 2d 73 65 6c 29 20 29 0a 20 20 20 20 20 20 20  g-sel) ).       
13b0: 20 20 20 20 20 20 20 20 20 28 73 65 74 21 20 66           (set! f
13c0: 6c 6f 61 74 69 6e 67 2d 73 65 6c 20 28 63 61 72  loating-sel (car
13d0: 20 28 67 69 6d 70 2d 65 64 69 74 2d 6e 61 6d 65   (gimp-edit-name
13e0: 64 2d 70 61 73 74 65 20 6c 61 79 65 72 20 62 75  d-paste layer bu
13f0: 66 66 65 72 20 46 41 4c 53 45 29 29 29 0a 20 20  ffer FALSE))).  
1400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67                (g
1410: 69 6d 70 2d 6c 61 79 65 72 2d 73 63 61 6c 65 2d  imp-layer-scale-
1420: 66 75 6c 6c 20 66 6c 6f 61 74 69 6e 67 2d 73 65  full floating-se
1430: 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  l.              
1440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1450: 20 20 20 20 20 20 20 20 20 28 2a 20 32 20 73 65           (* 2 se
1460: 6c 2d 77 69 64 74 68 29 0a 20 20 20 20 20 20 20  l-width).       
1470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1490: 68 65 69 67 68 74 0a 20 20 20 20 20 20 20 20 20  height.         
14a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 52                TR
14c0: 55 45 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  UE.             
14d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e0: 20 20 20 20 20 20 20 20 20 20 49 4e 54 45 52 50            INTERP
14f0: 4f 4c 41 54 49 4f 4e 2d 43 55 42 49 43 20 29 0a  OLATION-CUBIC ).
1500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1510: 28 67 69 6d 70 2d 6c 61 79 65 72 2d 73 65 74 2d  (gimp-layer-set-
1520: 6f 66 66 73 65 74 73 20 66 6c 6f 61 74 69 6e 67  offsets floating
1530: 2d 73 65 6c 20 0a 20 20 20 20 20 20 20 20 20 20  -sel .          
1540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2b                (+
1560: 20 6f 66 66 73 65 74 2d 78 20 28 2d 20 73 65 6c   offset-x (- sel
1570: 2d 78 20 6d 6f 76 65 2d 6c 65 66 74 29 29 0a 20  -x move-left)). 
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a0: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2d 79 20         offset-y 
15b0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
15c0: 20 20 28 67 69 6d 70 2d 66 6c 6f 61 74 69 6e 67    (gimp-floating
15d0: 2d 73 65 6c 2d 61 6e 63 68 6f 72 20 66 6c 6f 61  -sel-anchor floa
15e0: 74 69 6e 67 2d 73 65 6c 29 0a 20 20 20 20 20 20  ting-sel).      
15f0: 20 20 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d            (gimp-
1600: 72 65 63 74 2d 73 65 6c 65 63 74 20 69 6d 61 67  rect-select imag
1610: 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  e.              
1620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1630: 20 20 20 20 28 2d 20 28 2b 20 6f 66 66 73 65 74      (- (+ offset
1640: 2d 78 20 73 65 6c 2d 78 29 20 6d 6f 76 65 2d 6c  -x sel-x) move-l
1650: 65 66 74 29 0a 20 20 20 20 20 20 20 20 20 20 20  eft).           
1660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1670: 20 20 20 20 20 20 20 6f 66 66 73 65 74 2d 79 0a         offset-y.
1680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16a0: 20 20 28 2a 20 32 20 73 65 6c 2d 77 69 64 74 68    (* 2 sel-width
16b0: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
16c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d0: 20 20 20 20 68 65 69 67 68 74 0a 20 20 20 20 20      height.     
16e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 48 41               CHA
1700: 4e 4e 45 4c 2d 4f 50 2d 52 45 50 4c 41 43 45 20  NNEL-OP-REPLACE 
1710: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1730: 20 20 20 46 41 4c 53 45 20 0a 20 20 20 20 20 20     FALSE .      
1740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1750: 20 20 20 20 20 20 20 20 20 20 20 20 30 20 29 29              0 ))
1760: 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6c  )).          (el
1770: 73 65 20 3b 3b 20 65 72 72 6f 72 20 2d 20 73 65  se ;; error - se
1780: 6c 65 63 74 69 6f 6e 20 6d 75 73 74 20 73 70 61  lection must spa
1790: 6e 20 74 68 65 20 65 6e 74 69 72 65 20 6c 61 79  n the entire lay
17a0: 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 28  er.            (
17b0: 73 65 74 21 20 65 72 72 6f 72 3f 20 23 74 29 20  set! error? #t) 
17c0: 29 29 29 29 0a 20 20 20 20 28 69 66 20 65 72 72  )))).    (if err
17d0: 6f 72 3f 0a 20 20 20 20 20 20 28 67 69 6d 70 2d  or?.      (gimp-
17e0: 6d 65 73 73 61 67 65 20 22 53 65 6c 65 63 74 69  message "Selecti
17f0: 6f 6e 20 6d 75 73 74 20 73 70 61 6e 20 65 69 74  on must span eit
1800: 68 65 72 20 74 68 65 20 65 6e 74 69 72 65 20 77  her the entire w
1810: 69 64 74 68 20 6f 72 20 68 65 69 67 68 74 20 6f  idth or height o
1820: 66 20 6c 61 79 65 72 22 29 0a 20 20 20 20 20 20  f layer").      
1830: 28 6c 65 74 20 28 28 78 20 28 63 61 72 20 28 67  (let ((x (car (g
1840: 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d 6f 66 66  imp-drawable-off
1850: 73 65 74 73 20 6c 61 79 65 72 29 29 29 0a 20 20  sets layer))).  
1860: 20 20 20 20 20 20 20 20 20 20 28 79 20 28 63 61            (y (ca
1870: 64 72 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c  dr (gimp-drawabl
1880: 65 2d 6f 66 66 73 65 74 73 20 6c 61 79 65 72 29  e-offsets layer)
1890: 29 29 20 29 0a 20 20 20 20 20 20 20 20 28 67 69  )) ).        (gi
18a0: 6d 70 2d 62 75 66 66 65 72 2d 64 65 6c 65 74 65  mp-buffer-delete
18b0: 20 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20   buffer).       
18c0: 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 72 65 73   (gimp-image-res
18d0: 69 7a 65 20 69 6d 61 67 65 20 0a 20 20 20 20 20  ize image .     
18e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18f0: 20 20 20 20 20 20 28 2d 20 69 6d 61 67 65 2d 77        (- image-w
1900: 69 64 74 68 20 28 6d 69 6e 20 30 20 78 29 29 0a  idth (min 0 x)).
1910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1920: 20 20 20 20 20 20 20 20 20 20 20 28 2d 20 69 6d             (- im
1930: 61 67 65 2d 68 65 69 67 68 74 20 28 6d 69 6e 20  age-height (min 
1940: 30 20 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  0 )).           
1950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1960: 28 61 62 73 20 28 6d 69 6e 20 30 20 78 29 29 0a  (abs (min 0 x)).
1970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1980: 20 20 20 20 20 20 20 20 20 20 20 28 61 62 73 20             (abs 
1990: 28 6d 69 6e 20 30 20 79 29 29 20 29 0a 20 20 20  (min 0 y)) ).   
19a0: 20 20 20 20 20 28 73 65 74 21 20 78 20 28 63 61       (set! x (ca
19b0: 72 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c 65  r (gimp-drawable
19c0: 2d 6f 66 66 73 65 74 73 20 6c 61 79 65 72 29 29  -offsets layer))
19d0: 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 21 20  ).        (set! 
19e0: 79 20 28 63 61 64 72 20 28 67 69 6d 70 2d 64 72  y (cadr (gimp-dr
19f0: 61 77 61 62 6c 65 2d 6f 66 66 73 65 74 73 20 6c  awable-offsets l
1a00: 61 79 65 72 29 29 29 0a 20 20 20 20 20 20 20 20  ayer))).        
1a10: 28 67 69 6d 70 2d 69 6d 61 67 65 2d 72 65 73 69  (gimp-image-resi
1a20: 7a 65 20 69 6d 61 67 65 0a 20 20 20 20 20 20 20  ze image.       
1a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a40: 20 20 20 20 28 6d 61 78 20 69 6d 61 67 65 2d 77      (max image-w
1a50: 69 64 74 68 20 28 2b 20 78 20 28 63 61 72 20 28  idth (+ x (car (
1a60: 67 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d 77 69  gimp-drawable-wi
1a70: 64 74 68 20 6c 61 79 65 72 29 29 29 29 0a 20 20  dth layer)))).  
1a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a90: 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 69 6d           (max im
1aa0: 61 67 65 2d 68 65 69 67 68 74 20 28 2b 20 79 20  age-height (+ y 
1ab0: 28 63 61 72 20 28 67 69 6d 70 2d 64 72 61 77 61  (car (gimp-drawa
1ac0: 62 6c 65 2d 68 65 69 67 68 74 20 6c 61 79 65 72  ble-height layer
1ad0: 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  )))).           
1ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af0: 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  0.              
1b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 29               0 )
1b10: 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 3d 20  .        (if (= 
1b20: 73 65 6c 2d 77 69 64 74 68 20 77 69 64 74 68 29  sel-width width)
1b30: 20 3b 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 73 74   ; horizontal st
1b40: 72 69 70 0a 20 20 20 20 20 20 20 20 20 20 28 63  rip.          (c
1b50: 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20  ond.            
1b60: 28 28 7a 65 72 6f 3f 20 73 65 6c 2d 79 29 20 0a  ((zero? sel-y) .
1b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67                (g
1b80: 69 6d 70 2d 72 65 63 74 2d 73 65 6c 65 63 74 20  imp-rect-select 
1b90: 69 6d 61 67 65 0a 20 20 20 20 20 20 20 20 20 20  image.          
1ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb0: 20 20 20 20 20 20 78 0a 20 20 20 20 20 20 20 20        x.        
1bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd0: 20 20 20 20 20 20 20 20 79 0a 20 20 20 20 20 20          y.      
1be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf0: 20 20 20 20 20 20 20 20 20 20 77 69 64 74 68 0a            width.
1c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c20: 28 2a 20 32 20 73 65 6c 2d 68 65 69 67 68 74 29  (* 2 sel-height)
1c30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c50: 20 43 48 41 4e 4e 45 4c 2d 4f 50 2d 52 45 50 4c   CHANNEL-OP-REPL
1c60: 41 43 45 20 0a 20 20 20 20 20 20 20 20 20 20 20  ACE .           
1c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c80: 20 20 20 20 20 46 41 4c 53 45 20 0a 20 20 20 20       FALSE .    
1c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca0: 20 20 20 20 20 20 20 20 20 20 20 20 30 20 29 29              0 ))
1cb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 3d  .            ((=
1cc0: 20 28 2b 20 73 65 6c 2d 79 20 73 65 6c 2d 68 65   (+ sel-y sel-he
1cd0: 69 67 68 74 29 20 68 65 69 67 68 74 29 0a 20 20  ight) height).  
1ce0: 20 20 20 20 20 20 20 20 20 20 20 20 28 67 69 6d              (gim
1cf0: 70 2d 72 65 63 74 2d 73 65 6c 65 63 74 20 69 6d  p-rect-select im
1d00: 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  age.            
1d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d20: 20 20 20 20 78 0a 20 20 20 20 20 20 20 20 20 20      x.          
1d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d40: 20 20 20 20 20 20 28 2d 20 28 2b 20 79 20 28 63        (- (+ y (c
1d50: 61 72 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c  ar (gimp-drawabl
1d60: 65 2d 68 65 69 67 68 74 20 6c 61 79 65 72 29 29  e-height layer))
1d70: 29 20 28 2a 20 32 20 73 65 6c 2d 68 65 69 67 68  ) (* 2 sel-heigh
1d80: 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)).            
1d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da0: 20 20 20 20 77 69 64 74 68 0a 20 20 20 20 20 20      width.      
1db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc0: 20 20 20 20 20 20 20 20 20 20 28 2a 20 32 20 73            (* 2 s
1dd0: 65 6c 2d 68 65 69 67 68 74 29 0a 20 20 20 20 20  el-height).     
1de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df0: 20 20 20 20 20 20 20 20 20 20 20 43 48 41 4e 4e             CHANN
1e00: 45 4c 2d 4f 50 2d 52 45 50 4c 41 43 45 20 0a 20  EL-OP-REPLACE . 
1e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
1e30: 41 4c 53 45 20 0a 20 20 20 20 20 20 20 20 20 20  ALSE .          
1e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e50: 20 20 20 20 20 20 30 20 29 29 29 29 0a 20 20 20        0 )))).   
1e60: 20 20 20 20 20 28 69 66 20 28 3d 20 73 65 6c 2d       (if (= sel-
1e70: 68 65 69 67 68 74 20 68 65 69 67 68 74 29 20 3b  height height) ;
1e80: 20 76 65 72 74 69 63 61 6c 20 73 74 72 69 70 0a   vertical strip.
1e90: 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a            (cond.
1ea0: 20 20 20 20 20 20 20 20 20 20 20 20 28 28 7a 65              ((ze
1eb0: 72 6f 3f 20 73 65 6c 2d 78 29 20 0a 20 20 20 20  ro? sel-x) .    
1ec0: 20 20 20 20 20 20 20 20 20 20 28 67 69 6d 70 2d            (gimp-
1ed0: 72 65 63 74 2d 73 65 6c 65 63 74 20 69 6d 61 67  rect-select imag
1ee0: 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  e.              
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f00: 20 20 78 0a 20 20 20 20 20 20 20 20 20 20 20 20    x.            
1f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f20: 20 20 20 20 79 0a 20 20 20 20 20 20 20 20 20 20      y.          
1f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f40: 20 20 20 20 20 20 28 2a 20 32 20 73 65 6c 2d 77        (* 2 sel-w
1f50: 69 64 74 68 29 0a 20 20 20 20 20 20 20 20 20 20  idth).          
1f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f70: 20 20 20 20 20 20 68 65 69 67 68 74 0a 20 20 20        height.   
1f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 48 41               CHA
1fa0: 4e 4e 45 4c 2d 4f 50 2d 52 45 50 4c 41 43 45 20  NNEL-OP-REPLACE 
1fb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd0: 20 46 41 4c 53 45 20 0a 20 20 20 20 20 20 20 20   FALSE .        
1fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff0: 20 20 20 20 20 20 20 20 30 20 29 29 0a 20 20 20          0 )).   
2000: 20 20 20 20 20 20 20 20 20 28 28 3d 20 28 2b 20           ((= (+ 
2010: 73 65 6c 2d 78 20 73 65 6c 2d 77 69 64 74 68 29  sel-x sel-width)
2020: 20 77 69 64 74 68 29 0a 20 20 20 20 20 20 20 20   width).        
2030: 20 20 20 20 20 20 28 67 69 6d 70 2d 72 65 63 74        (gimp-rect
2040: 2d 73 65 6c 65 63 74 20 69 6d 61 67 65 0a 20 20  -select image.  
2050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2d                (-
2070: 20 28 2b 20 78 20 28 63 61 72 20 28 67 69 6d 70   (+ x (car (gimp
2080: 2d 64 72 61 77 61 62 6c 65 2d 77 69 64 74 68 20  -drawable-width 
2090: 6c 61 79 65 72 29 29 29 20 28 2a 20 32 20 73 65  layer))) (* 2 se
20a0: 6c 2d 77 69 64 74 68 29 29 0a 20 20 20 20 20 20  l-width)).      
20b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c0: 20 20 20 20 20 20 20 20 20 20 79 0a 20 20 20 20            y.    
20d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 32              (* 2
20f0: 20 73 65 6c 2d 77 69 64 74 68 29 0a 20 20 20 20   sel-width).    
2100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2110: 20 20 20 20 20 20 20 20 20 20 20 20 68 65 69 67              heig
2120: 68 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ht.             
2130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2140: 20 20 20 43 48 41 4e 4e 45 4c 2d 4f 50 2d 52 45     CHANNEL-OP-RE
2150: 50 4c 41 43 45 20 0a 20 20 20 20 20 20 20 20 20  PLACE .         
2160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2170: 20 20 20 20 20 20 20 46 41 4c 53 45 20 0a 20 20         FALSE .  
2180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20                0 
21a0: 29 29 29 29 29 29 0a 0a 20 20 20 20 28 73 65 74  ))))))..    (set
21b0: 21 20 69 6d 61 67 65 2d 77 69 64 74 68 20 28 63  ! image-width (c
21c0: 61 72 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 77  ar (gimp-image-w
21d0: 69 64 74 68 20 69 6d 61 67 65 29 29 29 0a 20 20  idth image))).  
21e0: 20 20 28 73 65 74 21 20 69 6d 61 67 65 2d 68 65    (set! image-he
21f0: 69 67 68 74 20 28 63 61 72 20 28 67 69 6d 70 2d  ight (car (gimp-
2200: 69 6d 61 67 65 2d 68 65 69 67 68 74 20 69 6d 61  image-height ima
2210: 67 65 29 29 29 0a 20 20 20 20 28 67 69 6d 70 2d  ge))).    (gimp-
2220: 69 6d 61 67 65 2d 75 6e 64 6f 2d 67 72 6f 75 70  image-undo-group
2230: 2d 65 6e 64 20 69 6d 61 67 65 29 0a 20 20 20 20  -end image).    
2240: 28 67 69 6d 70 2d 63 6f 6e 74 65 78 74 2d 70 6f  (gimp-context-po
2250: 70 29 0a 20 20 20 20 28 67 69 6d 70 2d 64 69 73  p).    (gimp-dis
2260: 70 6c 61 79 73 2d 66 6c 75 73 68 29 0a 20 20 20  plays-flush).   
2270: 20 29 0a 20 20 29 0a 0a 28 73 63 72 69 70 74 2d   ).  )..(script-
2280: 66 75 2d 72 65 67 69 73 74 65 72 20 22 73 63 72  fu-register "scr
2290: 69 70 74 2d 66 75 2d 73 67 2d 65 78 70 61 6e 64  ipt-fu-sg-expand
22a0: 2d 73 74 72 69 70 22 0a 20 22 45 78 70 61 6e 64  -strip". "Expand
22b0: 20 53 74 72 69 70 22 0a 20 22 45 78 70 61 6e 64   Strip". "Expand
22c0: 20 74 68 65 20 73 74 72 69 70 20 75 6e 64 65 72   the strip under
22d0: 20 74 68 65 20 73 65 6c 65 63 74 69 6f 6e 2c 20   the selection, 
22e0: 72 65 73 69 7a 69 6e 67 20 6c 61 79 65 72 20 61  resizing layer a
22f0: 6e 64 20 69 6d 61 67 65 20 69 66 20 6e 65 63 65  nd image if nece
2300: 73 73 61 72 79 22 0a 20 22 53 61 75 6c 20 47 6f  ssary". "Saul Go
2310: 6f 64 65 22 0a 20 22 53 61 75 6c 20 47 6f 6f 64  ode". "Saul Good
2320: 65 22 0a 20 22 4f 63 74 6f 62 65 72 20 32 30 31  e". "October 201
2330: 31 22 0a 20 22 52 47 42 2a 2c 47 52 41 59 2a 22  1". "RGB*,GRAY*"
2340: 0a 20 53 46 2d 49 4d 41 47 45 20 20 20 20 22 49  . SF-IMAGE    "I
2350: 6d 61 67 65 22 20 20 20 20 30 0a 20 53 46 2d 44  mage"    0. SF-D
2360: 52 41 57 41 42 4c 45 20 22 44 72 61 77 61 62 6c  RAWABLE "Drawabl
2370: 65 22 20 30 0a 20 29 0a 28 73 63 72 69 70 74 2d  e" 0. ).(script-
2380: 66 75 2d 6d 65 6e 75 2d 72 65 67 69 73 74 65 72  fu-menu-register
2390: 20 22 73 63 72 69 70 74 2d 66 75 2d 73 67 2d 65   "script-fu-sg-e
23a0: 78 70 61 6e 64 2d 73 74 72 69 70 22 0a 20 22 3c  xpand-strip". "<
23b0: 49 6d 61 67 65 3e 2f 4c 61 79 65 72 2f 22 0a 20  Image>/Layer/". 
23c0: 29 0a                                            ).