Commit 47ba671e authored by Adrian Likins's avatar Adrian Likins

-updated all of svens scripts

-adrian
parent 916d858e
Tue Feb 17 09:24:44 EST 1998 Adrian Likins <adrian@gimp.org>
* updated all of Sven Neumanns scripts. Including
blend-anim.scm, waves-anim.scm, drop-shadows.scm,
perspective-shadow.scm, round-corners.scm, slide.scm,
and selection-round.scm.
Sat Feb 14 15:34:08 PST 1998 Manish Singh <yosh@gimp.org>
* app/iscissors.c: iscissors released for initial public
......
......@@ -16,7 +16,11 @@
; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
;
;
; blend-anim.scm version 1.00 08/11/97
; blend-anim.scm version 1.01 12/13/97
;
; CHANGE-LOG:
; 1.00 - initial release
; 1.01 - some code cleanup, no real changes
;
; Copyright (C) 1997 Sven Neumann (neumanns@uni-duesseldorf.de)
;
......@@ -26,8 +30,8 @@
(define (multi-raise-layer image layer times)
(while (> times 0)
(gimp-image-raise-layer image layer)
(set! times (- times 1))))
(gimp-image-raise-layer image layer)
(set! times (- times 1))))
(define (script-fu-blend-anim img
......@@ -42,156 +46,165 @@
(height (car (gimp-image-height image)))
(layers (gimp-image-get-layers image))
(num-layers (car layers))
(layer-array (cadr layers)))
(layer-array (cadr layers))
(slots (- num-layers 2))
(bg-layer (aref layer-array (- num-layers 1)))
(max-width 0)
(max-height 0)
(offset-x 0)
(offset-y 0))
(if (> num-layers 2)
(begin
(gimp-image-disable-undo image)
(if (= looped TRUE)
(begin
(set! copy (car (gimp-layer-copy
(aref layer-array (- num-layers 2)) TRUE)))
; add a copy of the lowest blend layer on top
(let* ((copy (car (gimp-layer-copy
(aref layer-array (- num-layers 2)) TRUE))))
(gimp-image-add-layer image copy 0)
(set! layers (gimp-image-get-layers image))
(set! num-layers (car layers))
(set! layer-array (cadr layers))))
(set! layer-array (cadr layers))
(set! slots (- num-layers 2))
(set! bg-layer (aref layer-array (- num-layers 1)))))
(set! bg-layer (aref layer-array (- num-layers 1)))
(set! slots (- num-layers 2))
; make all layers invisible and check for sizes
(set! max-width 0)
(set! max-height 0)
(set! min-offset-x width)
(set! min-offset-y height)
(set! layer-count slots)
(gimp-layer-set-visible bg-layer FALSE)
(while (> layer-count -1)
(set! layer (aref layer-array layer-count))
(gimp-layer-set-visible layer FALSE)
(set! layer-width (+ (car (gimp-drawable-width layer))
(* max-blur 2)))
(set! layer-height (+ (car (gimp-drawable-height layer))
(let* ((min-offset-x width)
(min-offset-y height)
(layer-count slots))
(gimp-layer-set-visible bg-layer FALSE)
(while (> layer-count -1)
(let* ((layer (aref layer-array layer-count))
(layer-width (+ (car (gimp-drawable-width layer))
(* max-blur 2)))
(set! layer-offsets (gimp-drawable-offsets layer))
(set! layer-offset-x (- (car layer-offsets) max-blur))
(set! layer-offset-y (- (cadr layer-offsets) max-blur))
(layer-height (+ (car (gimp-drawable-height layer))
(* max-blur 2)))
(layer-offsets (gimp-drawable-offsets layer))
(layer-offset-x (- (car layer-offsets) max-blur))
(layer-offset-y (- (cadr layer-offsets) max-blur)))
(gimp-layer-set-visible layer FALSE)
(set! max-width (max max-width layer-width))
(set! max-height (max max-height layer-height))
(set! min-offset-x (min min-offset-x layer-offset-x))
(set! min-offset-y (min min-offset-y layer-offset-y))
(set! layer-count (- layer-count 1)))
(set! offset-x (- (car (gimp-drawable-offsets bg-layer))
min-offset-x))
(set! offset-y (- (cadr (gimp-drawable-offsets bg-layer))
min-offset-y))
(set! min-offset-y (min min-offset-y layer-offset-y))
(set! layer-count (- layer-count 1))))
(set! offset-x (- (car (gimp-drawable-offsets bg-layer))
min-offset-x))
(set! offset-y (- (cadr (gimp-drawable-offsets bg-layer))
min-offset-y)))
; create intermediate frames by merging copies of adjascent layers
; with the background layer
(let* ((layer-count slots))
(while (> layer-count 0)
(let* ((frame-count frames)
(lower-layer (aref layer-array layer-count))
(upper-layer (aref layer-array (- layer-count 1))))
(while (> frame-count 0)
(let* ((opacity (* (/ frame-count (+ frames 1)) 100))
(blur (/ (* opacity max-blur) 100))
(upper-copy (car (gimp-layer-copy upper-layer TRUE)))
(lower-copy (car (gimp-layer-copy lower-layer TRUE)))
(bg-copy (car (gimp-layer-copy bg-layer TRUE))))
(gimp-image-add-layer image bg-copy 0)
(gimp-image-add-layer image lower-copy 0)
(gimp-image-add-layer image upper-copy 0)
(gimp-layer-set-visible upper-copy TRUE)
(gimp-layer-set-visible lower-copy TRUE)
(gimp-layer-set-visible bg-copy TRUE)
(gimp-layer-set-opacity upper-copy (- 100 opacity))
(gimp-layer-set-opacity lower-copy opacity)
(gimp-layer-set-opacity bg-copy 100)
(if (> max-blur 0)
(let* ((layer-width (car (gimp-drawable-width upper-copy)))
(layer-height (car (gimp-drawable-height upper-copy))))
(gimp-layer-set-preserve-trans upper-copy FALSE)
(gimp-layer-resize upper-copy
(+ layer-width (* blur 2))
(+ layer-height (* blur 2))
blur
blur)
(plug-in-gauss-rle 1
image
upper-copy
blur
TRUE TRUE)
(set! blur (- max-blur blur))
(gimp-layer-set-preserve-trans lower-copy FALSE)
(set! layer-width (car (gimp-drawable-width
lower-copy)))
(set! layer-height (car (gimp-drawable-height
lower-copy)))
(gimp-layer-resize lower-copy
(+ layer-width (* blur 2))
(+ layer-height (* blur 2))
blur
blur)
(plug-in-gauss-rle 1
image
lower-copy
blur
TRUE TRUE)))
(gimp-layer-resize bg-copy
max-width
max-height
offset-x
offset-y)
(let* ((merged-layer (car (gimp-image-merge-visible-layers
image CLIP-TO-IMAGE))))
(gimp-layer-set-visible merged-layer FALSE))
(set! frame-count (- frame-count 1))))
(set! layer-count (- layer-count 1)))))
; merge all original blend layers but the lowest one
; with copies of the background layer
(let* ((layer-count 0))
(while (< layer-count slots)
(let* ((orig-layer (aref layer-array layer-count))
(bg-copy (car (gimp-layer-copy bg-layer TRUE))))
(gimp-image-add-layer image
bg-copy
(* layer-count (+ frames 1)))
(multi-raise-layer image
orig-layer
(+ (* (- slots layer-count) frames) 1))
(gimp-layer-set-visible orig-layer TRUE)
(gimp-layer-set-visible bg-copy TRUE)
(gimp-layer-resize bg-copy
max-width
max-height
offset-x
offset-y)
(let* ((merged-layer (car (gimp-image-merge-visible-layers
image CLIP-TO-IMAGE))))
(gimp-layer-set-visible merged-layer FALSE))
(set! layer-count (+ layer-count 1)))))
; merge the lowest blend layer with the background layer
(let* ((orig-layer (aref layer-array (- num-layers 2))))
(gimp-layer-set-visible bg-layer TRUE)
(gimp-layer-set-visible orig-layer TRUE)
(gimp-image-merge-visible-layers image CLIP-TO-IMAGE))
(set! layer-count slots)
(while (> layer-count 0)
(set! frame-count frames)
(set! lower-layer (aref layer-array layer-count))
(set! upper-layer (aref layer-array (- layer-count 1)))
(while (> frame-count 0)
(set! opacity (* (/ frame-count (+ frames 1)) 100))
(set! blur (/ (* opacity max-blur) 100))
(set! upper-copy (car (gimp-layer-copy upper-layer TRUE)))
(set! lower-copy (car (gimp-layer-copy lower-layer TRUE)))
(set! bg-copy (car (gimp-layer-copy bg-layer TRUE)))
(gimp-image-add-layer image bg-copy 0)
(gimp-image-add-layer image lower-copy 0)
(gimp-image-add-layer image upper-copy 0)
(gimp-layer-set-visible upper-copy TRUE)
(gimp-layer-set-visible lower-copy TRUE)
(gimp-layer-set-visible bg-copy TRUE)
(gimp-layer-set-opacity upper-copy (- 100 opacity))
(gimp-layer-set-opacity lower-copy opacity)
(gimp-layer-set-opacity bg-copy 100)
(if (> max-blur 0)
(begin
(gimp-layer-set-preserve-trans upper-copy FALSE)
(set! layer-width (car (gimp-drawable-width upper-copy)))
(set! layer-height (car (gimp-drawable-height upper-copy)))
(gimp-layer-resize upper-copy
(+ layer-width (* blur 2))
(+ layer-height (* blur 2))
blur
blur)
(plug-in-gauss-rle 1
image
upper-copy
blur
TRUE TRUE)
(set! blur (- max-blur blur))
(gimp-layer-set-preserve-trans lower-copy FALSE)
(set! layer-width (car (gimp-drawable-width lower-copy)))
(set! layer-height (car (gimp-drawable-height lower-copy)))
(gimp-layer-resize lower-copy
(+ layer-width (* blur 2))
(+ layer-height (* blur 2))
blur
blur)
(plug-in-gauss-rle 1
image
lower-copy
blur
TRUE TRUE)))
(gimp-layer-resize bg-copy
max-width
max-height
offset-x
offset-y)
(set! merged-layer (car (gimp-image-merge-visible-layers
image CLIP-TO-IMAGE)))
(gimp-layer-set-visible merged-layer FALSE)
(set! frame-count (- frame-count 1)))
(set! layer-count (- layer-count 1)))
(set! layer-count 0)
(while (< layer-count slots)
(set! orig-layer (aref layer-array layer-count))
(set! bg-copy (car (gimp-layer-copy bg-layer TRUE)))
(gimp-image-add-layer image
bg-copy
(* layer-count (+ frames 1)))
(multi-raise-layer image
orig-layer
(+ (* (- slots layer-count) frames) 1))
(gimp-layer-set-visible orig-layer TRUE)
(gimp-layer-set-visible bg-copy TRUE)
(gimp-layer-resize bg-copy
max-width
max-height
offset-x
offset-y)
(set! merged-layer (car (gimp-image-merge-visible-layers
image CLIP-TO-IMAGE)))
(gimp-layer-set-visible merged-layer FALSE)
(set! layer-count (+ layer-count 1)))
(set! orig-layer (aref layer-array (- num-layers 2)))
(gimp-layer-set-visible bg-layer TRUE)
(gimp-layer-set-visible orig-layer TRUE)
(gimp-image-merge-visible-layers image CLIP-TO-IMAGE)
; make all layers visible again
(set! result-layers (gimp-image-get-layers image))
(set! num-result-layers (car result-layers))
(set! result-layer-array (cadr result-layers))
(set! layer-count (- num-result-layers 1))
(while (> layer-count -1)
(set! layer (aref result-layer-array layer-count))
(gimp-layer-set-visible layer TRUE)
(set! name (string-append "Frame "
(number->string
(- num-result-layers layer-count) 10)))
(gimp-layer-set-name layer name)
(set! layer-count (- layer-count 1)))
(if (= looped TRUE)
(gimp-image-remove-layer image (aref result-layer-array 0)))
(let* ((result-layers (gimp-image-get-layers image))
(num-result-layers (car result-layers))
(result-layer-array (cadr result-layers))
(layer-count (- num-result-layers 1)))
(while (> layer-count -1)
(let* ((layer (aref result-layer-array layer-count))
(name (string-append "Frame "
(number->string
(- num-result-layers layer-count) 10))))
(gimp-layer-set-visible layer TRUE)
(gimp-layer-set-name layer name)
(set! layer-count (- layer-count 1))))
(if (= looped TRUE)
; remove the topmost layer
(gimp-image-remove-layer image (aref result-layer-array 0))))
(gimp-image-enable-undo image)
(gimp-display-new image)
......@@ -203,7 +216,7 @@
animation can be saved"
"Sven Neumann (neumanns@uni-duesseldorf.de)"
"Sven Neumann"
"08/11/1997"
"12/13/1997"
"RGB RGBA GRAY GRAYA"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
......
......@@ -16,11 +16,12 @@
; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
;
;
; drop-shadow.scm version 1.01 08/11/97
; drop-shadow.scm version 1.02 12/13/97
;
; CHANGE-LOG:
; 1.00 - initial release
; 1.01 - fixed the problem with a remaining copy of the selection
; 1.02 - some code cleanup, no real changes
;
;
; Copyright (C) 1997 Sven Neumann (neumanns@uni-duesseldorf.de)
......@@ -47,7 +48,10 @@
(type (car (gimp-drawable-type-with-alpha drawable)))
(image-width (car (gimp-image-width image)))
(image-height (car (gimp-image-height image)))
(old-bg (car (gimp-palette-get-background))))
(old-bg (car (gimp-palette-get-background)))
(from-selection 0)
(active-selection 0)
(shadow-layer 0))
(gimp-image-disable-undo image)
......@@ -60,64 +64,65 @@
(set! from-selection TRUE)
(set! active-selection (car (gimp-selection-save image)))))
(set! selection-bounds (gimp-selection-bounds image))
(set! select-offset-x (cadr selection-bounds))
(set! select-offset-y (caddr selection-bounds))
(set! select-width (- (cadr (cddr selection-bounds)) select-offset-x))
(set! select-height (- (caddr (cddr selection-bounds)) select-offset-y))
(let* ((selection-bounds (gimp-selection-bounds image))
(select-offset-x (cadr selection-bounds))
(select-offset-y (caddr selection-bounds))
(select-width (- (cadr (cddr selection-bounds)) select-offset-x))
(select-height (- (caddr (cddr selection-bounds)) select-offset-y))
(set! shadow-width (+ select-width (* 2 shadow-blur)))
(set! shadow-height (+ select-height (* 2 shadow-blur)))
(set! shadow-offset-x (- select-offset-x shadow-blur))
(set! shadow-offset-y (- select-offset-y shadow-blur))
(if (= allow-resize TRUE)
(begin
(set! new-image-width image-width)
(set! new-image-height image-height)
(set! image-offset-x 0)
(set! image-offset-y 0)
(if (< (+ shadow-offset-x shadow-transl-x) 0)
(begin
(set! image-offset-x (- 0 (+ shadow-offset-x shadow-transl-x)))
(shadow-width (+ select-width (* 2 shadow-blur)))
(shadow-height (+ select-height (* 2 shadow-blur)))
(shadow-offset-x (- select-offset-x shadow-blur))
(shadow-offset-y (- select-offset-y shadow-blur)))
(if (= allow-resize TRUE)
(let* ((new-image-width image-width)
(new-image-height image-height)
(image-offset-x 0)
(image-offset-y 0))
(if (< (+ shadow-offset-x shadow-transl-x) 0)
(begin
(set! image-offset-x (- 0 (+ shadow-offset-x
shadow-transl-x)))
(set! shadow-offset-x (- 0 shadow-transl-x))
(set! new-image-width (- new-image-width image-offset-x))))
(if (< (+ shadow-offset-y shadow-transl-y) 0)
(begin
(set! image-offset-y (- 0 (+ shadow-offset-y shadow-transl-y)))
(if (< (+ shadow-offset-y shadow-transl-y) 0)
(begin
(set! image-offset-y (- 0 (+ shadow-offset-y
shadow-transl-y)))
(set! shadow-offset-y (- 0 shadow-transl-y))
(set! new-image-height (- new-image-height image-offset-y))))
(if (> (+ (+ shadow-width shadow-offset-x) shadow-transl-x)
new-image-width)
(set! new-image-width
(+ (+ shadow-width shadow-offset-x) shadow-transl-x)))
(if (> (+ (+ shadow-height shadow-offset-y) shadow-transl-y)
new-image-height)
(set! new-image-height
(+ (+ shadow-height shadow-offset-y) shadow-transl-y)))
(gimp-image-resize image
new-image-width
new-image-height
image-offset-x
image-offset-y)))
(set! shadow-layer (car (gimp-layer-new image
shadow-width
shadow-height
type
"Drop-Shadow"
shadow-opacity
NORMAL)))
(gimp-layer-set-offsets shadow-layer
shadow-offset-x
shadow-offset-y)
(if (> (+ (+ shadow-width shadow-offset-x) shadow-transl-x)
new-image-width)
(set! new-image-width
(+ (+ shadow-width shadow-offset-x) shadow-transl-x)))
(if (> (+ (+ shadow-height shadow-offset-y) shadow-transl-y)
new-image-height)
(set! new-image-height
(+ (+ shadow-height shadow-offset-y) shadow-transl-y)))
(gimp-image-resize image
new-image-width
new-image-height
image-offset-x
image-offset-y)))
(set! shadow-layer (car (gimp-layer-new image
shadow-width
shadow-height
type
"Drop-Shadow"
shadow-opacity
NORMAL)))
(gimp-layer-set-offsets shadow-layer
shadow-offset-x
shadow-offset-y))
(gimp-drawable-fill shadow-layer TRANS-IMAGE-FILL)
(gimp-palette-set-background shadow-color)
......@@ -155,7 +160,7 @@
alpha-channel"
"Sven Neumann (neumanns@uni-duesseldorf.de)"
"Sven Neumann"
"08/11/1997"
"12/13/1997"
"RGB RGBA GRAY GRAYA"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
......
......@@ -16,11 +16,12 @@
; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
;
;
; perspective-shadow.scm version 1.01 08/11/97
; perspective-shadow.scm version 1.02 12/13/97
;
; CHANGE-LOG:
; 1.00 - initial release
; 1.01 - fixed the problem with a remaining copy of the selection
; 1.02 - some code cleanup, no real changes
;
;
; Copyright (C) 1997 Sven Neumann (neumanns@uni-duesseldorf.de)
......@@ -48,7 +49,11 @@
(type (car (gimp-drawable-type-with-alpha drawable)))
(image-width (car (gimp-image-width image)))
(image-height (car (gimp-image-height image)))
(old-bg (car (gimp-palette-get-background))))
(old-bg (car (gimp-palette-get-background)))
(from-selection 0)
(active-selection 0)
(shadow-layer 0))
(if (= rel-distance 0) (set! rel-distance 999999))
(gimp-image-disable-undo image)
......@@ -62,99 +67,99 @@
(set! from-selection TRUE)
(set! active-selection (car (gimp-selection-save image)))))
(set! selection-bounds (gimp-selection-bounds image))
(set! select-offset-x (cadr selection-bounds))
(set! select-offset-y (caddr selection-bounds))
(set! select-width (- (cadr (cddr selection-bounds)) select-offset-x))
(set! select-height (- (caddr (cddr selection-bounds)) select-offset-y))
(let* ((selection-bounds (gimp-selection-bounds image))
(select-offset-x (cadr selection-bounds))
(select-offset-y (caddr selection-bounds))
(select-width (- (cadr (cddr selection-bounds)) select-offset-x))
(select-height (- (caddr (cddr selection-bounds)) select-offset-y))
(set! abs-length (* rel-length select-height))
(set! abs-distance (* rel-distance select-height))
(set! half-bottom-width (/ select-width 2))
(set! half-top-width (* half-bottom-width
(abs-length (* rel-length select-height))
(abs-distance (* rel-distance select-height))
(half-bottom-width (/ select-width 2))
(half-top-width (* half-bottom-width
(/ (- rel-distance rel-length) rel-distance)))
(set! x0 (+ select-offset-x (+ (- half-bottom-width half-top-width)
(x0 (+ select-offset-x (+ (- half-bottom-width half-top-width)
(* (cos alpha) abs-length))))
(set! y0 (+ select-offset-y (- select-height
(y0 (+ select-offset-y (- select-height
(* (sin alpha) abs-length))))
(set! x1 (+ x0 (* 2 half-top-width)))
(set! y1 y0)
(set! x2 select-offset-x)
(set! y2 (+ select-offset-y select-height))
(set! x3 (+ x2 select-width))
(set! y3 y2)
(x1 (+ x0 (* 2 half-top-width)))
(y1 y0)
(x2 select-offset-x)
(y2 (+ select-offset-y select-height))
(x3 (+ x2 select-width))
(y3 y2)
(shadow-width (+ (- (max x1 x3) (min x0 x2)) (* 2 shadow-blur)))
(shadow-height (+ (- (max y1 y3) (min y0 y2)) (* 2 shadow-blur)))
(shadow-offset-x (- (min x0 x2) shadow-blur))
(shadow-offset-y (- (min y0 y2) shadow-blur)))
(set! shadow-layer (car (gimp-layer-new image
select-width
select-height
type
"Perspective Shadow"
shadow-opacity
NORMAL)))
(gimp-layer-set-offsets shadow-layer select-offset-x select-offset-y)
(gimp-drawable-fill shadow-layer TRANS-IMAGE-FILL)
(gimp-palette-set-background shadow-color)
(gimp-edit-fill image shadow-layer)
(gimp-selection-none image)
(set! shadow-width (+ (- (max x1 x3) (min x0 x2)) (* 2 shadow-blur)))
(set! shadow-height (+ (- (max y1 y3) (min y0 y2)) (* 2 shadow-blur)))
(set! shadow-offset-x (- (min x0 x2) shadow-blur))
(set! shadow-offset-y (- (min y0 y2) shadow-blur))
(if (= allow-resize TRUE)
(begin
(set! new-image-width image-width)
(set! new-image-height image-height)
(set! image-offset-x 0)
(set! image-offset-y 0)
(if (< shadow-offset-x 0)
(begin
(set! image-offset-x (- 0 shadow-offset-x))
(set! shadow-layer (car (gimp-layer-new image
select-width
select-height
type
"Perspective Shadow"
shadow-opacity
NORMAL)))
(gimp-layer-set-offsets shadow-layer select-offset-x select-offset-y)
(gimp-drawable-fill shadow-layer TRANS-IMAGE-FILL)
(gimp-palette-set-background shadow-color)
(gimp-edit-fill image shadow-layer)
(gimp-selection-none image)
(if (= allow-resize TRUE)
(let* ((new-image-width image-width)
(new-image-height image-height)
(image-offset-x 0)
(image-offset-y 0))
(if (< shadow-offset-x 0)
(begin