summaryrefslogtreecommitdiff
path: root/script-fu/3.x/przem-hitchcock-d400-film-effect-v3x.scm
blob: 9d1f12a2b91bc501194311baa18d6af61cdeb49b (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
; przem-hitchcock-d400-film-effect-v3x - Imitacja filmu chińskiego HITCHOCK D400: kontrast, ciepłe światła, chłodne cienie, bloom
; author: Przemysław R. Pietraszczyk
; licencja: Public Domain
; Gdańsk - 14-06-2026
; ver. 2.260724-1

(define (przem-hitchcock-d400-film-effect-v3 image drawable
                                 lift-blacks-contrast
                                 warm-highlights
                                 cool-shadows
                                 bloom-strength)
	(gimp-context-push)
    (gimp-image-undo-group-start image)

  ;; Duplikat warstwy bazowej
  (let* (
         (type-layer (vector-ref drawable 0))
         (layer (vector-ref drawable 0))
         (work-layer (car (gimp-layer-copy layer TRUE)))
         (bloom-layer 0)
        )

    (if (> (car (gimp-drawable-type type-layer)) 1)
        (gimp-image-convert-rgb image)
        )

    (gimp-image-insert-layer image work-layer 0 -1)

    (let* ((finish-layer (car (gimp-layer-copy layer TRUE))))
      (gimp-image-insert-layer image finish-layer 0 -1)
      ; lift-blacks 0-40   contrast 0-80
      ;(gimp-drawable-curves-spline finish-layer HISTOGRAM-VALUE 10 #( 0 lift-blacks 64 (+ 48 contrast) 128 128 192 (- 208 contrast) 255 255))
      (cond
      ((= lift-blacks-contrast 0)
        (gimp-drawable-curves-spline finish-layer HISTOGRAM-VALUE #(0 40 64 68 128 128 192 188 255 255))
      )
      ((= lift-blacks-contrast 1)
        (gimp-drawable-curves-spline finish-layer HISTOGRAM-VALUE #(0 30 64 84 128 128 192 168 255 255))
      )
      ((= lift-blacks-contrast 2)
        (gimp-drawable-curves-spline finish-layer HISTOGRAM-VALUE #(0 20 64 104 128 128 192 148 255 255))
      )
      ((= lift-blacks-contrast 4)
        (gimp-drawable-curves-spline finish-layer HISTOGRAM-VALUE #(0 10 64 124 128 128 192 128 255 255))
      ))
            (gimp-layer-set-mode finish-layer LAYER-MODE-OVERLAY)
			(gimp-layer-set-opacity finish-layer 80)
      )
    ;; 2. Ciepłe światła – Color Balance (midtones + highlights)
    ; cyan-red - magenta-green - yellow-blue (ujemne = więcej żółtego, dodatnie = więcej niebieskiego)
    (gimp-drawable-color-balance work-layer TRANSFER-SHADOWS FALSE 0 0 cool-shadows)
    (gimp-drawable-color-balance work-layer TRANSFER-MIDTONES FALSE warm-highlights 0 (- warm-highlights))
    (gimp-drawable-color-balance work-layer TRANSFER-HIGHLIGHTS FALSE warm-highlights 0 (- warm-highlights))

    ;; 3. Delikatny bloom / glow (kopiujemy warstwę, rozmywamy, Soft light)
    (set! bloom-layer (car (gimp-layer-copy layer TRUE)))
    (gimp-image-insert-layer image bloom-layer 0 -1)
    (gimp-layer-set-mode bloom-layer LAYER-MODE-SUBTRACT)
    (gimp-drawable-merge-new-filter bloom-layer "gegl:gaussian-blur" 1 LAYER-MODE-REPLACE 1.0 "std-dev-x" 8.0 "std-dev-y" 8.0 "filter" "iir")
    (gimp-layer-set-opacity bloom-layer bloom-strength)

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

(script-fu-register-filter "przem-hitchcock-d400-film-effect-v3"
 _"Hitchock d400 effect"
 _"Imitacja filmu chińskiego HITCHCOCK D400: kontrast, ciepłe światła, chłodne cienie, bloom."
 _"Przemysław R. Pietraszczyk"
 "Public Domain"
 "2026-06-14"
 "*"
 SF-ONE-OR-MORE-DRAWABLE
 SF-OPTION "Black up & Contrast" '("Lift Blacks Weak" "Lift Blacks Medium" "Lift Blacks Strong" "Lift Blacks Heavy")
 SF-ADJUSTMENT "Warm lights (–50 do 50)" '(15 -50 50 1 5 0 1)
 SF-ADJUSTMENT "Cool shadows (–50 do 50)" '(-10 -50 50 1 5 0 1)
 SF-ADJUSTMENT "Bloom – power (0–100)" '(35 0 100 1 5 0 1)
)

(script-fu-menu-register "przem-hitchcock-d400-film-effect-v3"
                         "<Image>/Filters/PIETRASZCZYK/")