; travel anim plugin ; Original version ; 2000 MARIN Laetitia ; titix@amin.unice.fr ; Version 0.2 Raymond Ostertag 2004/09 ; - Ported to Gimp2 ; - Changed menu entry ; (define (create-sliding count img original decalage sizeX intervalle) (if (> count 0) (begin (let ((copy (car (gimp-layer-copy original TRUE)))) (gimp-image-add-layer img copy 0) (gimp-layer-translate copy decalage 0) (create-sliding (- count 1) img original (+ decalage intervalle) sizeX intervalle))))) (define (script-fu-merge2-anim drw1 drw2 color sens) (let* ((old-bg-color (car (gimp-palette-get-background))) (old-fg-color (car (gimp-palette-get-foreground))) (img1 (car (gimp-drawable-get-image drw1))) (img2 (car (gimp-drawable-get-image drw2))) (sizeX1 (car (gimp-image-width img1))) (sizeY1 (car (gimp-image-height img1))) (sizeX2 (car (gimp-image-width img2))) (sizeY2 (car (gimp-image-height img2))) (sizeX (+ (+ sizeX1 sizeX2) sizeX1)) (sizeY (if (> sizeY1 sizeY2) sizeY1 sizeY2)) (img (car (gimp-image-new sizeX sizeY RGB))) (intervalle (/ sizeX 30)) (n-layer1 (car (gimp-layer-new img sizeX sizeY RGBA-IMAGE "copy img1" 100 NORMAL-MODE))) (n-layer2 (car (gimp-layer-new img sizeX sizeY RGBA-IMAGE "copy img2" 100 NORMAL-MODE))) (n-layer3 (car (gimp-layer-new img sizeX sizeY RGBA-IMAGE "copy (2) img1" 100 NORMAL-MODE))) (background (car (gimp-layer-new img sizeX sizeY RGBA-IMAGE "background" 100 NORMAL-MODE)))) (gimp-image-undo-disable img) (gimp-image-add-layer img background 0) (gimp-image-add-layer img n-layer1 0) (gimp-image-add-layer img n-layer2 0) (gimp-image-add-layer img n-layer3 0) ;; init layers (gimp-palette-set-foreground color) (gimp-edit-fill background FOREGROUND-FILL) (gimp-edit-clear n-layer1) (gimp-edit-clear n-layer2) (gimp-edit-clear n-layer3) ;; copy image 1 (gimp-selection-all img1) (gimp-edit-copy drw1) ;;create double copy of image (let ((sel (car (gimp-edit-paste n-layer1 TRUE)))) (gimp-floating-sel-anchor sel) (gimp-layer-translate n-layer1 (- 0 sizeX1) 0)) ;; copy image 2 (gimp-selection-all img2) (gimp-edit-copy drw2) (let ((sel (car (gimp-edit-paste n-layer2 TRUE)))) (gimp-floating-sel-anchor sel)) ;; copy image 1 (gimp-selection-all img1) (gimp-edit-copy drw1) ;;create double copy of image (let ((sel (car (gimp-edit-paste n-layer3 TRUE)))) (gimp-floating-sel-anchor sel) (gimp-layer-translate n-layer3 (+ 0 sizeX2) 0)) ;; begin animation (let ((merged-layer (car (gimp-image-merge-visible-layers img 1)))) (if (= sens 0) (gimp-layer-translate merged-layer (- 0 sizeX1) 0) (gimp-layer-translate merged-layer (+ 0 sizeX1) 0)) (gimp-selection-none img) (gimp-edit-copy merged-layer) (if (= sens 0) (create-sliding 20 img merged-layer intervalle sizeX1 intervalle) (create-sliding 20 img merged-layer (- 0 intervalle) sizeX1 (- 0 intervalle)))) ;; resize image (gimp-image-crop img sizeX1 sizeY1 sizeX1 0) (gimp-selection-none img1) (gimp-selection-none img2) (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-merge2-anim" "/Xtns/Script-Fu/Animation/Travelling..." "make a travelling animation with two choosen drawable and a chosen background color" "MARIN Laetitia" "MARIN Laetitia" "Fev 2000" "" SF-DRAWABLE "Drawable 1" 0 SF-DRAWABLE "Drawable 2" 0 SF-COLOR "back color to use" '(0 0 0) SF-TOGGLE "inverse direction" 0)