(define (script_fu_swirly_pattern qsize angle times filename) (define (whirl-it img drawable angle times) (if (> times 0) (begin (plug-in-whirl-pinch 1 img drawable angle 0.0 1.0) (whirl-it img drawable angle (- times 1))))) (let* ((hsize (* qsize 2)) (img-size (* qsize 4)) (img (car (gimp-image-new img-size img-size RGB))) (drawable (car (gimp-layer-new img img-size img-size RGB "Swirly pattern" 100 NORMAL))) ; Save old foreground and background colors (old-fg-color (car (gimp-palette-get-foreground))) (old-bg-color (car (gimp-palette-get-background)))) (gimp-image-undo-disable img) (gimp-image-add-layer img drawable 0) ; Render checkerboard (gimp-palette-set-foreground '(0 0 0)) (gimp-palette-set-background '(255 255 255)) (plug-in-checkerboard 1 img drawable 0 qsize) ; Whirl upper left (gimp-rect-select img 0 0 hsize hsize REPLACE 0 0) (whirl-it img drawable angle times) (gimp-invert img drawable) ; Whirl upper right (gimp-rect-select img hsize 0 hsize hsize REPLACE 0 0) (whirl-it img drawable (- angle) times) ; Whirl lower left (gimp-rect-select img 0 hsize hsize hsize REPLACE 0 0) (whirl-it img drawable (- angle) times) ; Whirl lower right (gimp-rect-select img hsize hsize hsize hsize REPLACE 0 0) (whirl-it img drawable angle times) (gimp-invert img drawable) ; Terminate (gimp-selection-none img) (gimp-palette-set-foreground old-fg-color) (gimp-palette-set-background old-bg-color) (gimp-image-undo-enable img) ; this has to be comment out or removed for non-gui use (gimp-display-new img) ; this will save the filename in the directory from which gimp was launched (gimp-file-save 1 img drawable filename filename) )) (script-fu-register "script_fu_swirly_pattern" "/Xtns/Script-Fu/Patterns/Swirly (tileable)" "Create a swirly pattern" "Federico Mena Quintero" "Federico Mena Quintero" "June 1997" "" SF-ADJUSTMENT "Quarter size" '(20 0 2048 1 10 0 1) SF-ADJUSTMENT "Whirl Angle" '(90 0 360 1 1 0 0) SF-ADJUSTMENT "Numer of times to whirl" '(4 0 128 1 1 0 1) SF-STRING "Filename" "swirly.jpg")