; 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 (sg-copy-mask-to-layers image drawable) (gimp-image-undo-group-start image) (let ((active-layer (car (gimp-image-get-active-layer image))) (orig-sel (car (gimp-selection-save image))) (layers (let loop ((layers (vector->list (cadr (gimp-image-get-layers image)))) (visibles '()) ) (if (null? layers) (reverse visibles) (loop (cdr layers) (if (zero? (car (gimp-drawable-get-visible (car layers)))) visibles (cons (car layers) visibles) ))))) ) (let ((source-layer (car (gimp-layer-new-from-drawable active-layer image))) (source-mask 0) (mask 0) ) (gimp-image-add-layer image source-layer -1) (set! source-mask (car (gimp-layer-get-mask source-layer))) (when (= source-mask -1) (set! source-mask (car (gimp-layer-create-mask source-layer ADD-COPY-MASK))) (gimp-layer-add-mask source-layer source-mask)) (gimp-selection-load source-mask) (let loop ((layers layers)) (unless (null? layers) (when (= (car (gimp-layer-get-mask (car layers))) -1) (set! mask (car (gimp-layer-create-mask (car layers) ADD-SELECTION-MASK))) (gimp-layer-add-mask (car layers) mask) ) (loop (cdr layers)) )) (gimp-image-remove-layer image source-layer) ) (gimp-selection-load orig-sel) (gimp-image-remove-channel image orig-sel) ) (gimp-image-undo-group-end image) (gimp-displays-flush) ) (script-fu-register "sg-copy-mask-to-layers" "_Copy mask to layers" "Copy the mask from the current layer to all visible layers" "Saul Goode" "Saul Goode" "6/14/2006 (updated Sept 2012)" "*" SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 ) (script-fu-menu-register "sg-copy-mask-to-layers" "/Layer/Mask") (script-fu-menu-register "sg-copy-mask-to-layers" "")