File: frosty-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 (137 lines) | stat: -rw-r--r-- 5,452 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
;  FROZEN-TEXT effect
;  Thanks to Ed Mackey for this one
;   Written by Spencer Kimball

(define (apply-frosty-logo-effect img
				  logo-layer
				  size
				  bg-color)
  (let* ((border (/ size 5))
	 (width (+ (car (gimp-drawable-width logo-layer)) border))
	 (height (+ (car (gimp-drawable-height logo-layer)) border))
	 (logo-layer-mask (car (gimp-layer-create-mask logo-layer ADD-BLACK-MASK)))
	 (sparkle-layer (car (gimp-layer-new img width height RGBA-IMAGE "Sparkle" 100 NORMAL-MODE)))
	 (matte-layer (car (gimp-layer-new img width height RGBA-IMAGE "Matte" 100 NORMAL-MODE)))
	 (shadow-layer (car (gimp-layer-new img width height RGBA-IMAGE "Shadow" 90 MULTIPLY-MODE)))
	 (bg-layer (car (gimp-layer-new img width height RGB-IMAGE "Background" 100 NORMAL-MODE)))
	 (selection 0))

    (define (for-each proc seq)
      (if (not (null? seq))
        (begin
          (proc (car seq))
          (for-each proc (cdr seq)))))

    (gimp-context-push)

    (gimp-layer-add-mask logo-layer logo-layer-mask)
    (script-fu-util-image-resize-from-layer img shadow-layer)
    (gimp-image-add-layer img sparkle-layer 2)
    (gimp-image-add-layer img matte-layer 3)
    (gimp-image-add-layer img shadow-layer 4)
    (gimp-image-add-layer img bg-layer 5)
    (gimp-layer-translate logo-layer border border)
    (gimp-selection-none img)
    (gimp-edit-clear sparkle-layer)
    (gimp-edit-clear matte-layer)
    (gimp-edit-clear shadow-layer)
    (gimp-selection-layer-alpha logo-layer)
    (set! selection (car (gimp-selection-save img)))
    (gimp-selection-feather img border)
    (gimp-context-set-background '(0 0 0))
    (gimp-edit-fill sparkle-layer BACKGROUND-FILL)
    (plug-in-noisify 1 img sparkle-layer FALSE 0.2 0.2 0.2 0.0)
    (plug-in-c-astretch 1 img sparkle-layer)
    (gimp-selection-none img)
    (plug-in-sparkle 1 img sparkle-layer 0.03 0.5 (/ (min width height) 2) 6 15 1.0 0.0 0.0 0.0 FALSE FALSE FALSE 0)
    (gimp-levels sparkle-layer 1 0 255 0.2 0 255)
    (gimp-levels sparkle-layer 2 0 255 0.7 0 255)
    (gimp-selection-layer-alpha sparkle-layer)
    (gimp-context-set-foreground '(0 0 0))
    (gimp-context-set-brush "Circle Fuzzy (11)")
    (gimp-edit-stroke matte-layer)
    (gimp-selection-feather img border)
    (gimp-edit-fill shadow-layer BACKGROUND-FILL)
    (gimp-selection-none img)
    (gimp-context-set-background bg-color)
    (gimp-edit-fill bg-layer BACKGROUND-FILL)
    (gimp-context-set-background '(0 0 0))
    (gimp-edit-fill logo-layer BACKGROUND-FILL)
;    (gimp-layer-add-mask logo-layer logo-layer-mask)
    (gimp-selection-load selection)
    (gimp-context-set-background '(255 255 255))
    (gimp-edit-fill logo-layer-mask BACKGROUND-FILL)
    (gimp-selection-feather img border)
    (gimp-selection-translate img (/ border 2) (/ border 2))
    (gimp-edit-fill logo-layer BACKGROUND-FILL)
    (gimp-layer-remove-mask logo-layer 0)
    (gimp-selection-load selection)
    (gimp-context-set-brush "Circle Fuzzy (07)")
    (gimp-context-set-paint-mode BEHIND-MODE)
    (gimp-context-set-foreground '(186 241 255))
    (gimp-edit-stroke logo-layer)
    (gimp-selection-none img)
    (gimp-image-remove-channel img selection)
    (for-each (lambda (the-layer) 
                (gimp-layer-resize the-layer (- width border) (- height border) (- border) (- border))
                ; (gimp-layer-translate the-layer border border)
                )
              (list sparkle-layer matte-layer bg-layer))
    (gimp-layer-resize shadow-layer (- width border) (- height border) 0 0)
    (gimp-layer-translate shadow-layer border border)
    (script-fu-util-image-resize-from-layer img logo-layer)
    (gimp-context-pop)))

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


(script-fu-register "script-fu-frosty-logo-alpha"
		    _"_Frosty..."
		    "Frozen logos with drop shadows"
		    "Spencer Kimball & Ed Mackey"
		    "Spencer Kimball & Ed Mackey"
		    "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))

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

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

(script-fu-register "script-fu-frosty-logo"
		    _"_Frosty..."
		    "Frozen logos with drop shadows"
		    "Spencer Kimball & Ed Mackey"
		    "Spencer Kimball & Ed Mackey"
		    "1997"
		    ""
		    SF-STRING     _"Text"               "The GIMP"
		    SF-ADJUSTMENT _"Font size (pixels)" '(100 2 1000 1 10 0 1)
		    SF-FONT       _"Font"               "Becker"
		    SF-COLOR      _"Background color"   '(255 255 255))

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