summaryrefslogtreecommitdiff
path: root/script-fu/3.0/przem-surreal-v3.scm
blob: fd9654eb1552b8d990e5d898a14de1364d9cffa7 (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
; przem-surreal-v3 - imitacja surrealistycznych obrazów
; author: PRP
; licencja: Public Domain
; Gdańsk - 24-12-2025
; ver. 2.260109-0~beta

(define (przem-surreal-v3 img drawable shades)
  (let* (
         (width (car (gimp-image-get-width img)))
		 (height (car (gimp-image-get-height img)))
         (layer-copy 0)
         (source-layer (vector-ref (car (gimp-image-get-layers img)) 0 ))
         (green-layer (car (gimp-layer-new img "Green" width height RGB-IMAGE 100 LAYER-MODE-NORMAL)))
		 (type-layer (vector-ref drawable 0))
		 (type (car (gimp-drawable-type type-layer)))
		 (blue-glow  (list 102 204 255))
		 (blue-pastel (list 153 221 255))
		 (blue 0)
        )
        
	(gimp-context-push)
	(gimp-image-undo-group-start img)

	(set! layer-copy (car (gimp-layer-copy source-layer)))

    ; Dodajemy skopiowaną warstwę
    (gimp-image-insert-layer img layer-copy -1)
  
	;; jeśli obraz jest szary to konwertuje go na RGB - tak na sztukę
	(if (> (car (gimp-drawable-type type-layer)) 1)
    (gimp-image-convert-rgb img))
        
    ; Konwersja obrazu do skali szarości
	(if (= type RGB-IMAGE)
		(gimp-drawable-desaturate type-layer DESATURATE-LIGHTNESS)
	)
    
    (if (= shades 0)
       (begin
       (set! blue blue-glow)
     ))
	(if (= shades 1)
       (begin
       (set! blue blue-pastel)
     ))
    
    ;; 3. Tonowanie (niebieska poświata)
	(gimp-drawable-merge-new-filter 
		layer-copy
		"gegl:color"
		0
		LAYER-MODE-ADDITION
		0.1         
		"value" blue
	)
    
    ; Rozmycie dla efektu mgły
	(gimp-drawable-merge-new-filter layer-copy "gegl:gaussian-blur"  RUN-NONINTERACTIVE LAYER-MODE-REPLACE 1.0 "std-dev-x" 10.0 "std-dev-y" 10.0  "filter" "auto")

    ; Tryb mieszania: Overlay
    (gimp-layer-set-mode layer-copy LAYER-MODE-ADDITION)
    (gimp-layer-set-opacity layer-copy 70.0)

    ; Dodajemy zieloną warstwę
    (gimp-image-insert-layer img green-layer -1)
    (gimp-context-set-foreground '(60 120 60)) ; ciemna zieleń
    (gimp-drawable-edit-fill green-layer FILL-FOREGROUND)
    (gimp-layer-set-mode green-layer LAYER-MODE-MULTIPLY)
    (gimp-layer-set-opacity green-layer 25.0)

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

(script-fu-register-filter "przem-surreal-v3"
 "_Surreal Toning with Green"
 "_Nadaje obrazowi chłodne barwy z zielonymi akcentami i efektem mgły"
 "P.R.P"
 "Public Domain"
 "24-12-2025"
 "RGB* GRAY*"
 SF-ONE-OR-MORE-DRAWABLE
 SF-OPTION     _"Shades of blue" '("Glow" "Pastel")

)

(script-fu-menu-register "przem-surreal-v3"
                         "<Image>/Filters/PIETRASZCZYK/")