[Gimp-user] script-fu plugin
Adonj Adonj
adonj at hotmail.com
Sat Sep 27 21:03:52 PDT 2008
I'm using gimp2.4.7 in windows XP. I copied a script-fu plugin I found to my C:\Program Files\GIMP-2.0\lib\gimp\2.0\plug-ins, which should
copy a layer mask to multiple layers or apply a layer mask to multiple layers.
I get an error each time I make an attempt to use it, which states:
"Error: cons: needs 2 argument(s)"
I'm not familiar with the script. Could there be a simple solution to that?
Here is the script:
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
(define (script-fu-copy-mask-to-layers image drawable)
(define (visible-layers img)
(let* (
(all-layers (gimp-image-get-layers img))
(i (car all-layers))
(viewable ())
(tmp FALSE))
(set! all-layers (cadr all-layers))
(while (> i 0)
(set! tmp (car (gimp-drawable-get-visible (aref
all-layers (- i 1)))))
(if (= tmp TRUE)
(set! viewable (append viewable (cons (aref all-layers
(- i 1))))))
(set! i (- i 1)))
viewable))
(let* (
(active-layer (car (gimp-image-get-active-layer image)))
(source-layer)
(source-mask)
(layers)
(mask))
(set! layers (visible-layers image))
(gimp-image-undo-group-start image)
(set! source-layer (car (gimp-layer-new-from-drawable
active-layer image)))
(gimp-image-add-layer image source-layer -1)
(set! source-mask (car (gimp-layer-get-mask source-layer)))
(if (= source-mask -1)
(begin
(set! source-mask (car (gimp-layer-create-mask
source-layer ADD-COPY-MASK)))
(gimp-layer-add-mask source-layer source-mask)))
(while (car layers)
(if (= (car (gimp-layer-get-mask (car layers))) -1)
(if (= (car (gimp-drawable-has-alpha (car layers))) 1)
(set! mask (car (gimp-layer-add-mask (car layers)
source-mask)))))
(set! layers (cdr layers)))
(gimp-image-remove-layer image source-layer)
(gimp-image-undo-group-end image)
(gimp-displays-flush)))
(script-fu-register "script-fu-copy-mask-to-layers"
"/Script-Fu/_Copy mask"
"Copy the mask from the current layer to all visible layers"
"Saul Goode"
"Saul Goode"
"6/14/2006"
""
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
)
_________________________________________________________________
More information about the Gimp-user
mailing list