File: coolmetal-logo.scm

package info (click to toggle)
gimp 2.2.13-1etch4
  • links: PTS
  • area: main
  • in suites: etch
  • size: 94,832 kB
  • ctags: 47,113
  • sloc: ansic: 524,858; xml: 36,798; lisp: 9,870; sh: 9,409; makefile: 7,923; python: 2,674; perl: 2,589; yacc: 520; lex: 334
file content (173 lines) | stat: -rw-r--r-- 6,332 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
;  COOL-METAL
;  Create a text effect that looks like metal with a reflection of
;  the horizon, a reflection of the text in the mirrored ground, and
;  an interesting dropshadow
;  This script was inspired by Rob Malda's 'coolmetal.gif' graphic

(define (apply-cool-metal-logo-effect img
				      logo-layer
				      size
				      bg-color
				      gradient
				      gradient-reverse)
  (let* ((feather (/ size 5))
	 (smear 7.5)
	 (period (/ size 3))
	 (amplitude (/ size 40))
	 (shrink (+ 1 (/ size 30)))
	 (depth (/ size 20))
	 (width (car (gimp-drawable-width logo-layer)))
	 (height (car (gimp-drawable-height logo-layer)))
	 (posx (- (car (gimp-drawable-offsets logo-layer))))
	 (posy (- (cadr (gimp-drawable-offsets logo-layer))))
	 (img-width (+ width (* 0.15 height) 10))
	 (img-height (+ (* 1.85 height) 10))
	 (bg-layer (car (gimp-layer-new img img-width img-height RGB-IMAGE "Background" 100 NORMAL-MODE)))
	 (shadow-layer (car (gimp-layer-new img img-width img-height RGBA-IMAGE "Shadow" 100 NORMAL-MODE)))
	 (reflect-layer (car (gimp-layer-new img width height RGBA-IMAGE "Reflection" 100 NORMAL-MODE)))
	 (channel 0)
	 (fs 0)
	 (layer-mask 0))

    (gimp-context-push)

    (gimp-selection-none img)
    (gimp-image-resize img img-width img-height posx posy)
    (gimp-image-add-layer img bg-layer 1)
    (gimp-image-add-layer img reflect-layer 1)
    (gimp-image-add-layer img shadow-layer 1)
    (gimp-layer-set-preserve-trans logo-layer TRUE)

    (gimp-context-set-background bg-color)
    (gimp-edit-fill bg-layer BACKGROUND-FILL)
    (gimp-edit-clear reflect-layer)
    (gimp-context-set-background '(0 0 0))
    (gimp-edit-fill shadow-layer BACKGROUND-FILL)

    (gimp-context-set-gradient gradient)

    (gimp-edit-blend logo-layer CUSTOM-MODE NORMAL-MODE
		     GRADIENT-LINEAR 100 0 REPEAT-NONE gradient-reverse
		     FALSE 0 0 TRUE
		     0 0 0 (+ height 5))

    (gimp-rect-select img 0 (- (/ height 2) feather) img-width (* 2 feather) CHANNEL-OP-REPLACE 0 0)
    (plug-in-gauss-iir 1 img logo-layer smear TRUE TRUE)
    (gimp-selection-none img)
    (plug-in-ripple 1 img logo-layer period amplitude 1 0 1 TRUE FALSE)
    (gimp-layer-translate logo-layer 5 5)
    (gimp-layer-resize logo-layer img-width img-height 5 5)

    (gimp-selection-layer-alpha logo-layer)
    (set! channel (car (gimp-selection-save img)))
    (gimp-selection-shrink img shrink)
    (gimp-selection-invert img)
    (plug-in-gauss-rle 1 img channel feather TRUE TRUE)
    (gimp-selection-layer-alpha logo-layer)
    (gimp-selection-invert img)
    (gimp-context-set-background '(0 0 0))
    (gimp-edit-fill channel BACKGROUND-FILL)
    (gimp-selection-none img)

    (plug-in-bump-map 1 img logo-layer channel 135 45 depth 0 0 0 0 FALSE FALSE 0)

    (gimp-selection-layer-alpha logo-layer)
    (set! fs (car (gimp-selection-float shadow-layer 0 0)))
    (gimp-edit-clear shadow-layer)
    (gimp-drawable-transform-perspective-default fs
						 (+ 5 (* 0.15 height)) (- height (* 0.15 height))
						 (+ 5 width (* 0.15 height)) (- height (* 0.15 height))
						 5 height
						 (+ 5 width) height
						 FALSE FALSE)
    (gimp-floating-sel-anchor fs)
    (plug-in-gauss-rle 1 img shadow-layer smear TRUE TRUE)

    (gimp-rect-select img 5 5 width height CHANNEL-OP-REPLACE FALSE 0)
    (gimp-edit-copy logo-layer)
    (set! fs (car (gimp-edit-paste reflect-layer FALSE)))
    (gimp-floating-sel-anchor fs)
    (gimp-drawable-transform-scale-default reflect-layer
					   0 0 width (* 0.85 height)
					   FALSE FALSE)
    (gimp-drawable-transform-flip-simple reflect-layer ORIENTATION-VERTICAL
					 TRUE 0 TRUE)
    (gimp-layer-set-offsets reflect-layer 5 (+ 3 height))

    (set! layer-mask (car (gimp-layer-create-mask reflect-layer ADD-WHITE-MASK)))
    (gimp-layer-add-mask reflect-layer layer-mask)
    (gimp-context-set-foreground '(255 255 255))
    (gimp-context-set-background '(0 0 0))
    (gimp-edit-blend layer-mask FG-BG-RGB-MODE NORMAL-MODE
		     GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
		     FALSE 0 0 TRUE
		     0 (- (/ height 2)) 0 height)

    (gimp-image-remove-channel img channel)

    (gimp-context-pop)))


(define (script-fu-cool-metal-logo-alpha img
					 logo-layer
					 size
					 bg-color
					 gradient
					 gradient-reverse)
  (begin
    (gimp-image-undo-group-start img)
    (apply-cool-metal-logo-effect img logo-layer size bg-color
				  gradient gradient-reverse)
    (gimp-image-undo-group-end img)
    (gimp-displays-flush)))

(script-fu-register "script-fu-cool-metal-logo-alpha"
		    _"Cool _Metal..."
		    "Metallic logos with reflections and perspective shadows"
		    "Spencer Kimball & Rob Malda"
		    "Spencer Kimball & Rob Malda"
		    "1997"
		    "RGBA"
                    SF-IMAGE       "Image"                0
                    SF-DRAWABLE    "Drawable"             0
		    SF-ADJUSTMENT _"Effect size (pixels)" '(100 2 1000 1 10 0 1)
		    SF-COLOR      _"Background color"     '(255 255 255)
		    SF-GRADIENT   _"Gradient"             "Horizon 1"
		    SF-TOGGLE     _"Gradient reverse"     FALSE)

(script-fu-menu-register "script-fu-cool-metal-logo-alpha"
			 _"<Image>/Script-Fu/Alpha to Logo")


(define (script-fu-cool-metal-logo text
				   size
				   font
				   bg-color
				   gradient
				   gradient-reverse)
  (let* ((img (car (gimp-image-new 256 256 RGB)))
	 (text-layer (car (gimp-text-fontname img -1 0 0 text 0 TRUE
					      size PIXELS font))))
    (gimp-image-undo-disable img)
    (gimp-drawable-set-name text-layer text)
    (apply-cool-metal-logo-effect img text-layer size bg-color
				  gradient gradient-reverse)
    (gimp-image-undo-enable img)
    (gimp-display-new img)))

(script-fu-register "script-fu-cool-metal-logo"
		    _"Cool _Metal..."
		    "Metallic logos with reflections and perspective shadows"
		    "Spencer Kimball & Rob Malda"
		    "Spencer Kimball & Rob Malda"
		    "1997"
		    ""
		    SF-STRING     _"Text"               "Cool Metal"
		    SF-ADJUSTMENT _"Font size (pixels)" '(100 2 1000 1 10 0 1)
		    SF-FONT       _"Font"               "Crillee"
		    SF-COLOR      _"Background color"   '(255 255 255)
		    SF-GRADIENT   _"Gradient"           "Horizon 1"
		    SF-TOGGLE     _"Gradient reverse"   FALSE)

(script-fu-menu-register "script-fu-cool-metal-logo"
			 _"<Toolbox>/Xtns/Script-Fu/Logos")