blob: 2608410d927c055bb3ec10a2e21e1e321210c223 (
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
|
; apply-waves-effect - Script-fu dodający efekt fali
; author: PRP
; licencja: Public Domain
; Gdańsk - 26-02-2025
; ver. 1.250226-0
;(define (przem-apply-waves-effect image drawable amplitude wavelength phase type)
;(define (przem-apply-waves-effect image drawable)
; (let* (
; (width (car (gimp-image-width image)))
; (height (car (gimp-image-height image)))
; (amplitude 10) ; Amplituda fal
; (wavelength 50) ; Długość fali
; (type 0) ; Typ fali (0 - sinusoidalna, 1 - trójkątna, 2 - prostokątna)
; (phase 0) ; Faza fali
; )
; (plug-in-waves RUN-NONINTERACTIVE image drawable amplitude wavelength type phase)
; )
;)
(define (przem-apply-waves-effect image drawable amplitude frequency phase)
(let* (
(width (car (gimp-image-width image)))
(height (car (gimp-image-height image)))
(new-image (car (gimp-image-duplicate image)))
(new-drawable (car (gimp-image-get-active-drawable new-image)))
(y 0)
(x 0))
;(gimp-image-undo-group-start image)
;(gimp-image-insert-layer new-image new-drawable 0 -1)
(gimp-selection-none new-image)
(gimp-context-push)
(gimp-context-set-defaults)
; Przejdź przez każdy piksel obrazu
(while (< y height)
(while (< x width)
(let* (
(new-x (+ x (* amplitude (sin (+ (* frequency x) phase)))))
(new-y (+ y (* amplitude (cos (+ (* frequency y) phase)))))
(color (car (gimp-image-pick-color image drawable x y TRUE TRUE 1)))
(gimp-message-set-handler 0)
(display "color: ") (displayln color)
(gimp-drawable-set-pixel new-drawable new-x new-y color)) )
(set! x (+ x 1))
)
(set! y (+ y 1))
)
(gimp-context-pop)
;(gimp-image-merge-down new-image new-drawable CLIP-TO-IMAGE)
(gimp-display-new new-image)
;(gimp-image-undo-group-end image))
(gimp-selection-none new-image)
;(gimp-displays-flush)
) )
(define displayln (lambda (obj) (display obj) (display "\n")))
(script-fu-register "przem-apply-waves-effect"
_"Apply a waves effect to the image."
_"Dodaje efekt fali do zdjęcia"
"Przenmysław R. Pietraszczyk"
"Public Domain"
"2025-02-23"
"RGB*, GRAY*"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
;SF-ADJUSTMENT "Amplitude" '(10 0 100 1 10 0 0)
;SF-ADJUSTMENT "Wave Length" '(50 0 100 1 10 0 0)
;SF-ADJUSTMENT "Phase Wave" '(0 0 100 1 10 0 0)
;SF-OPTION "Type" '("Sinusoidal" "Triangle" "Rectangular")
SF-VALUE "Amplitude" "10"
SF-VALUE "Frequency" "0.1"
SF-VALUE "Phase" "0"
)
(script-fu-menu-register "przem-apply-waves-effect" "<Image>/Filters/PIETRASZCZYK")
|