; background animation script-fu ; ;;; -------------------------------------------------------------------- ;;; version 0.1 by Raymond Ostertag from TITIX's merge.scm ;;; - Initial relase ;;; version 0.2 Raymond Ostertag ;;; - ported to Gimp 2.0 ;;; -------------------------------------------------------------------- ; ; 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 (merge img sizeX sizeY nb-layers img1 img2 layer1 layers-array2) (if (> nb-layers 0) (begin (gimp-selection-none img1) ;; selection none from img1 (gimp-edit-copy layer1) ;; copy active layer (let*( (layer-name (car (gimp-drawable-get-name(aref layers-array2 (- nb-layers 1))))) (merged-layer (car (gimp-layer-new img sizeX sizeY RGBA-IMAGE layer-name 100 NORMAL-MODE))) ) (gimp-image-add-layer img merged-layer 0) (gimp-edit-clear merged-layer) ;; new layer ( let ( (sel (car (gimp-edit-paste merged-layer FALSE))) ) (gimp-floating-sel-anchor sel) ;; paste into the new layer ) ) ;; selection from img2 (gimp-selection-none img2) (gimp-image-set-active-layer img2 (aref layers-array2 (- nb-layers 1))) (gimp-edit-copy (aref layers-array2 (- nb-layers 1))) (let*( (layer-name (car (gimp-drawable-get-name(aref layers-array2 (- nb-layers 1))))) (merged-layer (car (gimp-layer-new img sizeX sizeY RGBA-IMAGE layer-name 100 NORMAL-MODE))) ) (gimp-image-add-layer img merged-layer 0) (gimp-edit-clear merged-layer) ;; new layer (let ( (sel (car (gimp-edit-paste merged-layer FALSE))) ) (gimp-floating-sel-anchor sel) ;; paste into the new layer ) ) (gimp-drawable-set-visible (car (gimp-image-merge-visible-layers img 1)) FALSE) ;; merge the 2 layers (merge img sizeX sizeY (- nb-layers 1) img1 img2 layer1 layers-array2) ;; next )) ) (define (set-visible img nb-layers layers-array) (if (> nb-layers 0) (begin (gimp-drawable-set-visible (aref layers-array (- nb-layers 1)) TRUE) (set-visible img (- nb-layers 1) layers-array)))) (define (script-fu-animation-background img1 img2) (let*((old-bg-color (car (gimp-palette-get-background))) (old-fg-color (car (gimp-palette-get-foreground))) (sizeX (car (gimp-image-width img2))) (sizeY (car (gimp-image-height img2))) (img (car (gimp-image-new sizeX sizeY RGB))) ) (gimp-image-undo-disable img) (let*( (layer1 (car(gimp-image-get-active-layer img1))) (layers2 (gimp-image-get-layers img2)) (nb-layers2 (car layers2)) (layers-array2 (cadr layers2)) ) (merge img sizeX sizeY nb-layers2 img1 img2 layer1 layers-array2) ) (let*( (layers (gimp-image-get-layers img)) (nb-layers (car layers)) (layers-array (cadr layers)) ) (set-visible img nb-layers layers-array) ) (gimp-palette-set-foreground old-fg-color) (gimp-palette-set-background old-bg-color) (gimp-image-undo-enable img) (gimp-display-new img) ) ) (script-fu-register "script-fu-animation-background" "/Xtns/Script-Fu/Animation/Animation Background..." "Copy and paste the active layer of a background image to each layers of an animation (and create a new one)." "OSTERTAG Raymond from TITIX's merge.scm" "OSTERTAG Raymond and MARIN Laetitia" "Oct 2001" "" SF-IMAGE "Background" 1 SF-IMAGE "Animation" 0)