; 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))) (pixw (cons-array 3 'byte)) (resize-y 0) (resize-x 0) (y 0) (x 0)) (aset pixw 0 255) (aset pixw 1 255) (aset pixw 2 255) ;(gimp-image-insert-layer new-image new-drawable 0 -1) (gimp-selection-none new-image)     (gimp-context-push)     (gimp-context-set-defaults) ; symulacja (while (< y height)       (while (< x width) (set! resize-x (+ x (* amplitude (sin (+ (* frequency x) phase)))))           (set! resize-y (+ y (* amplitude (cos (+ (* frequency y) phase))))) (set! x (+ x 1)) ) (set! x 0) (set! y (+ y 1)) ) (gimp-image-scale new-image resize-x resize-y)     (set! new-drawable (car (gimp-image-get-active-drawable new-image))) (set! x 0) (set! y 0)     ; 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 (cdr (gimp-image-pick-color image drawable x y FALSE FALSE 1))) ;(pre-pixel (vector (gimp-drawable-get-pixel drawable x y))) ;(pixel0 (vector-ref pre-pixel 0) ) ;(pixel1 (vector-ref pre-pixel 1) ) ;(pixel2 (vector-ref pre-pixel 2) ) (type (car (gimp-drawable-get-pixel drawable x y))) (pixel (cdr (gimp-drawable-get-pixel drawable x y))) )           (gimp-drawable-set-pixel new-drawable new-x new-y 3 color) (gimp-message "Test image saved.") (display "pixel: ") (displayln pixel) ) (set! x (+ x 1)) ) (set! x 0) (set! y (+ y 1)) ) ;(gimp-image-set-resolution image newdpi newdpi)     (gimp-context-pop)     (gimp-display-new new-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" "/Filters/PIETRASZCZYK")