(define (find-centre-of-box x1 y1 x2 y2) (cons (+ x1 (/ (- x2 x1) 2)) (+ y1 (/ (- y2 y1) 2)))) (define (cadddr p) (car (cdr (cdr (cdr p))))) (define (caddddr p) (car (cdr (cdr (cdr (cdr p)))))) (define (script-fu-giraffify image drawable) (let* ((GIRAFFE "giraffe.jpg") (giraffe (car (gimp-file-load RUN-NONINTERACTIVE GIRAFFE GIRAFFE))) (drawable-giraffe (car (gimp-image-get-active-drawable giraffe))) (layer (car (gimp-layer-new-from-drawable drawable-giraffe image))) ) (gimp-image-resize image 681 1022 0 0) (gimp-image-add-layer image layer -1) (gimp-layer-set-name layer "GIRAFFE!!!! :D :D") (gimp-selection-invert image) (gimp-layer-add-alpha drawable) (gimp-edit-clear drawable) (gimp-image-raise-layer-to-top image drawable) (gimp-selection-invert image) (let* ((bounds (gimp-selection-bounds image)) (centre (find-centre-of-box (cadr bounds) (caddr bounds) (cadddr bounds) (caddddr bounds))) (x-cent (car centre)) (y-cent (cdr centre)) (GIRAFFE-X 185) (GIRAFFE-Y 120) (move-x (- GIRAFFE-X x-cent)) (move-y (- GIRAFFE-Y y-cent))) (gimp-layer-translate drawable move-x move-y)) (gimp-selection-clear image) (gimp-image-merge-visible-layers image 0) (gimp-displays-flush))) (script-fu-register "script-fu-giraffify" _"/Script-Fu/Shiny/Giraffify" "Make giraffed" "Nick & Blodgett" ; author "Pathos Global Solutions Image Processing Subdivision" ; copyright holder "2050/2/3" ; date "" ; image types SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0)