summaryrefslogtreecommitdiff
path: root/3.0/przem-apply-sepia-v3.scm
blob: 91896be77f5ce69bf6d6b818d759d88d299dfd85 (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
104
105
106
107
108
109
; przem-apply-sepia-v3 - Script-fu dodający prawdziwą sepie do zdjęcia
; author: PRP
; licencja: Public Domain
; Gdańsk - 07-02-2025
; ver. 2.2502015-0 for GIMP 3
;
; BUG ? Niepotrafi przekonwertować szarego obrazka na rgb
; * Póki co w przypadku mochromatycznego zdjęcia, nakłada jedynie gradient, bez sepii

(define (przem-apply-sepia-v3 image drawable value-slider-sepia gradient-reverse gradient-shape)
  (let* (
       (image-width (car (gimp-image-get-width image)))
       (image-height (car (gimp-image-get-height image)))
       (layer (vector-ref drawable 0))
       (type (car (gimp-drawable-type-with-alpha layer)))
       (center-x (/ image-width 2))
       (center-y (/ image-height 2))
       (sepia-layer (car (gimp-layer-new image "Sepia" image-width image-height RGB-IMAGE 100 LAYER-MODE-NORMAL)))
       (radius (sqrt (+ (* center-x center-x) (* center-y center-y))))
       )
  
  (gimp-image-undo-group-start image)
  ;(gimp-image-undo-disable image)

  ; TODO
  ; jeśli obraz jest szary to konwertuje go na RGB - w RC2 ten numer nie przedzie
  ;(if (= type GRAYA-IMAGE)
  ;   (gimp-image-convert-rgb image) )
  ; lub lepiej ...
  ;(if (> (car (gimp-drawable-type (vector-ref drawable 0))) 1 )
  ;   (gimp-image-convert-rgb image))

  ; Konwersja obrazu do skali szarości
  ;(gimp-desaturate drawable)
  (if (= type RGBA-IMAGE)
     (gimp-drawable-desaturate layer DESATURATE-LIGHTNESS))
 
  (gimp-context-set-foreground '(112 66 20)) ; sepia ciemniejszy
  (gimp-context-set-background '(233 213 186)) ; sepia jasniejszy
  ;(gimp-context-set-background '(210 180 140)) ; sepia jasniejsza

  ; Dodanie koloru sepii
  (gimp-image-insert-layer image sepia-layer 0 -1)
  
  (gimp-context-push)
  
  ;(plug-in-checkerboard #:run-mode    RUN-NONINTERACTIVE
  ;                        #:image       image
  ;                        #:drawables   (vector drawable)
  ;                        #:psychobilly 0
  ;                        #:check-size  8)
  (plug-in-checkerboard RUN-NONINTERACTIVE image (vector sepia-layer) 0 2)
  
  (gimp-context-pop)

  (gimp-context-push)

  (gimp-selection-all image)
  ; tak było w v. 2.10
  ;(gimp-edit-blend sepia-layer FG-BG-RGB-MODE NORMAL-MODE GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE TRUE 3 0 TRUE 0 0 image-width image-height)
  (if (= gradient-shape TRUE)
    (begin
      (gimp-context-set-gradient-reverse gradient-reverse)
      (gimp-drawable-edit-gradient-fill sepia-layer
				      GRADIENT-LINEAR 0
				      FALSE 1 0
				      TRUE
				      0 0 image-width image-height)
	)
	(begin
      (gimp-context-set-gradient-reverse gradient-reverse)
      (gimp-drawable-edit-gradient-fill sepia-layer
				      GRADIENT-SHAPEBURST-DIMPLED  0
				      FALSE 1 0
				      TRUE
				      0 0 center-x center-y)
	) )
	
  (gimp-context-pop)


  ; Zmiana krycia warstwy
  (gimp-layer-set-opacity sepia-layer value-slider-sepia)
  
  (gimp-image-merge-down image sepia-layer CLIP-TO-IMAGE)
  
  (gimp-image-undo-group-end image)
  ;(gimp-image-undo-enable image)
  
  (gimp-displays-flush)
) )

(script-fu-register-filter "przem-apply-sepia-v3"
  _"_Apply a sepia effect to the image"
  _"Tworzy obraz sepii"
  "Przemyslaw R. Pietraszczyk"
  "Public Domain"
  "2025-02-07"
  "RGB* GRAY*"
  SF-ONE-OR-MORE-DRAWABLE
  SF-ADJUSTMENT _"Sepia intensity" '(50 0 100 1 10 0 0)  ; Suwak poziomy
  SF-TOGGLE     _"Gradient reverse" FALSE
  SF-TOGGLE     _"Shape" TRUE


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