1 ;Adds a white border and a faint glow, based on the alpha channel
2 ;Input: filesIn (wildcard * possible) borderGrow borderFeather objectShrink objectFeather glowBlur
3 ;Output: RLE compressed .tga file(s) (overwrites existing tga files)
5 (define (whiteborder filesIn glowBlur borderGrow borderFeather objectShrink objectFeather)
8 (fileList (cadr (file-glob filesIn 1)))
9 (borderColor '(255 255 255))
10 (borderGlow '(223 223 223))
13 (while (not (null? fileList))
17 (image (car (gimp-file-load 1 file file)))
18 (bottomLayer (car (gimp-image-get-active-layer image)))
19 (middleLayer (car (gimp-layer-new-from-drawable bottomLayer image)))
20 (topLayer (car (gimp-layer-new-from-drawable bottomLayer image)))
24 (gimp-image-add-layer image middleLayer -1)
25 (gimp-image-add-layer image topLayer -1)
27 ;Bottom layer: create extended glow siluette of the object
28 (gimp-context-set-foreground borderGlow)
29 (gimp-selection-layer-alpha bottomLayer)
30 (gimp-selection-grow image (- borderGrow 1))
31 (gimp-selection-feather image borderFeather)
32 (gimp-edit-fill bottomLayer 0)
33 (gimp-selection-none image)
34 (plug-in-gauss-rle 1 image bottomLayer glowBlur 1 1)
36 ;Middle layer: create extended siluette of the object
37 (gimp-context-set-foreground borderColor)
38 (gimp-selection-layer-alpha middleLayer)
39 (gimp-selection-grow image borderGrow)
40 (gimp-selection-feather image borderFeather)
41 (gimp-edit-fill middleLayer 0)
43 ;Top layer: reduce border of the object on the top layer
44 (gimp-selection-layer-alpha topLayer)
45 (gimp-selection-shrink image objectShrink)
46 (gimp-selection-feather image objectFeather)
47 (gimp-selection-invert image)
48 (gimp-edit-clear topLayer)
50 ;Set extension to .tga
51 (set! file (car (strbreakup file ".")))
52 (set! file (string-append file ".tga"))
54 ;Save image as RLE compressed tga
55 (set! bottomLayer (car (gimp-image-merge-visible-layers image 1)))
56 (file-tga-save 1 image bottomLayer file file 1 0)
57 (gimp-image-delete image)
59 (set! fileList (cdr fileList))