-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDarla-BlueSkyClouds.scm
135 lines (126 loc) · 5.89 KB
/
Darla-BlueSkyClouds.scm
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
;
; Blue Sky & Clouds, V2.0
;
; AUTHOR: Darla McKay (Darla@FarcryDesign.com), (C) 2007,2008
;
; This plugin was tested with GIMP 2.10.22
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License Version 3 as
; published by the Free Software Foundation.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License at http://www.gnu.org/licenses for
; more details.
;
; DESCRIPTION:
; To fix burned out or white skies by adding a blue sky gradient.
; The script is located in menu "<Image> / Script-Fu / Darla / Blue Sky & Clouds"
;
; USAGE NOTES:
; Two colours are selectable, specifying the upper (darker) and lower
; (lighter) sky. The gradient is applied based on a level horizon.
; Threshold masking is applied. Optionally, a layer with rendered clouds
; can be added.
; See http://www.FarcryDesign.com/GIMP/ for more information.
; =============================================================================
;
;
; SCRIPT SUMMARY:
; copy layer, create threshold mask & feather, optionally add cloud layer using solid noise, add blue gradient layer,
; apply threshold mask to two new layers
;
; Version 2.0 (Jan 2008) - branched off BlueSkyGradient.scm
; =============================================================================
(define (script-fu-Darla-BlueSkyClouds InImage InLayer InThreshold InSkyTop InSkyBottom InFeather InClouds InFlatten)
(gimp-image-undo-group-start InImage)
(let* (
(BlueGradientLayer (car (gimp-layer-copy InLayer TRUE)))
(CloudLayer (car (gimp-layer-copy InLayer TRUE)))
(ThresholdLayer (car (gimp-layer-copy InLayer TRUE)))
(CloudMask (car (gimp-layer-create-mask CloudLayer ADD-MASK-WHITE)))
(BlueGradientMask (car (gimp-layer-create-mask BlueGradientLayer ADD-MASK-WHITE)))
(TheHeight (car (gimp-image-height InImage)))
(Old-FG-Color (car (gimp-context-get-foreground)))
(Old-BG-Color (car (gimp-context-get-background)))
)
; add threshold layer
(gimp-image-insert-layer InImage ThresholdLayer 0 -1)
;(gimp-threshold ThresholdLayer InThreshold 255)
(gimp-drawable-threshold ThresholdLayer HISTOGRAM-VALUE (/ InThreshold 255) 1.0)
(plug-in-gauss TRUE InImage ThresholdLayer InFeather InFeather 0)
(gimp-drawable-set-name ThresholdLayer "Threshold Layer")
(gimp-drawable-set-visible ThresholdLayer FALSE)
; add clouds if applicable, interactive solid noise
(if (= InClouds TRUE)
(begin
(gimp-image-insert-layer InImage CloudLayer 0 -1)
(gimp-selection-all InImage)
(gimp-edit-clear CloudLayer)
(plug-in-solid-noise FALSE InImage CloudLayer 0 0 7 2 3.6 7.4)
(gimp-drawable-set-name CloudLayer "Cloud Layer")
(gimp-layer-add-mask CloudLayer CloudMask)
(gimp-selection-all InImage)
(gimp-edit-copy ThresholdLayer)
(gimp-floating-sel-anchor (car (gimp-edit-paste CloudMask FALSE)))
(gimp-selection-none InImage)
(gimp-layer-set-mode CloudLayer LAYER-MODE-DARKEN-ONLY)
(gimp-layer-set-opacity CloudLayer 15)
)
)
; add blue gradient layer
(gimp-image-insert-layer InImage BlueGradientLayer 0 -1)
(gimp-context-set-foreground InSkyTop)
(gimp-context-set-background InSkyBottom)
(gimp-edit-blend BlueGradientLayer BLEND-FG-BG-RGB LAYER-MODE-NORMAL GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE FALSE 0 0 TRUE 0 0 0 (- TheHeight 1))
(gimp-drawable-set-name BlueGradientLayer "Blue Gradient Layer")
(gimp-layer-add-mask BlueGradientLayer BlueGradientMask)
(gimp-selection-all InImage)
(gimp-edit-copy ThresholdLayer)
(gimp-floating-sel-anchor (car (gimp-edit-paste BlueGradientMask FALSE)))
(gimp-displays-flush)
;(quit)
(gimp-selection-none InImage)
(if (= InClouds TRUE)
(begin
(gimp-layer-set-mode BlueGradientLayer LAYER-MODE-MULTIPLY) ; was HSL-COLOR
(gimp-layer-set-opacity BlueGradientLayer 90)
)
(begin
(gimp-layer-set-mode BlueGradientLayer LAYER-MODE-DARKEN-ONLY)
(gimp-layer-set-opacity BlueGradientLayer 70)
)
)
; return original color palette, flatten image if needed
(gimp-context-set-foreground Old-FG-Color)
(gimp-context-set-background Old-BG-Color)
(if (= InFlatten TRUE) (gimp-image-flatten InImage))
)
(gimp-image-undo-group-end InImage)
(gimp-displays-flush)
)
(script-fu-register
"script-fu-Darla-BlueSkyClouds"
"<Toolbox>/Script-Fu/Photo/Sky/Blue Sky & Clouds"
"Blue Sky & Clouds \n
To fix burned out or white skies by adding a blue sky \
gradient and clouds (uses a threshold mask). \n\
See http://www.FarcryDesign.com/GIMP for more information.\n\
file:Darla-BlueSkyClouds.scm"
"Darla McKay (Darla@FarcryDesign.com)"
"Darla McKay"
"2007,2008"
"RGB* GRAY*"
SF-IMAGE "The Image" 0
SF-DRAWABLE "The Layer" 0
SF-ADJUSTMENT "Threshold" '(248 0 254 1 0 0 0)
SF-COLOR "Sky Top Color" '(39 140 255) ; was 187 219 255
SF-COLOR "Sky Bottom Color" '(221 234 255)
SF-ADJUSTMENT "Edges: Feather Amount" '(5.0 1.0 10.0 1.0 0 1 0)
SF-TOGGLE "Add Rendered Clouds" TRUE
SF-TOGGLE "Flatten Image" FALSE
)
;
;end of script