; roll with background ; Original version : ; Copyright (C) 2000 MARIN Laetitia ; titix@amin.unice.fr ; Version 0.2 Raymond Ostertag 2004/09 ; - Ported to gimp2 ; - Changed menu entry ; (define (set-visible-and-timed-100 img nb-layers layers-array) (if (> nb-layers 0) (begin (let ((lay (aref layers-array (- nb-layers 1))) (new-name (string-append "anim" (string-append (number->string nb-layers) "(150ms)")))) (gimp-drawable-set-visible lay TRUE) (gimp-drawable-set-name lay new-name)) (set-visible-and-timed-100 img (- nb-layers 1) layers-array)))) (define (create-roll-with-bg count img is-back back-layer background original decalage intervalle orientation) (if (> count 0) (begin (if (and (not (equal? decalage 90)) (not (equal? decalage -90))) (let ((copy-original (car (gimp-layer-copy original TRUE))) (copy-background (car (gimp-layer-copy background TRUE)))) (gimp-image-add-layer img copy-background 0) (if (eq? is-back 1) (let ((copy-back-layer (car (gimp-layer-copy back-layer TRUE)))) (gimp-image-add-layer img copy-back-layer 0) (gimp-drawable-set-visible copy-back-layer TRUE))) (gimp-image-add-layer img copy-original 0) (plug-in-map-object 1 img copy-original 0 0.5 0.5 2.0 0.5 0.5 0 1 0 0 0 1 0 0 (if (>= orientation 1) decalage 0) (if (< orientation 1) decalage 0) 2 '(255 255 255) 0.5 -0.5 2 0 0 0 0.3 1 0.5 0.5 27 TRUE FALSE FALSE TRUE 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 ) (gimp-drawable-set-visible copy-background TRUE) (gimp-drawable-set-visible copy-original TRUE) (gimp-drawable-set-visible (car (gimp-image-merge-visible-layers img 1)) FALSE))) (create-roll-with-bg (- count 1) img is-back back-layer background original (+ decalage intervalle) intervalle orientation)))) (define (script-fu-roll-anim img drawable is-back back color revolution orientation nb-frames) (let* ((old-bg-color (car (gimp-palette-get-background))) (old-fg-color (car (gimp-palette-get-foreground))) (img-back (car (gimp-drawable-get-image back))) (sizeX (car (gimp-image-width img))) (sizeY (car (gimp-image-height img))) (intervalle (/ (if (equal? revolution TRUE) 360 180) nb-frames)) (img2 (car (gimp-image-new sizeX sizeY RGB))) (nav-layer (car (gimp-layer-new img2 sizeX sizeY RGBA-IMAGE "copy" 100 NORMAL-MODE))) (back-layer (car (gimp-layer-new img2 sizeX sizeY RGBA-IMAGE "background image" 100 NORMAL-MODE))) (background (car (gimp-layer-new img2 sizeX sizeY RGBA-IMAGE "background" 100 NORMAL-MODE)))) (gimp-image-undo-disable img2) (gimp-image-add-layer img2 background 0) (gimp-image-add-layer img2 back-layer 0) (gimp-image-add-layer img2 nav-layer 0) ;; init layers (gimp-palette-set-foreground color) (gimp-edit-fill background FOREGROUND-FILL) (gimp-edit-clear back-layer) (gimp-edit-clear nav-layer) ;; copy concerned layer (gimp-selection-all img) (gimp-edit-copy drawable) (let ((sel (car (gimp-edit-paste nav-layer TRUE)))) (gimp-floating-sel-anchor sel)) ;; copy back (gimp-selection-all img-back) (gimp-edit-copy back) (let ((sel (car (gimp-edit-paste back-layer TRUE)))) (gimp-floating-sel-anchor sel)) (gimp-drawable-set-visible nav-layer FALSE) (gimp-drawable-set-visible background FALSE) (gimp-drawable-set-visible back-layer FALSE) (gimp-selection-none img2) ;; begin animation (create-roll-with-bg nb-frames img2 is-back back-layer background nav-layer intervalle intervalle orientation) (gimp-image-remove-layer img2 background) (gimp-image-remove-layer img2 back-layer) (gimp-image-remove-layer img2 nav-layer) (let* ((layers (gimp-image-get-layers img2)) (nb-layers (car layers)) (layers-array (cadr layers))) (set-visible-and-timed-100 img2 nb-layers layers-array)) (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-roll-anim" "/Script-Fu/Animators/Roll..." "make a rool animation given a choosen drawable" "MARIN Laetitia from an idea of Mr Toutankh" "MARIN Laetitia from an idea of Mr Toutankh" "Avril 2001" "" SF-IMAGE "Image to stamp" 0 SF-DRAWABLE "Drawable to stamp" 0 SF-TOGGLE "use background Drawable" 0 SF-DRAWABLE "Background Drawable" 0 SF-COLOR "back color to use" '(0 0 0) SF-TOGGLE "360 revolution" 0 SF-OPTION "orientation" '("horizontal" "vertical") SF-ADJUSTMENT "Frames number" '(6 6 18 2 0 0 1))