;;; $Id: layers-imagemap.scm,v 0.3 1998/03/23 03:25:42 tjchol01 Exp $ ;;; Create a client-side HTML imagemap for all image layers ;;; The most recent version of this file can be found at ;;; http://ci.uofl.edu/tom/software/Script_Fu/ ;;; Makes sense mostly in case of many non-overlapping layers. ;;; Writes the HTML code to .map and makes references to ;;; images in such named subdirectory. (define (script-fu-layers-imagemap image drawable) (let* ((layer-data (gimp-image-get-layers image)) (num-of-layers (car layer-data)) (layers (cadr layer-data)) (fcomps (strbreakup (car (gimp-image-get-filename image)) "/")) (fname (car (strbreakup (nth (- (length fcomps) 1) fcomps) "."))) (html (fopen (string-append fname ".map") "w")) (header (string-append "\n")) (index 0) ) (fwrite header html) (while (< index num-of-layers) (let* ((layer (aref layers index)) (name (car (gimp-layer-get-name layer))) (offsets (gimp-drawable-offsets layer)) ;; I shift by 15 because I use autocrop after flattening (ulx (- (car offsets) 15)) (uly (- (cadr offsets) 15)) (height (car (gimp-drawable-height layer))) (width (car (gimp-drawable-width layer))) (line (string-append " string ulx) "," (number->string uly) "," (number->string (+ width ulx)) "," (number->string (+ height uly)) "\" href=\"" fname "/" name ".jpg" "\" alt=\"" name "\">\n"))) (fwrite line html) ) (set! index (+ index 1))) (fwrite "\n" html) (fclose html) )) (define (%guash-layers-imagemap image drawable fileinfo) (if (number? image) (script-fu-layers-imagemap image drawable))) (script-fu-register "script-fu-layers-imagemap" "/Script-Fu/TJC/Layers Imagemap" "Create a client-side imagemap for all image layers" "Tomasz Cholewo (tjchol01@mecca.spd.louisville.edu)" "Tomasz Cholewo" "$Date: 1998/03/23 03:25:42 $" "RGB* GRAY* INDEXED*" SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 )