; HIGHLIGHT-DROP-SHADOW-LOGO ; draw the specified text over a background with a drop shadow and a highlight (define (color-highlight color) (let ((r (car color)) (g (cadr color)) (b (caddr color))) (set! r (+ r (* (- 255 r) 0.75))) (set! g (+ g (* (- 255 g) 0.75))) (set! b (+ b (* (- 255 b) 0.75))) (list r g b))) (define (hds-logo text size font bg-color text-color) (let* ((img (car (gimp-image-new 256 256 RGB))) (text-layer (car (gimp-text img -1 0 0 text 10 TRUE size PIXELS "*" font "*" "*" "*" "*"))) (width (car (gimp-drawable-width text-layer))) (height (car (gimp-drawable-height text-layer))) (bg-layer (car (gimp-layer-new img width height RGB_IMAGE "Background" 100 NORMAL))) (highlight-layer (car (gimp-layer-copy text-layer TRUE))) (shadow-layer (car (gimp-layer-new img width height RGBA_IMAGE "Shadow" 100 MULTIPLY))) (old-fg (car (gimp-palette-get-foreground))) (old-bg (car (gimp-palette-get-background)))) (gimp-image-disable-undo img) (gimp-image-resize img width height 0 0) (gimp-image-add-layer img bg-layer 1) (gimp-image-add-layer img shadow-layer 1) (gimp-image-add-layer img highlight-layer 1) (gimp-palette-set-background text-color) (gimp-layer-set-preserve-trans text-layer TRUE) (gimp-edit-fill img text-layer) (gimp-edit-clear img shadow-layer) (gimp-palette-set-background (color-highlight text-color)) (gimp-layer-set-preserve-trans highlight-layer TRUE) (gimp-edit-fill img highlight-layer) (gimp-palette-set-background bg-color) (gimp-drawable-fill bg-layer BG-IMAGE-FILL) (gimp-selection-layer-alpha img text-layer) (gimp-palette-set-background '(0 0 0)) (gimp-selection-feather img 7.5) (gimp-edit-fill img shadow-layer) (gimp-selection-none img) (gimp-palette-set-foreground '(255 255 255)) (gimp-blend img text-layer FG-BG-RGB MULTIPLY RADIAL 100 20 FALSE 0 0 width height) (gimp-layer-translate shadow-layer 3 3) (gimp-layer-translate highlight-layer -2 -2) (gimp-layer-set-name text-layer text) (gimp-layer-set-name highlight-layer "Highlight") (gimp-palette-set-background old-bg) (gimp-palette-set-foreground old-fg) (gimp-image-enable-undo img) (gimp-display-new img)))
; CRYSTAL ; Create a text effect that simulates crystal (define (set-pt a index x y) (prog1 (aset a (* index 2) x) (aset a (+ (* index 2) 1) y))) (define (spline1) (let* ((a (cons-array 18 'byte))) (set-pt a 0 0 0) (set-pt a 1 31 235) (set-pt a 2 63 23) (set-pt a 3 95 230) (set-pt a 4 127 25) (set-pt a 5 159 210) (set-pt a 6 191 20) (set-pt a 7 223 240) (set-pt a 8 255 31) a)) (define (crystal-brush brush-size) (cond ((<= brush-size 5) "Circle (05)") ((<= brush-size 7) "Circle (07)") ((<= brush-size 9) "Circle (09)") ((<= brush-size 11) "Circle (11)") ((<= brush-size 13) "Circle (13)") ((<= brush-size 15) "Circle (15)") ((<= brush-size 17) "Circle (17)") (else "Circle Fuzzy (19)"))) (define (shadows val) (/ (* 0.96 val) 2.55)) (define (midtones val) (/ val 2.55)) (define (highlights val) (/ (* 1.108 val) 2.55)) (define (rval col) (car col)) (define (gval col) (cadr col)) (define (bval col) (caddr col)) (define (sota-scale val scale chrome-factor) (* (sqrt val) (* scale chrome-factor))) (define (crystal-logo chrome-factor text size font bg-img env-map) (let* ((img (car (gimp-image-new 256 256 GRAY))) (back-img (car (gimp-file-load 1 bg-img bg-img))) (back-layer (car (gimp-image-active-drawable back-img))) (banding-img (car (gimp-file-load 1 env-map env-map))) (banding-layer (car (gimp-image-active-drawable banding-img))) (b-size (sota-scale size 2 chrome-factor)) (offx1 (sota-scale size 0.33 chrome-factor)) (offy1 (sota-scale size 0.25 chrome-factor)) (offx2 (sota-scale size (- 0.33) chrome-factor)) (offy2 (sota-scale size (- 0.25) chrome-factor)) (feather (sota-scale size 0.5 chrome-factor)) (blur (sota-scale size 0.5 chrome-factor)) (displace (sota-scale size 0.25 chrome-factor)) (brush-size (sota-scale size 0.5 chrome-factor)) (text-layer (car (gimp-text img -1 0 0 text b-size TRUE size PIXELS "*" font "*" "*" "*" "*"))) (width (car (gimp-drawable-width text-layer))) (height (car (gimp-drawable-height text-layer))) (tile-ret (plug-in-tile 1 back-img back-layer width height)) (tile-img (car tile-ret)) (tile-layer (cadr tile-ret)) (bg-layer (car (gimp-layer-copy tile-layer TRUE))) (layer1 (car (gimp-layer-copy banding-layer TRUE))) (layer2 (car (gimp-layer-new img width height GRAYA_IMAGE "Layer 2" 100 DIFFERENCE))) (layer3 (car (gimp-layer-new img width height GRAYA_IMAGE "Layer 3" 100 NORMAL))) (layer-mask 0) (layer-mask2 0) (disp-map 0) (old-fg (car (gimp-palette-get-foreground))) (old-bg (car (gimp-palette-get-background))) (old-brush (car (gimp-brushes-get-brush)))) (gimp-image-delete banding-img) (gimp-image-delete back-img) (gimp-image-delete tile-img) (gimp-image-disable-undo img) (gimp-image-resize img width height 0 0) (gimp-image-add-layer img layer3 0) (gimp-image-add-layer img layer2 0) (gimp-palette-set-background '(255 255 255)) (gimp-selection-none img) (gimp-edit-fill img layer2) (gimp-edit-fill img layer3) (gimp-layer-set-visible text-layer FALSE) (gimp-selection-layer-alpha img text-layer) (gimp-palette-set-background '(0 0 0)) (gimp-selection-translate img offx1 offy1) (gimp-selection-feather img feather) (gimp-edit-fill img layer2) (gimp-selection-translate img (* 2 offx2) (* 2 offy2)) (gimp-edit-fill img layer3) (gimp-selection-none img) (set! layer2 (car (gimp-image-merge-visible-layers img CLIP-TO-IMAGE))) (gimp-invert img layer2) (gimp-image-add-layer img layer1 0) (gimp-layer-scale layer1 width height FALSE) (plug-in-gauss-iir 1 img layer1 10 TRUE TRUE) (gimp-layer-set-opacity layer1 50) (set! layer1 (car (gimp-image-merge-visible-layers img CLIP-TO-IMAGE))) (gimp-curves-spline img layer1 0 18 (spline1)) (set! layer-mask (car (gimp-layer-create-mask layer1 BLACK-MASK))) (gimp-image-add-layer-mask img layer1 layer-mask) (gimp-selection-layer-alpha img text-layer) (gimp-palette-set-background '(255 255 255)) (gimp-edit-fill img layer-mask) (set! disp-map (car (gimp-selection-save img))) (gimp-brushes-set-brush (crystal-brush brush-size)) (gimp-palette-set-foreground '(0 0 0)) (gimp-edit-stroke img disp-map) (gimp-selection-none img) (plug-in-gauss-rle 1 img disp-map blur TRUE TRUE) (gimp-levels img disp-map 0 0 255 1.0 96 255) (if (= (car (gimp-drawable-color bg-layer)) 1) (gimp-convert-rgb img)) (gimp-image-add-layer img bg-layer 2) (set! layer2 (car (gimp-layer-copy bg-layer TRUE))) (gimp-image-add-layer img layer2 1) (plug-in-displace 1 img layer2 displace displace TRUE TRUE disp-map disp-map 0) (set! layer-mask2 (car (gimp-layer-create-mask layer2 BLACK-MASK))) (gimp-image-add-layer-mask img layer2 layer-mask2) (gimp-selection-layer-alpha img text-layer) (gimp-palette-set-background '(255 255 255)) (gimp-edit-fill img layer-mask2) (gimp-selection-none img) (gimp-levels img layer2 0 0 200 1.5 50 255) (gimp-layer-set-mode layer1 OVERLAY) (plug-in-gauss-rle 1 img text-layer blur TRUE TRUE) (gimp-layer-set-preserve-trans text-layer TRUE) (gimp-palette-set-background '(0 0 0)) (gimp-edit-fill img text-layer) (gimp-layer-set-mode text-layer OVERLAY) (gimp-layer-translate text-layer offx1 offy1) (gimp-image-remove-channel img disp-map) (gimp-layer-set-visible text-layer TRUE) (gimp-layer-set-name layer1 "Crystal") (gimp-layer-set-name layer2 "Interior") (gimp-layer-set-name bg-layer "Background") (gimp-layer-set-name text-layer "Shadow") (gimp-palette-set-foreground old-fg) (gimp-palette-set-background old-bg) (gimp-brushes-set-brush old-brush) (gimp-image-enable-undo img) (gimp-display-new img)))