12
12
(define (carve-brush brush-size)
13
13
(cond ((<= brush-size 5) "Circle (05)")
14
((<= brush-size 7) "Circle (07)")
15
((<= brush-size 9) "Circle (09)")
16
((<= brush-size 11) "Circle (11)")
17
((<= brush-size 13) "Circle (13)")
18
((<= brush-size 15) "Circle (15)")
19
((<= brush-size 17) "Circle (17)")
20
(else "Circle (19)")))
14
((<= brush-size 7) "Circle (07)")
15
((<= brush-size 9) "Circle (09)")
16
((<= brush-size 11) "Circle (11)")
17
((<= brush-size 13) "Circle (13)")
18
((<= brush-size 15) "Circle (15)")
19
((<= brush-size 17) "Circle (17)")
20
(else "Circle (19)")))
22
22
(define (carve-scale val scale)
23
23
(* (sqrt val) scale))
25
25
(define (calculate-inset-gamma img layer)
26
26
(let* ((stats (gimp-histogram layer 0 0 255))
28
28
(cond ((< mean 127) (+ 1.0 (* 0.5 (/ (- 127 mean) 127.0))))
29
((>= mean 127) (- 1.0 (* 0.5 (/ (- mean 127) 127.0)))))))
29
((>= mean 127) (- 1.0 (* 0.5 (/ (- mean 127) 127.0)))))))
32
32
(define (copy-layer-carve-it dest-image dest-drawable source-image source-drawable)
36
36
(gimp-selection-all source-image)
37
37
(gimp-edit-copy source-drawable)
38
38
(let ((floating-sel (car (gimp-edit-paste dest-drawable FALSE))))
39
(gimp-floating-sel-anchor floating-sel)))
39
(gimp-floating-sel-anchor floating-sel)))
43
43
(define (script-fu-carve-it mask-img mask-drawable bg-layer carve-white)
44
(let* ((width (car (gimp-drawable-width mask-drawable)))
45
(height (car (gimp-drawable-height mask-drawable)))
46
(type (car (gimp-drawable-type bg-layer)))
47
(img (car (gimp-image-new width height (cond ((= type RGB-IMAGE) RGB)
48
((= type RGBA-IMAGE) RGB)
49
((= type GRAY-IMAGE) GRAY)
50
((= type GRAYA-IMAGE) GRAY)
51
((= type INDEXED-IMAGE) INDEXED)
52
((= type INDEXEDA-IMAGE) INDEXED)))))
53
(size (min width height))
54
(offx (carve-scale size 0.33))
55
(offy (carve-scale size 0.25))
56
(feather (carve-scale size 0.3))
57
(brush-size (carve-scale size 0.3))
59
(mask (car (gimp-channel-new img width height "Engraving Mask" 50 '(0 0 0))))
60
(inset-gamma (calculate-inset-gamma (car (gimp-drawable-get-image bg-layer)) bg-layer))
71
(bg-width (car (gimp-drawable-width bg-layer)))
72
(bg-height (car (gimp-drawable-height bg-layer)))
73
(bg-type (car (gimp-drawable-type bg-layer)))
74
(bg-image (car (gimp-drawable-get-image bg-layer)))
75
(layer1 (car (gimp-layer-new img bg-width bg-height bg-type "Layer1" 100 NORMAL-MODE))))
45
(width (car (gimp-drawable-width mask-drawable)))
46
(height (car (gimp-drawable-height mask-drawable)))
47
(type (car (gimp-drawable-type bg-layer)))
48
(img (car (gimp-image-new width height (cond ((= type RGB-IMAGE) RGB)
49
((= type RGBA-IMAGE) RGB)
50
((= type GRAY-IMAGE) GRAY)
51
((= type GRAYA-IMAGE) GRAY)
52
((= type INDEXED-IMAGE) INDEXED)
53
((= type INDEXEDA-IMAGE) INDEXED)))))
54
(size (min width height))
55
(offx (carve-scale size 0.33))
56
(offy (carve-scale size 0.25))
57
(feather (carve-scale size 0.3))
58
(brush-size (carve-scale size 0.3))
60
(mask (car (gimp-channel-new img width height "Engraving Mask" 50 '(0 0 0))))
61
(inset-gamma (calculate-inset-gamma (car (gimp-drawable-get-image bg-layer)) bg-layer))
72
(bg-width (car (gimp-drawable-width bg-layer)))
73
(bg-height (car (gimp-drawable-height bg-layer)))
74
(bg-type (car (gimp-drawable-type bg-layer)))
75
(bg-image (car (gimp-drawable-get-image bg-layer)))
76
(layer1 (car (gimp-layer-new img bg-width bg-height bg-type "Layer1" 100 NORMAL-MODE)))
77
79
(gimp-context-push)
171
173
(gimp-display-new img)
172
174
(gimp-image-undo-enable img)
176
180
(script-fu-register "script-fu-carve-it"
178
"Use the specified [GRAY] drawable as a stencil to carve from the specified image. The specified image must be either RGB colour or grayscale, not indexed."
183
SF-IMAGE "Mask image" 0
184
SF-DRAWABLE "Mask drawable" 0
185
SF-DRAWABLE _"Image to carve" 0
186
SF-TOGGLE _"Carve white areas" TRUE)
182
"Use the specified [GRAY] drawable as a stencil to carve from the specified image. The specified image must be either RGB colour or grayscale, not indexed."
187
SF-IMAGE "Mask image" 0
188
SF-DRAWABLE "Mask drawable" 0
189
SF-DRAWABLE _"Image to carve" 0
190
SF-TOGGLE _"Carve white areas" TRUE
188
193
(script-fu-menu-register "script-fu-carve-it"
189
_"<Image>/Script-Fu/Stencil Ops")
194
"<Image>/Filters/Decor")