GIMP Script-fu

Hex Artifact Content
Login

Artifact 19b3fd45478ea6236530e52d93504b6a0462bbbd:


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 0a 28 64  re details....(d
01f0: 65 66 69 6e 65 20 28 73 63 72 69 70 74 2d 66 75  efine (script-fu
0200: 2d 73 67 2d 61 64 64 2d 67 72 6f 75 70 2d 6d 61  -sg-add-group-ma
0210: 73 6b 20 69 6d 61 67 65 20 67 72 6f 75 70 29 0a  sk image group).
0220: 20 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 75 6e    (gimp-image-un
0230: 64 6f 2d 67 72 6f 75 70 2d 73 74 61 72 74 20 69  do-group-start i
0240: 6d 61 67 65 29 0a 20 20 28 67 69 6d 70 2d 63 6f  mage).  (gimp-co
0250: 6e 74 65 78 74 2d 70 75 73 68 29 0a 20 20 28 69  ntext-push).  (i
0260: 66 20 28 7a 65 72 6f 3f 20 28 63 61 72 20 28 67  f (zero? (car (g
0270: 69 6d 70 2d 69 74 65 6d 2d 69 73 2d 67 72 6f 75  imp-item-is-grou
0280: 70 20 67 72 6f 75 70 29 29 29 0a 20 20 20 20 28  p group))).    (
0290: 62 65 67 69 6e 0a 20 20 20 20 20 20 28 67 69 6d  begin.      (gim
02a0: 70 2d 6d 65 73 73 61 67 65 20 22 4c 61 79 65 72  p-message "Layer
02b0: 20 6d 75 73 74 20 62 65 20 61 20 67 72 6f 75 70   must be a group
02c0: 22 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 78  ")).    (let ((x
02d0: 2d 6f 66 66 73 65 74 20 28 63 61 72 20 28 67 69  -offset (car (gi
02e0: 6d 70 2d 64 72 61 77 61 62 6c 65 2d 6f 66 66 73  mp-drawable-offs
02f0: 65 74 73 20 67 72 6f 75 70 29 29 29 0a 20 20 20  ets group))).   
0300: 20 20 20 20 20 20 20 28 79 2d 6f 66 66 73 65 74         (y-offset
0310: 20 28 63 61 64 72 20 28 67 69 6d 70 2d 64 72 61   (cadr (gimp-dra
0320: 77 61 62 6c 65 2d 6f 66 66 73 65 74 73 20 67 72  wable-offsets gr
0330: 6f 75 70 29 29 29 20 0a 20 20 20 20 20 20 20 20  oup))) .        
0340: 20 20 28 67 72 6f 75 70 2d 6d 61 73 6b 20 28 63    (group-mask (c
0350: 61 72 20 28 67 69 6d 70 2d 6c 61 79 65 72 2d 6e  ar (gimp-layer-n
0360: 65 77 20 69 6d 61 67 65 20 0a 20 20 20 20 20 20  ew image .      
0370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
0390: 63 61 72 20 28 67 69 6d 70 2d 64 72 61 77 61 62  car (gimp-drawab
03a0: 6c 65 2d 77 69 64 74 68 20 67 72 6f 75 70 29 29  le-width group))
03b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
03c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
03d0: 20 20 20 20 20 20 28 63 61 72 20 28 67 69 6d 70        (car (gimp
03e0: 2d 64 72 61 77 61 62 6c 65 2d 68 65 69 67 68 74  -drawable-height
03f0: 20 67 72 6f 75 70 29 29 0a 20 20 20 20 20 20 20   group)).       
0400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63                (c
0420: 61 72 20 28 67 69 6d 70 2d 64 72 61 77 61 62 6c  ar (gimp-drawabl
0430: 65 2d 74 79 70 65 20 67 72 6f 75 70 29 29 0a 20  e-type group)). 
0440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0460: 20 20 20 20 22 47 72 6f 75 70 20 4d 61 73 6b 22      "Group Mask"
0470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0490: 20 20 20 20 20 20 31 30 30 0a 20 20 20 20 20 20        100.      
04a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
04b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                 2
04c0: 34 20 3b 20 52 45 50 4c 41 43 45 2d 4d 4f 44 45  4 ; REPLACE-MODE
04d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
04e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
04f0: 20 20 20 20 20 20 29 29 29 29 0a 20 20 20 20 20        )))).     
0500: 20 28 67 69 6d 70 2d 63 6f 6e 74 65 78 74 2d 73   (gimp-context-s
0510: 65 74 2d 64 65 66 61 75 6c 74 2d 63 6f 6c 6f 72  et-default-color
0520: 73 29 20 0a 20 20 20 20 20 20 28 67 69 6d 70 2d  s) .      (gimp-
0530: 64 72 61 77 61 62 6c 65 2d 66 69 6c 6c 20 67 72  drawable-fill gr
0540: 6f 75 70 2d 6d 61 73 6b 20 54 52 41 4e 53 50 41  oup-mask TRANSPA
0550: 52 45 4e 54 2d 46 49 4c 4c 29 0a 20 20 20 20 20  RENT-FILL).     
0560: 20 28 67 69 6d 70 2d 69 6d 61 67 65 2d 69 6e 73   (gimp-image-ins
0570: 65 72 74 2d 6c 61 79 65 72 20 69 6d 61 67 65 20  ert-layer image 
0580: 67 72 6f 75 70 2d 6d 61 73 6b 20 67 72 6f 75 70  group-mask group
0590: 20 30 29 0a 20 20 20 20 20 20 28 67 69 6d 70 2d   0).      (gimp-
05a0: 6c 61 79 65 72 2d 73 65 74 2d 6f 66 66 73 65 74  layer-set-offset
05b0: 73 20 67 72 6f 75 70 2d 6d 61 73 6b 20 78 2d 6f  s group-mask x-o
05c0: 66 66 73 65 74 20 79 2d 6f 66 66 73 65 74 29 0a  ffset y-offset).
05d0: 20 20 20 20 20 20 28 67 69 6d 70 2d 65 64 69 74        (gimp-edit
05e0: 2d 66 69 6c 6c 20 67 72 6f 75 70 2d 6d 61 73 6b  -fill group-mask
05f0: 20 46 4f 52 45 47 52 4f 55 4e 44 2d 46 49 4c 4c   FOREGROUND-FILL
0600: 29 0a 20 20 20 20 20 20 28 67 69 6d 70 2d 73 65  ).      (gimp-se
0610: 6c 65 63 74 69 6f 6e 2d 69 6e 76 65 72 74 20 69  lection-invert i
0620: 6d 61 67 65 29 0a 20 20 20 20 20 20 28 6c 65 74  mage).      (let
0630: 20 28 28 6c 61 79 65 72 2d 6d 61 73 6b 20 28 63   ((layer-mask (c
0640: 61 72 20 28 67 69 6d 70 2d 6c 61 79 65 72 2d 63  ar (gimp-layer-c
0650: 72 65 61 74 65 2d 6d 61 73 6b 20 67 72 6f 75 70  reate-mask group
0660: 2d 6d 61 73 6b 20 41 44 44 2d 53 45 4c 45 43 54  -mask ADD-SELECT
0670: 49 4f 4e 2d 4d 41 53 4b 29 29 29 29 0a 20 20 20  ION-MASK)))).   
0680: 20 20 20 20 20 28 67 69 6d 70 2d 6c 61 79 65 72       (gimp-layer
0690: 2d 61 64 64 2d 6d 61 73 6b 20 67 72 6f 75 70 2d  -add-mask group-
06a0: 6d 61 73 6b 20 6c 61 79 65 72 2d 6d 61 73 6b 29  mask layer-mask)
06b0: 29 0a 20 20 20 20 20 20 28 67 69 6d 70 2d 73 65  ).      (gimp-se
06c0: 6c 65 63 74 69 6f 6e 2d 69 6e 76 65 72 74 20 69  lection-invert i
06d0: 6d 61 67 65 29 0a 20 20 20 20 20 20 28 67 69 6d  mage).      (gim
06e0: 70 2d 69 6d 61 67 65 2d 73 65 74 2d 61 63 74 69  p-image-set-acti
06f0: 76 65 2d 6c 61 79 65 72 20 69 6d 61 67 65 20 67  ve-layer image g
0700: 72 6f 75 70 29 29 29 0a 20 20 28 67 69 6d 70 2d  roup))).  (gimp-
0710: 63 6f 6e 74 65 78 74 2d 70 6f 70 29 0a 20 20 28  context-pop).  (
0720: 67 69 6d 70 2d 69 6d 61 67 65 2d 75 6e 64 6f 2d  gimp-image-undo-
0730: 67 72 6f 75 70 2d 65 6e 64 20 69 6d 61 67 65 29  group-end image)
0740: 0a 20 20 28 67 69 6d 70 2d 64 69 73 70 6c 61 79  .  (gimp-display
0750: 73 2d 66 6c 75 73 68 29 0a 20 20 29 0a 0a 28 73  s-flush).  )..(s
0760: 63 72 69 70 74 2d 66 75 2d 72 65 67 69 73 74 65  cript-fu-registe
0770: 72 20 22 73 63 72 69 70 74 2d 66 75 2d 73 67 2d  r "script-fu-sg-
0780: 61 64 64 2d 67 72 6f 75 70 2d 6d 61 73 6b 22 0a  add-group-mask".
0790: 20 20 22 41 64 64 20 47 72 6f 75 70 20 4d 61 73    "Add Group Mas
07a0: 6b 20 20 28 66 72 6f 6d 20 73 65 6c 65 63 74 69  k  (from selecti
07b0: 6f 6e 29 22 0a 20 20 22 49 6e 73 65 72 74 20 61  on)".  "Insert a
07c0: 20 6c 61 79 65 72 20 74 68 61 74 20 62 65 68 61   layer that beha
07d0: 76 65 73 20 61 73 20 61 20 67 72 6f 75 70 20 6d  ves as a group m
07e0: 61 73 6b 22 0a 20 20 22 53 61 75 6c 20 47 6f 6f  ask".  "Saul Goo
07f0: 64 65 22 0a 20 20 22 73 61 75 6c 67 6f 6f 64 65  de".  "saulgoode
0800: 22 0a 20 20 22 46 65 62 72 75 61 72 79 20 32 30  ".  "February 20
0810: 31 35 22 0a 20 20 22 2a 22 0a 20 20 53 46 2d 49  15".  "*".  SF-I
0820: 4d 41 47 45 20 20 20 20 22 49 6d 61 67 65 22 20  MAGE    "Image" 
0830: 20 20 20 30 0a 20 20 53 46 2d 44 52 41 57 41 42     0.  SF-DRAWAB
0840: 4c 45 20 22 44 72 61 77 61 62 6c 65 22 20 30 0a  LE "Drawable" 0.
0850: 20 20 29 0a 28 73 63 72 69 70 74 2d 66 75 2d 6d    ).(script-fu-m
0860: 65 6e 75 2d 72 65 67 69 73 74 65 72 20 22 73 63  enu-register "sc
0870: 72 69 70 74 2d 66 75 2d 73 67 2d 61 64 64 2d 67  ript-fu-sg-add-g
0880: 72 6f 75 70 2d 6d 61 73 6b 22 0a 20 20 22 3c 4c  roup-mask".  "<L
0890: 61 79 65 72 73 3e 22 0a 20 20 29 0a 28 73 63 72  ayers>".  ).(scr
08a0: 69 70 74 2d 66 75 2d 6d 65 6e 75 2d 72 65 67 69  ipt-fu-menu-regi
08b0: 73 74 65 72 20 22 73 63 72 69 70 74 2d 66 75 2d  ster "script-fu-
08c0: 73 67 2d 61 64 64 2d 67 72 6f 75 70 2d 6d 61 73  sg-add-group-mas
08d0: 6b 22 0a 20 20 22 3c 49 6d 61 67 65 3e 2f 4c 61  k".  "<Image>/La
08e0: 79 65 72 2f 4d 61 73 6b 22 0a 20 20 29 0a        yer/Mask".  ).