GIMP Script-fu

Hex Artifact Content
Login

Artifact 1798e8830fef11e639d5fe89eda4c0927d542d8c:


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 53  re details...; S
01f0: 63 61 6c 65 73 20 74 68 65 20 6c 61 79 65 72 20  cales the layer 
0200: 74 6f 20 6d 61 74 63 68 20 74 68 65 20 73 65 6c  to match the sel
0210: 65 63 74 69 6f 6e 20 73 69 7a 65 20 77 68 69 6c  ection size whil
0220: 65 20 6d 61 69 6e 74 61 69 6e 69 6e 67 0a 3b 20  e maintaining.; 
0230: 6f 72 69 67 69 6e 61 6c 20 61 73 70 65 63 74 20  original aspect 
0240: 72 61 74 69 6f 6e 2e 20 49 66 20 6e 6f 20 73 65  ration. If no se
0250: 6c 65 63 74 69 6f 6e 20 69 73 20 70 72 65 73 65  lection is prese
0260: 6e 74 2c 20 73 63 61 6c 65 73 20 0a 3b 20 6c 61  nt, scales .; la
0270: 79 65 72 20 74 6f 20 69 6d 61 67 65 20 73 69 7a  yer to image siz
0280: 65 2e 20 4e 6f 74 65 3a 20 69 66 20 74 68 65 20  e. Note: if the 
0290: 6c 61 79 65 72 20 69 73 20 66 6c 6f 61 74 65 64  layer is floated
02a0: 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 3b   (for example,.;
02b0: 20 61 66 74 65 72 20 61 6e 20 45 64 69 74 2d 3e   after an Edit->
02c0: 50 61 73 74 65 20 68 61 73 20 62 65 65 6e 20 70  Paste has been p
02d0: 65 72 66 6f 72 6d 65 64 29 20 74 68 65 72 65 20  erformed) there 
02e0: 69 73 20 6e 6f 20 73 65 6c 65 63 74 69 6f 6e 0a  is no selection.
02f0: 3b 20 70 72 65 73 65 6e 74 20 65 76 65 6e 20 74  ; present even t
0300: 68 6f 75 67 68 20 74 68 65 72 65 20 61 72 65 20  hough there are 
0310: 6d 61 72 63 68 69 6e 67 20 61 6e 74 73 20 61 72  marching ants ar
0320: 6f 75 6e 64 20 74 68 65 20 6f 72 69 67 69 6e 61  ound the origina
0330: 6c 6c 79 0a 3b 20 73 65 6c 65 63 74 65 64 20 72  lly.; selected r
0340: 65 67 69 6f 6e 20 2d 2d 20 69 66 20 74 68 69 73  egion -- if this
0350: 20 73 63 72 69 70 74 20 69 73 20 72 75 6e 20 77   script is run w
0360: 69 74 68 6f 75 74 20 66 69 72 73 74 20 6d 61 6b  ithout first mak
0370: 69 6e 67 0a 3b 20 61 20 6e 65 77 20 73 65 6c 65  ing.; a new sele
0380: 63 74 69 6f 6e 20 74 68 65 6e 20 74 68 65 20 66  ction then the f
0390: 6c 6f 61 74 69 6e 67 20 73 65 6c 65 63 74 69 6f  loating selectio
03a0: 6e 20 77 69 6c 6c 20 62 65 20 73 63 61 6c 65 64  n will be scaled
03b0: 20 74 6f 0a 3b 20 74 68 65 20 69 6d 61 67 65 20   to.; the image 
03c0: 73 69 7a 65 2e 20 0a 0a 28 64 65 66 69 6e 65 20  size. ..(define 
03d0: 28 73 63 72 69 70 74 2d 66 75 2d 73 67 2d 6c 61  (script-fu-sg-la
03e0: 79 65 72 2d 66 69 74 2d 69 6e 2d 73 65 6c 65 63  yer-fit-in-selec
03f0: 74 69 6f 6e 20 69 6d 61 67 65 20 64 72 61 77 61  tion image drawa
0400: 62 6c 65 29 0a 20 20 28 6c 65 74 2a 20 28 0a 20  ble).  (let* (. 
0410: 20 20 20 20 20 28 6c 61 79 65 72 20 28 63 61 72       (layer (car
0420: 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 67 65 74   (gimp-image-get
0430: 2d 61 63 74 69 76 65 2d 6c 61 79 65 72 20 69 6d  -active-layer im
0440: 61 67 65 29 29 29 0a 20 20 20 20 20 20 28 62 6f  age))).      (bo
0450: 75 6e 64 73 20 28 63 64 72 20 28 67 69 6d 70 2d  unds (cdr (gimp-
0460: 73 65 6c 65 63 74 69 6f 6e 2d 62 6f 75 6e 64 73  selection-bounds
0470: 20 69 6d 61 67 65 29 29 29 0a 20 20 20 20 20 20   image))).      
0480: 28 78 20 28 63 61 72 20 62 6f 75 6e 64 73 29 29  (x (car bounds))
0490: 0a 20 20 20 20 20 20 28 79 20 28 63 61 64 72 20  .      (y (cadr 
04a0: 62 6f 75 6e 64 73 29 29 0a 20 20 20 20 20 20 28  bounds)).      (
04b0: 77 69 64 74 68 20 28 2d 20 28 63 61 64 64 72 20  width (- (caddr 
04c0: 62 6f 75 6e 64 73 29 20 78 29 29 0a 20 20 20 20  bounds) x)).    
04d0: 20 20 28 68 65 69 67 68 74 20 28 2d 20 28 63 61    (height (- (ca
04e0: 64 64 64 72 20 62 6f 75 6e 64 73 29 20 79 29 29  dddr bounds) y))
04f0: 0a 20 20 20 20 20 20 28 6c 61 79 65 72 2d 77 69  .      (layer-wi
0500: 64 74 68 20 28 63 61 72 20 28 67 69 6d 70 2d 64  dth (car (gimp-d
0510: 72 61 77 61 62 6c 65 2d 77 69 64 74 68 20 6c 61  rawable-width la
0520: 79 65 72 29 29 29 0a 20 20 20 20 20 20 28 6c 61  yer))).      (la
0530: 79 65 72 2d 68 65 69 67 68 74 20 28 63 61 72 20  yer-height (car 
0540: 28 67 69 6d 70 2d 64 72 61 77 61 62 6c 65 2d 68  (gimp-drawable-h
0550: 65 69 67 68 74 20 6c 61 79 65 72 29 29 29 0a 20  eight layer))). 
0560: 20 20 20 20 20 28 61 73 70 65 63 74 20 28 2f 20       (aspect (/ 
0570: 6c 61 79 65 72 2d 68 65 69 67 68 74 20 6c 61 79  layer-height lay
0580: 65 72 2d 77 69 64 74 68 29 29 0a 20 20 20 20 20  er-width)).     
0590: 20 29 0a 20 20 20 20 28 67 69 6d 70 2d 69 6d 61   ).    (gimp-ima
05a0: 67 65 2d 75 6e 64 6f 2d 67 72 6f 75 70 2d 73 74  ge-undo-group-st
05b0: 61 72 74 20 69 6d 61 67 65 29 0a 20 20 20 20 28  art image).    (
05c0: 67 69 6d 70 2d 6c 61 79 65 72 2d 61 64 64 2d 61  gimp-layer-add-a
05d0: 6c 70 68 61 20 6c 61 79 65 72 29 0a 20 20 20 20  lpha layer).    
05e0: 28 69 66 20 28 3c 20 28 2f 20 77 69 64 74 68 20  (if (< (/ width 
05f0: 6c 61 79 65 72 2d 77 69 64 74 68 29 20 28 2f 20  layer-width) (/ 
0600: 68 65 69 67 68 74 20 6c 61 79 65 72 2d 68 65 69  height layer-hei
0610: 67 68 74 29 29 0a 20 20 20 20 20 20 28 62 65 67  ght)).      (beg
0620: 69 6e 0a 20 20 20 20 20 20 20 20 28 67 69 6d 70  in.        (gimp
0630: 2d 6c 61 79 65 72 2d 73 63 61 6c 65 2d 66 75 6c  -layer-scale-ful
0640: 6c 20 6c 61 79 65 72 20 0a 20 20 20 20 20 20 20  l layer .       
0650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0660: 20 20 20 20 20 20 20 20 77 69 64 74 68 0a 20 20          width.  
0670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0680: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20               (* 
0690: 77 69 64 74 68 20 61 73 70 65 63 74 29 0a 20 20  width aspect).  
06a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
06b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 52 55               TRU
06c0: 45 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  E .             
06d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
06e0: 20 20 49 4e 54 45 52 50 4f 4c 41 54 49 4f 4e 2d    INTERPOLATION-
06f0: 4c 41 4e 43 5a 4f 53 29 0a 20 20 20 20 20 20 20  LANCZOS).       
0700: 20 28 67 69 6d 70 2d 6c 61 79 65 72 2d 73 65 74   (gimp-layer-set
0710: 2d 6f 66 66 73 65 74 73 20 6c 61 79 65 72 20 78  -offsets layer x
0720: 20 28 2b 20 79 20 28 2f 20 28 2d 20 68 65 69 67   (+ y (/ (- heig
0730: 68 74 20 28 2a 20 77 69 64 74 68 20 61 73 70 65  ht (* width aspe
0740: 63 74 29 29 20 32 29 20 29 29 0a 20 20 20 20 20  ct)) 2) )).     
0750: 20 20 20 29 20 20 20 20 20 20 20 20 20 20 20 20     )            
0760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20                . 
0770: 20 20 20 20 20 28 62 65 67 69 6e 20 0a 20 20 20       (begin .   
0780: 20 20 20 20 20 28 67 69 6d 70 2d 6c 61 79 65 72       (gimp-layer
0790: 2d 73 63 61 6c 65 2d 66 75 6c 6c 20 6c 61 79 65  -scale-full laye
07a0: 72 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r .             
07b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
07c0: 20 20 28 2f 20 68 65 69 67 68 74 20 61 73 70 65    (/ height aspe
07d0: 63 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  ct).            
07e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
07f0: 20 20 20 68 65 69 67 68 74 0a 20 20 20 20 20 20     height.      
0800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0810: 20 20 20 20 20 20 20 20 20 54 52 55 45 20 0a 20           TRUE . 
0820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 4e                IN
0840: 54 45 52 50 4f 4c 41 54 49 4f 4e 2d 4c 41 4e 43  TERPOLATION-LANC
0850: 5a 4f 53 29 0a 20 20 20 20 20 20 20 20 28 67 69  ZOS).        (gi
0860: 6d 70 2d 6c 61 79 65 72 2d 73 65 74 2d 6f 66 66  mp-layer-set-off
0870: 73 65 74 73 20 6c 61 79 65 72 20 28 2b 20 78 20  sets layer (+ x 
0880: 28 2f 20 28 2d 20 77 69 64 74 68 20 28 2f 20 68  (/ (- width (/ h
0890: 65 69 67 68 74 20 61 73 70 65 63 74 29 29 20 32  eight aspect)) 2
08a0: 29 29 20 79 29 0a 20 20 20 20 20 20 20 20 29 0a  )) y).        ).
08b0: 20 20 20 20 20 20 29 0a 20 20 20 20 28 67 69 6d        ).    (gim
08c0: 70 2d 69 6d 61 67 65 2d 75 6e 64 6f 2d 67 72 6f  p-image-undo-gro
08d0: 75 70 2d 65 6e 64 20 69 6d 61 67 65 29 0a 20 20  up-end image).  
08e0: 20 20 28 67 69 6d 70 2d 64 69 73 70 6c 61 79 73    (gimp-displays
08f0: 2d 66 6c 75 73 68 29 0a 20 20 20 20 29 0a 20 20  -flush).    ).  
0900: 29 0a 0a 28 73 63 72 69 70 74 2d 66 75 2d 72 65  )..(script-fu-re
0910: 67 69 73 74 65 72 20 22 73 63 72 69 70 74 2d 66  gister "script-f
0920: 75 2d 73 67 2d 6c 61 79 65 72 2d 66 69 74 2d 69  u-sg-layer-fit-i
0930: 6e 2d 73 65 6c 65 63 74 69 6f 6e 22 0a 20 22 46  n-selection". "F
0940: 69 74 20 77 69 74 68 69 6e 20 53 65 6c 65 63 74  it within Select
0950: 69 6f 6e 22 0a 20 22 53 63 61 6c 65 20 74 68 65  ion". "Scale the
0960: 20 61 63 74 69 76 65 20 6c 61 79 65 72 20 73 6f   active layer so
0970: 20 69 74 20 66 69 74 73 20 69 6e 20 74 68 65 20   it fits in the 
0980: 73 65 6c 65 63 74 65 64 20 72 65 67 69 6f 6e 22  selected region"
0990: 0a 20 22 53 61 75 6c 20 47 6f 6f 64 65 22 0a 20  . "Saul Goode". 
09a0: 22 53 61 75 6c 20 47 6f 6f 64 65 22 0a 20 22 31  "Saul Goode". "1
09b0: 30 2f 32 35 2f 32 30 31 30 22 0a 20 22 52 47 42  0/25/2010". "RGB
09c0: 2a 2c 47 52 41 59 2a 22 0a 20 53 46 2d 49 4d 41  *,GRAY*". SF-IMA
09d0: 47 45 20 20 20 20 22 49 6d 61 67 65 22 20 20 20  GE    "Image"   
09e0: 20 30 0a 20 53 46 2d 44 52 41 57 41 42 4c 45 20   0. SF-DRAWABLE 
09f0: 22 44 72 61 77 61 62 6c 65 22 20 30 0a 20 29 0a  "Drawable" 0. ).
0a00: 0a 28 73 63 72 69 70 74 2d 66 75 2d 6d 65 6e 75  .(script-fu-menu
0a10: 2d 72 65 67 69 73 74 65 72 20 22 73 63 72 69 70  -register "scrip
0a20: 74 2d 66 75 2d 73 67 2d 6c 61 79 65 72 2d 66 69  t-fu-sg-layer-fi
0a30: 74 2d 69 6e 2d 73 65 6c 65 63 74 69 6f 6e 22 0a  t-in-selection".
0a40: 20 22 3c 49 6d 61 67 65 3e 2f 4c 61 79 65 72 2f   "<Image>/Layer/
0a50: 52 65 73 69 7a 65 22 0a 20 29 0a 20 0a           Resize". ). .