; travel anim plugin ; 2000 MARIN Laetitia ; titix@amin.unice.fr ; ; version 0.1a Raymond Ostertag 2004/09 ; - 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-travel-anim img drawable color sens) (let* ((old-bg-color (car (gimp-palette-get-background))) (old-fg-color (car (gimp-palette-get-foreground))) (sizeX (car (gimp-image-width img))) (sizeY (car (gimp-image-height img))) (intervalle (/ sizeX 10)) (img2 (car (gimp-image-new (* sizeX 2) sizeY RGB))) (n-layer1 (car (gimp-layer-new img2 (* sizeX 2) sizeY RGBA-IMAGE "copy" 100 NORMAL))) (n-layer2 (car (gimp-layer-new img2 (* sizeX 2) sizeY RGBA-IMAGE "copy" 100 NORMAL))) (background (car (gimp-layer-new img2 (* sizeX 2) sizeY RGBA-IMAGE "background" 100 NORMAL)))) (gimp-image-undo-disable img2) (gimp-image-add-layer img2 background 0) (gimp-image-add-layer img2 n-layer1 0) (gimp-image-add-layer img2 n-layer2 0) ;; init layers (gimp-palette-set-foreground color) (gimp-edit-fill background FG-IMAGE-FILL) (gimp-edit-clear n-layer1) (gimp-edit-clear n-layer2) ;; copy current image (gimp-selection-all img) (gimp-edit-copy drawable) ;;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 (/ sizeX 2)) 0)) (let ((sel (car (gimp-edit-paste n-layer2 TRUE)))) (gimp-floating-sel-anchor sel) (gimp-layer-translate n-layer2 (+ 0 (/ sizeX 2)) 0)) ;; begin animation (let ((merged-layer (car (gimp-image-merge-visible-layers img2 1)))) (if (= sens 0) (gimp-layer-translate merged-layer (- 0 (/ sizeX 2)) 0) (gimp-layer-translate merged-layer (+ 0 (/ sizeX 2)) 0)) (gimp-selection-none img2) (gimp-edit-copy merged-layer) (if (= sens 0) (create-sliding 10 img2 merged-layer intervalle sizeX intervalle) (create-sliding 10 img2 merged-layer (- 0 intervalle) sizeX (- 0 intervalle)))) ;; resize image (gimp-image-crop img2 sizeX sizeY (/ sizeX 2) 0) (gimp-selection-none img) (gimp-palette-set-foreground old-fg-color) (gimp-palette-set-background old-bg-color) (gimp-image-undo-enable img2) (gimp-display-new img2))) (script-fu-register "script-fu-travel-anim" "/Script-Fu/Animators/Travelling with background color..." "make a travelling animation given a choosen image and drawable" "MARIN Laetitia" "MARIN Laetitia" "Fev 2000" "" SF-IMAGE "Image to stamp" 0 SF-DRAWABLE "Drawable to stamp" 0 SF-COLOR "back color to use" '(0 0 0) SF-TOGGLE "inverse direction" 0)