summaryrefslogtreecommitdiff
path: root/script-fu/3.2/przem-sunset-effect-v32.scm
blob: ba501aebd741d68e4433db60ccfb0ed56432e0fd (plain)
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
; przem-sunset-effect-v32 - imituje efekt zachodzącego słońca
; author: PRP
; licencja: Public Domain
; Gdańsk - 01-09-2025
; ver. 2.250901-0~beta

(define (shadows val)
     (/ (* 0.96 val) 2.55))

(define (midtones val)
     (/ val 2.55))

(define (highlights val)
     ; The result is used as "gimp-drawable-color-balance" color parameter
     ; and thus must be restricted to -100.0 <= highlights <= 100.0.
     (min (/ (* 1.108 val) 2.55) 100.0))

(define (rval col)
     (car col))

(define (gval col)
     (cadr col))

(define (bval col)
     (caddr col))


(define (przem-sunset-effect-v32 img drawable)
  (gimp-image-undo-group-start img)
  
  ; Tworzenie warstw dla różnych efektów
  (let* (
		(layer (vector-ref drawable 0))
        (sunset-layer (car (gimp-layer-copy layer TRUE)))
        ;(original-visible (car (gimp-drawable-get-visible drawable)))
        (original-visible (car (gimp-layer-copy layer TRUE)))
		(width (car (gimp-image-get-width img)))
        (height (car (gimp-image-get-height img)))
        )
    
    ; Dodawanie warstwy do obrazu
    (gimp-image-insert-layer img sunset-layer 0 -1)
    (gimp-layer-set-mode sunset-layer LAYER-MODE-MULTIPLY)
    (gimp-item-set-name sunset-layer _"Sunset Effect")

    
    ; Nakładanie gradientu ciepłych kolorów
    (gimp-context-set-foreground '(255 100 0))   ; pomarańczowy
    (gimp-context-set-background '(150 0 50))    ; różowo-czerwony
    
    ; Tworzenie gradientu
    (gimp-layer-set-mode sunset-layer LAYER-MODE-SUBTRACT) ; 
	(gimp-drawable-edit-gradient-fill sunset-layer
		GRADIENT-LINEAR 1 FALSE 1 0 TRUE
		0 0 width height)

   
	; cieplejsze cienie
    (gimp-drawable-color-balance sunset-layer TRANSFER-SHADOWS 1
                                  (shadows (rval '(30 0 -20)))
                                  (shadows (gval '(30 0 -20)))
                                  (shadows (bval '(30 0 -20))))
                                  
   ; cieplejsze średnie tony
    (gimp-drawable-color-balance sunset-layer TRANSFER-MIDTONES 1
                                  (midtones (rval '(40 0 -10)))
                                  (midtones (gval '(40 0 -10)))
                                  (midtones (bval '(40 0 -10))))
                                  
    ; cieplejsze światła
    (gimp-drawable-color-balance sunset-layer TRANSFER-HIGHLIGHTS 1
                                  (highlights (rval '(20 0 -5)))
                                  (highlights (gval '(20 0 -5)))
                                  (highlights (bval '(20 0 -5))))

    
    ; Zwiększenie kontrastu
    ;(gimp-levels sunset-layer 0 20 230 1.0 0 255)
    (gimp-drawable-levels sunset-layer 0
                           0 0.20 0 TRUE
                           1.0
                           0.0 1.0 TRUE)

    ; Dodanie lekkiego rozmycia dla miękkiego efektu
    ;(plug-in-gauss-iir 1 img sunset-layer 5 TRUE TRUE)
    (gimp-drawable-merge-new-filter sunset-layer "gegl:gaussian-blur" 1 LAYER-MODE-REPLACE 1.0 "std-dev-x" 5 "std-dev-y" 5 "filter" "auto")

    (gimp-image-undo-group-end img)
    (gimp-displays-flush)
  )
)

(script-fu-register-filter "przem-sunset-effect-v32"
                    _"Sunset Effect"
                    _"Imitacja kolorystyki zachodu słońca"
                    "P.R.P."
                    "Public Domain"
                    "2025-09-01"
                    "*"
                    SF-ONE-OR-MORE-DRAWABLE)

(script-fu-menu-register "przem-sunset-effect-v32"
                         "<Image>/Filters/PIETRASZCZYK/")