;;; File: ;;; extra.scm ;;; Author: ;;; Samuel A. Rebelsky ;;; Contents: ;;; A variety of methods for exploration of "higher-order graphics" ;;; with Script-Fu in the GIMP. ;;; Note: ;;; These methods are generally and intentionally under-documented. (define combine-images (lambda (layer0 layer1 combine) (let* ((x 0) (y 0) (width (car (gimp-drawable-width layer0))) (height (car (gimp-drawable-height layer1))) (newimg (new-image width height)) (newlayer (cadr newimg))) (while (< y height) (set! x 0) ; (print (list "row" y)) (while (< x width) (let* ((pixel0 (get-pixel layer0 x y)) (pixel1 (get-pixel layer1 x y )) (newpixel (combine pixel0 pixel1))) ; (print (list x y pixel0 pixel1 newpixel)) ; DEBUG (set-pixel! newlayer x y newpixel) (set! x (+ x 1)))) (set! y (+ y 1))) newimg))) (define avg (lambda (ratio) (lambda (color0 color1) (rgb (+ (* ratio (red color0)) (* (- 1 ratio) (red color1))) (+ (* ratio (green color0)) (* (- 1 ratio) (green color1))) (+ (* ratio (blue color0)) (* (- 1 ratio) (blue color1))))))) (define wrap (lambda (x) (cond ((> x 256) (- x 256)) ((< x 0) (+ x 256)) (#t x)))) (define silly (lambda (color0 color1) (rgb (wrap (+ (red color0) (red color1))) (wrap (+ (green color0) (green color1))) (wrap (+ (blue color0) (blue color1)))))) (define subtract (lambda (color0 color1) (rgb (wrap (- (red color0) (red color1))) (wrap (- (green color0) (green color1))) (wrap (- (blue color0) (blue color1)))))) ; HACK! (define copyTo (lambda (source sourcelayer target targetlayer n) (gimp-rect-select source 0 0 72 100 2 0 0) (gimp-edit-copy sourcelayer) (gimp-rect-select target (* n 72) 0 72 100 2 0 0) (gimp-edit-paste targetlayer TRUE)))