summaryrefslogtreecommitdiff
path: root/script-fu
diff options
context:
space:
mode:
Diffstat (limited to 'script-fu')
-rw-r--r--script-fu/2.10/przem-add-background-under-text.scm83
-rw-r--r--script-fu/2.10/przem-apply-cents-effect.scm47
-rw-r--r--script-fu/2.10/przem-apply-sepia.scm91
-rw-r--r--script-fu/2.10/przem-apply-waves-effect.scm96
-rw-r--r--script-fu/2.10/przem-cyanotype-gum-effect-multi.scm55
-rw-r--r--script-fu/2.10/przem-cyanotype-gum-effect.scm33
-rw-r--r--script-fu/2.10/przem-expired-negative.scm222
-rw-r--r--script-fu/2.10/przem-prussian-blue-effect.scm57
-rw-r--r--script-fu/2.10/przem-soft-focus-noninteractive.scm32
-rw-r--r--script-fu/2.10/przem-soft-focus.scm49
-rw-r--r--script-fu/2.10/przem-traditional-photo.scm52
-rw-r--r--script-fu/3.0/przem-add-background-under-text-v3.scm96
-rw-r--r--script-fu/3.0/przem-apply-sepia-v3.scm154
-rw-r--r--script-fu/3.0/przem-soft-focus-noninteractive-v3.scm54
-rw-r--r--script-fu/3.0/przem-traditional-photo-v3.scm69
-rw-r--r--script-fu/changelog.md129
16 files changed, 1319 insertions, 0 deletions
diff --git a/script-fu/2.10/przem-add-background-under-text.scm b/script-fu/2.10/przem-add-background-under-text.scm
new file mode 100644
index 0000000..9b9c977
--- /dev/null
+++ b/script-fu/2.10/przem-add-background-under-text.scm
@@ -0,0 +1,83 @@
+; przem-add-background-under-text - Script-fu dodający podpis z tłem
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 06-02-2025
+; ver. 1.250209-1
+
+(define (przem-add-background-under-text image drawable text font font-size color background-transparency opacity)
+
+ (gimp-image-undo-group-start image)
+
+ (let* (
+ (image-width (car (gimp-image-width image)))
+ (image-height (car (gimp-image-height image)))
+ (text-extents (gimp-text-get-extents-fontname text font-size 0 font))
+ (text-width (car text-extents))
+ (text-height (cadr text-extents))
+ (pos-x (- (- image-width text-width) 40))
+ (pos-y (- image-height text-height))
+ (bg-x-left (- pos-x 10))
+ (bg-x-right (+ text-width 10))
+ (text-layer (car (gimp-text-fontname image -1 0 0 text 0 TRUE font-size 0 font)))
+ (bg-layer (car (gimp-layer-new image bg-x-right text-height RGBA-IMAGE "Background" 100 NORMAL-MODE)))
+ (is-nocolorful (car (gimp-drawable-is-gray drawable))) ; czy obraz jest w odcieniach szarości
+ )
+
+ ; Ustawienie koloru tła
+ (gimp-context-set-background color)
+ (gimp-drawable-fill bg-layer BACKGROUND-FILL)
+ (gimp-layer-set-opacity bg-layer opacity)
+
+ ; jeśli obraz jest szary to konwertuje go na RGB - tak na sztukę
+ (if (= is-nocolorful TRUE)
+ (gimp-image-convert-rgb image)
+ )
+
+ ; Dodanie warstwy tła pod tekstem
+ (gimp-image-insert-layer image bg-layer 0 -1)
+ ;(gimp-image-add-layer image new-layer 0)
+ (gimp-layer-translate bg-layer bg-x-left pos-y)
+
+ (if (= background-transparency TRUE)
+ (begin
+ (gimp-drawable-fill bg-layer TRANSPARENT-FILL)
+ )
+ (begin ; else
+ )
+ )
+
+ ; Ustawienie pozycji tekstu
+ (gimp-layer-set-offsets text-layer pos-x pos-y)
+
+ ; Przesuń warstwę tekstową na górę stosu warstw
+ (gimp-image-raise-item-to-top image text-layer)
+
+ ; Scalanie warstw
+ (gimp-image-merge-down image text-layer CLIP-TO-IMAGE)
+
+ ; Aktualizacja widoku
+ (gimp-displays-flush)
+
+ (gimp-image-undo-group-end image) ; Zakończ grupę operacji undo
+ )
+)
+
+(script-fu-register "przem-add-background-under-text"
+ _"Add Background Under Text"
+ _"Dodaje kolorowe tło pod tekstem z możliwością wyboru czcionki i rozmiaru."
+ "Przemysław R. Pietraszczyk"
+ "Public Domain"
+ "2025-02-06"
+ "RGB* GRAY*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Drawable" 0
+ SF-STRING "Text" "Doda Elektroda"
+ SF-FONT "Font" "Sans-serif"
+ SF-ADJUSTMENT "Font Size" '(50 1 1000 1 10 0 1)
+ SF-COLOR "Background Color" '(255 215 0)
+ SF-TOGGLE "Background Transparency" FALSE
+ SF-ADJUSTMENT "Transparency Value" '(100 1 100 1 10 0 1)
+)
+
+(script-fu-menu-register "przem-add-background-under-text"
+ "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/2.10/przem-apply-cents-effect.scm b/script-fu/2.10/przem-apply-cents-effect.scm
new file mode 100644
index 0000000..e8c9958
--- /dev/null
+++ b/script-fu/2.10/przem-apply-cents-effect.scm
@@ -0,0 +1,47 @@
+; apply-cents-effect - Script-fu dodający efekt cętek
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 26-02-2025
+; ver. 1.250223-0
+
+(define (przem-apply-cents-effect image drawable bright azimuth elevation depth polish)
+
+ (let* (
+ (width (car (gimp-image-width image)))
+ (height (car (gimp-image-height image)))
+ (bump-map (car (gimp-image-get-active-layer image)))
+ )
+ (gimp-image-undo-group-start image)
+
+ (plug-in-solid-noise RUN-NONINTERACTIVE image drawable 0 0 0 1 5 5)
+ (plug-in-bump-map RUN-NONINTERACTIVE image drawable bump-map azimuth elevation depth 0 0 0 0 TRUE FALSE 0)
+ (if (= polish 0) (gimp-curves-spline drawable 0 18 #(0 255 30 0 65 255 95 0 125 255 160 0 190 255 222 0 255 255)));max
+ (if (= polish 1) (gimp-curves-spline drawable 0 14 #(0 0 31 193 79 30 127 255 191 94 222 255 255 185)));med
+ (if (= polish 2) (gimp-curves-spline drawable 0 14 #(0 0 32 160 94 63 127 223 190 161 222 255 255 255)));soft
+ (gimp-brightness-contrast drawable bright bright)
+ (gimp-selection-invert image)
+
+ (gimp-image-undo-group-end image)
+ (gimp-displays-flush)
+ )
+)
+
+
+(script-fu-register "przem-apply-cents-effect"
+ _"Apply a cents effect to the image."
+ _"Dodaje efekt cętek do zdjęcia"
+ "Przenmysław R. Pietraszczyk"
+ "Public Domain"
+ "2025-02-23"
+ "RGB*, GRAY*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Drawable" 0
+ SF-ADJUSTMENT "Bright" '(50 0 100 1 10 0 0)
+ SF-ADJUSTMENT "Azimuth" '(360 0 360 1 10 0 0)
+ SF-ADJUSTMENT "Elevation" '(45 0 90 1 10 0 0)
+ SF-ADJUSTMENT "Depth" '(5 1 50 1 10 0 0)
+ SF-OPTION "Polish" '("MAX" "MED" "MIN")
+
+)
+
+(script-fu-menu-register "przem-apply-cents-effect" "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/2.10/przem-apply-sepia.scm b/script-fu/2.10/przem-apply-sepia.scm
new file mode 100644
index 0000000..449d627
--- /dev/null
+++ b/script-fu/2.10/przem-apply-sepia.scm
@@ -0,0 +1,91 @@
+; przem-apply-sepia - Script-fu dodający prawdziwą sepie do zdjęcia
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 07-02-2025
+; ver. 1.250213-0
+
+(define (przem-apply-sepia image drawable value-slider-sepia gradient-reverse gradient-shape)
+
+ (let* (
+ (image-width (car (gimp-image-width image)))
+ (image-height (car (gimp-image-height image)))
+ (center-x (/ image-width 2))
+ (center-y (* image-height 0.5)) ; either is OK
+ (sepia-layer (car (gimp-layer-new image image-width image-height RGBA-IMAGE "Sepia Layer" 100 NORMAL-MODE)))
+ (is-nocolorful (car (gimp-drawable-is-gray drawable))) ; czy obraz jest w odcieniach szarości
+ (radius (sqrt (+ (* center-x center-x) (* center-y center-y))))
+ )
+
+ (gimp-image-undo-group-start image)
+
+ ; jeśli obraz jest szary to konwertuje go na RGB - tak na sztukę
+ (if (= is-nocolorful TRUE)
+ (gimp-image-convert-rgb image)
+ )
+
+ ; Konwersja obrazu do skali szarości
+ (gimp-desaturate drawable)
+
+ ; Dodanie koloru sepii
+ (gimp-context-set-foreground '(112 66 20)) ; Kolor sepii
+ (gimp-context-set-background '(233 213 186)) ; Kolor sepii
+
+
+ (gimp-image-insert-layer image sepia-layer 0 -1)
+
+ (gimp-selection-all image)
+
+ (if (= gradient-reverse TRUE)
+ (begin
+
+ (if (= gradient-shape TRUE)
+ (begin
+ (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)
+ )
+ (begin
+ (gimp-edit-blend sepia-layer CUSTOM-MODE NORMAL-MODE
+ GRADIENT-RADIAL 100 0 REPEAT-NONE FALSE
+ FALSE 0 0 TRUE
+ center-x center-y radius 0)
+ ) ) )
+ (begin
+
+ (if (= gradient-shape TRUE)
+ (begin
+ (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)
+ )
+ (begin
+ (gimp-edit-blend sepia-layer CUSTOM-MODE NORMAL-MODE
+ GRADIENT-RADIAL 100 0 REPEAT-NONE FALSE
+ FALSE 0 0 TRUE
+ center-x center-y radius 0)
+ ) ) ) )
+
+
+ ; )
+ ; 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-displays-flush)
+) )
+
+(script-fu-register "przem-apply-sepia"
+ _"Apply a sepia effect to the image"
+ _"Tworzy obraz sepii"
+ "Przemyslaw R. Pietraszczyk"
+ "Public Domain"
+ "2025-02-07"
+ "RGB* GRAY*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Drawable" 0
+ SF-ADJUSTMENT "Sepia intensity" '(50 0 100 1 10 0 0)
+ SF-TOGGLE "Gradient reverse" FALSE
+ SF-TOGGLE "Shape" TRUE
+)
+
+(script-fu-menu-register "przem-apply-sepia"
+ "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/2.10/przem-apply-waves-effect.scm b/script-fu/2.10/przem-apply-waves-effect.scm
new file mode 100644
index 0000000..5ded293
--- /dev/null
+++ b/script-fu/2.10/przem-apply-waves-effect.scm
@@ -0,0 +1,96 @@
+; apply-waves-effect - Script-fu dodający efekt falowania
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 25-02-2025
+; ver. 1.250225-2
+
+(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)))
+ (resize-y 0)
+ (resize-x 0)
+ (y 0)
+ (x 0)
+ (counter 0))
+ (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! counter (+ counter 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 (car (gimp-image-pick-color image drawable x y FALSE FALSE 1)))
+ )
+ (gimp-context-set-foreground color)
+ ;(gimp-brushes-refresh)
+ (gimp-context-set-brush "Circle (01)")
+ (gimp-context-set-brush-size 1)
+ (gimp-context-set-brush-angle 0.0)
+ (gimp-context-set-brush-hardness 1.0)
+ (gimp-context-set-opacity 100.0)
+    (gimp-pencil new-drawable 2 (vector new-x new-y)) ; Narysuj punkt
+
+ (gimp-message "Wait...")
+ ;(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-25"
+ "RGB*, GRAY*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Drawable" 0
+ SF-VALUE "Amplitude" "10"
+  SF-VALUE "Frequency" "0.1"
+  SF-VALUE "Phase" "0"
+)
+
+(script-fu-menu-register "przem-apply-waves-effect" "<Image>/Filters/PIETRASZCZYK")
diff --git a/script-fu/2.10/przem-cyanotype-gum-effect-multi.scm b/script-fu/2.10/przem-cyanotype-gum-effect-multi.scm
new file mode 100644
index 0000000..9603815
--- /dev/null
+++ b/script-fu/2.10/przem-cyanotype-gum-effect-multi.scm
@@ -0,0 +1,55 @@
+; przem-cyanotype-gum-effect-multi - Efekty cyjanotypii i gumy dwuchromianowej
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 18-06-2025
+; ver. 2.250618-1
+
+(define (przem-cyanotype-gum-effect-multi img drawable blue grain)
+ ;(gimp-image-undo-group-start img)
+
+ (gimp-context-push)
+ (gimp-image-undo-group-start img)
+
+ ; Cyjanotypia (zostaw tylko niebieski kanał)
+ (let* (
+ (cyan-layer (car (gimp-layer-copy drawable TRUE))))
+ (gimp-image-insert-layer img cyan-layer 0 -1)
+ (gimp-item-set-name cyan-layer "Cyanotype")
+ (gimp-layer-set-mode cyan-layer LAYER-MODE-SCREEN) ; Tryb mieszania: Screen
+ (plug-in-colors-channel-mixer TRUE img cyan-layer TRUE 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0)
+ ;(gimp-invert cyan-layer)
+ (gimp-hue-saturation cyan-layer 0 blue 50 0)
+ )
+
+
+
+ ; Guma dwuchromianowa (sepia + ziarno)
+ (let* (
+ (gum-layer (car (gimp-layer-copy drawable TRUE))))
+ (gimp-image-insert-layer img gum-layer 0 -1)
+ (gimp-item-set-name gum-layer "Gum Bichromate")
+ (gimp-layer-set-mode gum-layer LAYER-MODE-OVERLAY) ; Tryb mieszania: Overlay
+ (gimp-hue-saturation gum-layer 0 40 25 0) ; Brązowy odcień
+ (plug-in-noisify TRUE img gum-layer FALSE grain grain grain 0) ; Lekkie ziarno 0.1
+ )
+
+ (gimp-image-undo-group-end img)
+ (gimp-displays-flush)
+ (gimp-context-pop))
+
+
+(script-fu-register "przem-cyanotype-gum-effect-multi"
+ _"Add Cyanotype+Gum Multi..."
+ _"Efekty cyjanotypii i gumy dwuchromianowej"
+ "PRP"
+ "Public Domain"
+ "2025-06-18"
+ "RGB*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Drawable" 0
+ SF-ADJUSTMENT "Pastel blue" '(40 30 70 1 10 1 0)
+ SF-ADJUSTMENT "Grain" '(0.1 0 1 0.1 0.1 2 0))
+
+(script-fu-menu-register "przem-cyanotype-gum-effect-multi"
+ "<Image>/Filters/PIETRASZCZYK/")
+
diff --git a/script-fu/2.10/przem-cyanotype-gum-effect.scm b/script-fu/2.10/przem-cyanotype-gum-effect.scm
new file mode 100644
index 0000000..551c89f
--- /dev/null
+++ b/script-fu/2.10/przem-cyanotype-gum-effect.scm
@@ -0,0 +1,33 @@
+; przem-cyanotype-gum-effect - Tworzy efekt zastosowania cyjanotypi wraz z gumą dwuchromianową
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 18-09-2025
+; ver. 2.250618-0
+
+(define (przem-cyanotype-gum-effect img drawable)
+ (gimp-context-push)
+ (gimp-image-undo-group-start img)
+
+ ; Cyjanotypia
+ (plug-in-colors-channel-mixer TRUE img drawable TRUE 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0) ; Tylko niebieski kanał
+
+ ; Efekt gumy
+ (gimp-colorize drawable 40 25 0) ; Brązowe barwienie
+
+ (gimp-image-undo-group-end img)
+ (gimp-displays-flush)
+ (gimp-context-pop))
+
+
+(script-fu-register "przem-cyanotype-gum-effect"
+ _"Add Cyanotype+Gum..."
+ _"Łączy efekt cyjanotypii i gumy dwuchromianowej"
+ "PRP"
+ "Public Domain"
+ "2025-06-18"
+ "RGB*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Drawable" 0)
+
+(script-fu-menu-register "przem-cyanotype-gum-effect"
+ "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/2.10/przem-expired-negative.scm b/script-fu/2.10/przem-expired-negative.scm
new file mode 100644
index 0000000..c939db2
--- /dev/null
+++ b/script-fu/2.10/przem-expired-negative.scm
@@ -0,0 +1,222 @@
+; przem-expired-negative - luźne nawiązanie do przeterminowanego negatywu ORWO
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 22-05-2025
+; ver. 2.250610-5~beta
+
+(define (is-portrait? image)
+ (let* ((width (car (gimp-image-width image)))
+ (height (car (gimp-image-height image)))
+ (ratio (/ (min width height) (max width height))))
+
+ ; Jeśli stosunek boków jest większy niż 0.7 i wysokość > szerokości
+ ;(and (> ratio 0.7) (> height width))
+ (> height width)
+ )
+)
+
+
+(define (portrait image fog-layer-right fog-layer-left position-right width cut-left density color)
+
+ ; PORTRET
+ ; prawa strona
+ ; Dodaj nową warstwę dla mgły
+ (gimp-image-insert-layer image fog-layer-right 0 -1)
+
+ (gimp-context-set-background color)
+ (gimp-context-set-foreground '(#x0 #x0 #x0)) ; mgła jest biała/szara
+
+ ; Wypełnij warstwę przezroczystością
+ (gimp-drawable-fill fog-layer-right FILL-TRANSPARENT)
+
+ ; Utwórz gradient od przezroczystego do białego (mgła)
+ (gimp-edit-blend fog-layer-right BLEND-FG-TRANSPARENT LAYER-MODE-NORMAL
+ GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
+ FALSE 0 0 TRUE
+ position-right 0 ; X1 = 3/4 szerokości
+ width 0) ; X2 = pełna szerokość
+
+ ; Lekko rozmyj mgłę dla naturalnego efektu
+ (plug-in-gauss 1 image fog-layer-right density density 1) ; dostosuj wartość rozmycia (8)
+
+ ; Ustaw maskę warstwy, aby stopniowo zanikała
+ (let ((mask (car (gimp-layer-create-mask fog-layer-right ADD-MASK-WHITE))))
+ (gimp-layer-add-mask fog-layer-right mask)
+
+ (gimp-context-set-background color)
+ (gimp-context-set-foreground '(#x0 #x0 #x0)) ; mgła jest biała/szara
+ (gimp-edit-blend mask BLEND-FG-TRANSPARENT LAYER-MODE-NORMAL
+ GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
+ FALSE 0 0 TRUE
+ position-right 0
+ width 0))
+
+
+
+
+ ;lewa strona
+ ; Dodaj nową warstwę dla mgły
+ (gimp-image-insert-layer image fog-layer-left 0 -1)
+ (gimp-context-set-background color)
+ (gimp-context-set-foreground '(#x0 #x0 #x0)) ; mgła jest biała/szara
+
+ ; Wypełnij warstwę przezroczystością
+ (gimp-drawable-fill fog-layer-left FILL-TRANSPARENT)
+
+ ; Utwórz gradient od przezroczystego do białego (mgła)
+ (gimp-edit-blend fog-layer-left BLEND-FG-TRANSPARENT LAYER-MODE-NORMAL
+ GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
+ FALSE 0 0 TRUE
+ cut-left 0 0 0)
+
+ ; Lekko rozmyj mgłę dla naturalnego efektu
+ (plug-in-gauss 1 image fog-layer-left density density 1) ; dostosuj wartość rozmycia (8)
+
+ ; Ustaw maskę warstwy, aby stopniowo zanikała
+ (let ((mask (car (gimp-layer-create-mask fog-layer-left ADD-MASK-WHITE))))
+ (gimp-layer-add-mask fog-layer-left mask)
+ (gimp-context-set-background color)
+ (gimp-context-set-foreground '(#x0 #x0 #x0)) ; mgła jest biała/szara
+
+ (gimp-edit-blend mask BLEND-FG-TRANSPARENT LAYER-MODE-NORMAL
+ GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
+ FALSE 0 0 TRUE
+ cut-left 0 0 0))
+
+
+)
+
+(define (landscape image fog-layer-up fog-layer-bottom width height cut-up size density color)
+
+ ; KRAJOBRAZ
+ ; dól
+ ; Dodaj nową warstwę dla mgły
+ (gimp-image-insert-layer image fog-layer-up 0 -1)
+
+ (gimp-context-set-background color)
+ (gimp-context-set-foreground '(#x0 #x0 #x0)) ; mgła jest biała/szara
+
+ ; Wypełnij warstwę przezroczystością
+ (gimp-drawable-fill fog-layer-up FILL-TRANSPARENT)
+
+ ; Utwórz gradient od przezroczystego do białego (mgła)
+ (gimp-edit-blend fog-layer-up BLEND-FG-TRANSPARENT LAYER-MODE-NORMAL
+ GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
+ FALSE 0 0 TRUE
+ 0 (- height cut-up) 0 height) ; size
+
+ ; Lekko rozmyj mgłę dla naturalnego efektu
+ (plug-in-gauss 1 image fog-layer-up density density 1) ; dostosuj wartość rozmycia (8)
+
+ ; Ustaw maskę warstwy, aby stopniowo zanikała
+ (let ((mask (car (gimp-layer-create-mask fog-layer-bottom ADD-MASK-WHITE))))
+ (gimp-layer-add-mask fog-layer-up mask)
+
+ (gimp-context-set-background color)
+ (gimp-context-set-foreground '(#x0 #x0 #x0)) ; mgła jest biała/szara
+ (gimp-edit-blend mask BLEND-FG-TRANSPARENT LAYER-MODE-NORMAL
+ GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
+ FALSE 0 0 TRUE
+ 0 (- height cut-up) 0 height)) ; size
+
+
+
+ ; gora
+ ; Dodaj nową warstwę dla mgły
+ (gimp-image-insert-layer image fog-layer-bottom 0 -1)
+
+ (gimp-context-set-background color)
+ (gimp-context-set-foreground '(#x0 #x0 #x0)) ; mgła jest biała/szara
+
+ ; Wypełnij warstwę przezroczystością
+ (gimp-drawable-fill fog-layer-bottom FILL-TRANSPARENT)
+
+ ; Utwórz gradient od przezroczystego do białego (mgła)
+ (gimp-edit-blend fog-layer-bottom BLEND-FG-TRANSPARENT LAYER-MODE-NORMAL
+ GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
+ FALSE 0 0 TRUE
+ 0 cut-up
+ 0 0)
+
+ ; Lekko rozmyj mgłę dla naturalnego efektu
+ (plug-in-gauss 1 image fog-layer-bottom density density 1) ; dostosuj wartość rozmycia (8)
+
+ ; Ustaw maskę warstwy, aby stopniowo zanikała
+ (let ((mask (car (gimp-layer-create-mask fog-layer-bottom ADD-MASK-WHITE))))
+ (gimp-layer-add-mask fog-layer-bottom mask)
+
+ (gimp-context-set-background color)
+ (gimp-context-set-foreground '(#x0 #x0 #x0)) ; mgła jest biała/szara
+ (gimp-edit-blend mask BLEND-FG-TRANSPARENT LAYER-MODE-NORMAL
+ GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
+ FALSE 0 0 TRUE
+ 0 cut-up
+ 0 0))
+
+
+
+)
+
+
+(define (przem-expired-negative image drawable size density color)
+ (let* (
+ (width (car (gimp-image-width image)))
+ (height (car (gimp-image-height image)))
+ (frame-size-left size)
+ (frame-size-right (- 1 size))
+ (frame-size-up size)
+ (position-right (* width frame-size-right))
+ (position-left (* width frame-size-left))
+
+ (position-up (* height frame-size-up))
+ (num-size-up (/ height position-up))
+ (cut-up (- height (* position-up (- num-size-up 1))))
+ (is-colorful (car (gimp-drawable-is-rgb drawable))) ; czy obraz jest kolorowy
+
+ (num-size-left (/ width position-left))
+ (cut-left (- width (* position-left (- num-size-left 1)))) ; 3
+ (fog-layer-right (car (gimp-layer-new image width height GRAY-IMAGE "Fog-Right-Up" 100 LAYER-MODE-NORMAL)))
+ (fog-layer-left (car (gimp-layer-new image width height GRAY-IMAGE "Fog-Left-Bottom" 100 LAYER-MODE-NORMAL)))
+ )
+
+ (gimp-image-undo-group-start image)
+
+ (if (= is-colorful TRUE)
+ (gimp-image-convert-grayscale image)
+ )
+
+ (if (is-portrait? image)
+ (begin
+ ;(gimp-message (string-append "width: " (number->string width)))
+ ;(gimp-message (string-append "position-right: " (number->string position-right)))
+ ;(gimp-message (string-append "cut-left: " (number->string cut-left)))
+ (portrait image fog-layer-right fog-layer-left position-right width cut-left density color))
+ (begin
+ ;(gimp-message (string-append "height: " (number->string height)))
+ ;(gimp-message (string-append "size: " (number->string (* size 1000))))
+ ;(gimp-message (string-append "cut-up: " (number->string cut-up)))
+ (landscape image fog-layer-right fog-layer-left width height cut-up (* size 1000) density color))
+
+ )
+ (gimp-image-undo-group-end image) ;)
+
+ (gimp-displays-flush)
+ )
+)
+
+(script-fu-register "przem-expired-negative"
+ _"Convert photographs to photograph from expired negative"
+ _"Konwertuje na fotografie z przeterminowanego negatywu"
+ "Przemyslaw R. Pietraszczyk"
+ "Public Domain"
+ "2025-05-22"
+ "RGB* GRAY*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Drawable" 0
+ SF-ADJUSTMENT "Size" '(0.20 0.05 0.50 0.01 0.01 2 0)
+ SF-ADJUSTMENT "Density" '(8 8 128 8 8 1 0)
+ SF-COLOR "Color" '(#x74 #x73 #x73) ;color variable
+)
+
+(script-fu-menu-register "przem-expired-negative"
+ "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/2.10/przem-prussian-blue-effect.scm b/script-fu/2.10/przem-prussian-blue-effect.scm
new file mode 100644
index 0000000..d469399
--- /dev/null
+++ b/script-fu/2.10/przem-prussian-blue-effect.scm
@@ -0,0 +1,57 @@
+; przem-prussian-blue-effect - nieudalna próba nawiązania do efektu cyjanotypii
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 22-6-2025
+; ver. 2.250622-0~beta
+
+(define (przem-prussian-blue-effect img drawable mode invert value-blue)
+
+ (let* ((gradient-layer (car (gimp-layer-new img (car (gimp-image-width img)) (car (gimp-image-height img)) RGBA-IMAGE "Prussian Blue" 50 NORMAL-MODE)))
+ (is-nocolorful (car (gimp-drawable-is-gray drawable))))
+
+ (gimp-image-undo-group-start img)
+ (gimp-context-push)
+
+ ; jeśli obraz jest szary to konwertuje go na RGB - tak na sztukę
+ (if (= is-nocolorful TRUE)
+ (gimp-image-convert-rgb img)
+ )
+
+ (gimp-image-insert-layer img gradient-layer 0 -1)
+ (gimp-context-set-foreground '(0 51 102)) ; Kolor błękitu pruskiego
+ (gimp-context-set-background '(0 0 0))
+ (if (= mode 0) (gimp-layer-set-mode gradient-layer OVERLAY-MODE))
+ (if (= mode 1) (gimp-layer-set-mode gradient-layer SCREEN-MODE))
+
+ (plug-in-colors-channel-mixer TRUE img gradient-layer TRUE 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0)
+
+ ;(gimp-edit-blend gradient-layer FG-BG-RGB-MODE NORMAL-MODE GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE FALSE 0 0 TRUE (car (gimp-image-width img)) (car (gimp-image-height img)) 0 0)
+ (gimp-edit-blend gradient-layer FG-BG-RGB-MODE NORMAL-MODE GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE FALSE 0 0 TRUE 0 0 0 0)
+
+ (if (= invert TRUE) (gimp-invert gradient-layer))
+
+ (gimp-layer-set-opacity gradient-layer value-blue)
+ (gimp-image-merge-down img gradient-layer CLIP-TO-IMAGE)
+
+ (gimp-image-undo-group-end img)
+ (gimp-displays-flush)
+ (gimp-context-pop))
+)
+
+(script-fu-register "przem-prussian-blue-effect"
+ _"Apply prussian blue effect"
+ _"Nakłada efekt błękitu pruskiego na zdjęcie."
+ "PRP"
+ "Public Domain"
+ "2025-06-22"
+ "RGB*, GRAY*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Drawable" 0
+ SF-OPTION "Mode" '("OVERLAY MODE" "SCREEN MODE")
+ SF-TOGGLE "Invert Color" FALSE
+ SF-ADJUSTMENT "Blue intensity" '(50 0 100 1 10 0 0)
+
+)
+
+(script-fu-menu-register "przem-prussian-blue-effect"
+ "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/2.10/przem-soft-focus-noninteractive.scm b/script-fu/2.10/przem-soft-focus-noninteractive.scm
new file mode 100644
index 0000000..f833adb
--- /dev/null
+++ b/script-fu/2.10/przem-soft-focus-noninteractive.scm
@@ -0,0 +1,32 @@
+; przem-soft-focus-noninteractive - Tworzy efekt miękkiego focusa
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 15-09-2025
+; ver. 2.250615-0
+
+(define (przem-soft-focus-noninteractive filename file-name blur-radius opacity)
+
+ (let* (
+ (img (car (gimp-file-load RUN-NONINTERACTIVE filename file-name)))
+ (drawable (car (gimp-image-get-active-layer img)))
+ (soft-layer (car (gimp-layer-copy drawable FALSE)))
+ )
+
+ (gimp-image-insert-layer img soft-layer 0 -1)
+ (gimp-item-set-name soft-layer "Soft Focus")
+
+ ; Rozmycie Gaussa
+ (plug-in-gauss 1 img soft-layer blur-radius blur-radius 0)
+
+ ; Zmień tryb mieszania na Overlay lub Screen
+ (gimp-layer-set-mode soft-layer OVERLAY-MODE)
+
+ ; Dostosuj przezroczystość
+ (gimp-layer-set-opacity soft-layer opacity)
+ ;(gimp-image-merge-down img soft-layer CLIP-TO-IMAGE)
+
+ (gimp-file-save RUN-NONINTERACTIVE img drawable file-name filename)
+ (gimp-image-delete img)
+
+))
+
diff --git a/script-fu/2.10/przem-soft-focus.scm b/script-fu/2.10/przem-soft-focus.scm
new file mode 100644
index 0000000..055e988
--- /dev/null
+++ b/script-fu/2.10/przem-soft-focus.scm
@@ -0,0 +1,49 @@
+; przem-soft-focus - Tworzy efekt miękkiego focusa
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 15-09-2025
+; ver. 2.250615-0
+
+(define (przem-soft-focus img drawable blur-radius opacity)
+
+ (let* (
+ (soft-layer (car (gimp-layer-copy drawable FALSE)))
+ )
+ (gimp-context-push)
+ (gimp-image-undo-group-start img)
+
+ (gimp-image-insert-layer img soft-layer 0 -1)
+ (gimp-item-set-name soft-layer "Soft Focus")
+
+ ; Rozmycie Gaussa
+ (plug-in-gauss 1 img soft-layer blur-radius blur-radius 0)
+
+ ; Zmień tryb mieszania na Overlay lub Screen
+ (gimp-layer-set-mode soft-layer OVERLAY-MODE)
+
+ ; Dostosuj przezroczystość
+ (gimp-layer-set-opacity soft-layer opacity)
+ (gimp-image-merge-down img soft-layer CLIP-TO-IMAGE)
+
+
+ (gimp-image-undo-group-end img)
+ (gimp-displays-flush)
+ (gimp-context-pop)
+))
+
+; Rejestracja skryptu w menu GIMP
+(script-fu-register "przem-soft-focus"
+ _"Apply a Soft Focus..."
+ _"Tworzy efekt miękkiego focusu"
+ "PRP"
+ "Public Domain"
+ "2025-06-15"
+ "RGB*, GRAY*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Drawable" 0
+ SF-ADJUSTMENT "Blur (px)" '(15 1 100 1 10 0 1)
+ SF-ADJUSTMENT "Transparency (%)" '(50 0 100 1 10 0 1)
+)
+
+(script-fu-menu-register "przem-soft-focus"
+ "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/2.10/przem-traditional-photo.scm b/script-fu/2.10/przem-traditional-photo.scm
new file mode 100644
index 0000000..a43ef58
--- /dev/null
+++ b/script-fu/2.10/przem-traditional-photo.scm
@@ -0,0 +1,52 @@
+; przem-traditional-photo - luźne nawiązanie do chemii tradycyjnej fototgrafii
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 15-02-2025
+; ver. 2.250217-0~beta
+
+(define (cross drawable)
+ ; crossing photo
+ (gimp-curves-spline drawable HISTOGRAM-VALUE 10 #(0 0 64 90 128 160 192 230 255 255))
+ (gimp-curves-spline drawable HISTOGRAM-RED 10 #(0 0 64 50 128 180 192 230 255 255))
+ (gimp-curves-spline drawable HISTOGRAM-GREEN 10 #(0 0 64 80 128 120 192 200 255 255))
+ (gimp-curves-spline drawable HISTOGRAM-BLUE 10 #(0 0 64 30 128 150 192 220 255 255))
+ ; lub
+ ;(define value #(0 0 64 90 128 160 192 230 255 255))
+ ;(gimp-drawable-curves-spline drawable HISTOGRAM-VALUE 10 value)
+)
+
+(define (przem-traditional-photo image drawable crossing contrast-colors contrast balance-color)
+
+ (gimp-image-undo-group-start image)
+
+ (if (= crossing TRUE)
+ (cross drawable))
+ ;(if (= grain TRUE)
+ ; (gimp-noise-hurl drawable 1 0.02))
+ (if (= contrast-colors TRUE)
+ ; Zmniejsz kontrast i dodaj kolor
+ (gimp-brightness-contrast drawable 10 contrast)
+ (gimp-color-balance drawable FALSE 0 balance-color 0 10))
+
+ (gimp-image-undo-group-end image)
+ (gimp-displays-flush)
+)
+
+(script-fu-register "przem-traditional-photo"
+ _"Convert photographs to neotraditional"
+ _"Konwertuje na neotradycyjną fotografię"
+ "Przemyslaw R. Pietraszczyk"
+ "Public Domain"
+ "2025-02-15"
+ "RGB*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Drawable" 0
+ SF-TOGGLE "Crossing" FALSE
+ ;SF-TOGGLE "Grain" FALSE
+ SF-TOGGLE "Contrast and Color corection" TRUE
+ SF-ADJUSTMENT "Contrast" '(-30 -100 100 1 1 0 0)
+ SF-ADJUSTMENT "Balance Color" '(-5 -100 100 1 1 0 0)
+)
+
+(script-fu-menu-register "przem-traditional-photo"
+ "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/3.0/przem-add-background-under-text-v3.scm b/script-fu/3.0/przem-add-background-under-text-v3.scm
new file mode 100644
index 0000000..943e00c
--- /dev/null
+++ b/script-fu/3.0/przem-add-background-under-text-v3.scm
@@ -0,0 +1,96 @@
+; przem-add-background-under-text-v3 - Script-fu dodający podpis z tłem
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 06-02-2025
+; ver. 2.250215-1~alpha for Gimp 3.0
+
+(define (przem-add-background-under-text-v3 image drawable text font font-size fg-color bg-color background-transparency opacity)
+
+ (gimp-image-undo-group-start image)
+
+ (let* (
+ (image-width (car (gimp-image-get-width image)))
+ (image-height (car (gimp-image-get-height image)))
+ ;(text-extents (gimp-text-get-extents-fontname text font-size 0 font))
+ (text-extents (gimp-text-get-extents-font text font-size font))
+ (text-width (car text-extents))
+ (text-height (cadr text-extents))
+ (pos-x (- (- image-width text-width) 40))
+ (pos-y (- image-height text-height))
+ (bg-x-left (- pos-x 10))
+ (bg-x-right (+ text-width 10))
+ ;(text-layer (car (gimp-text-fontname image -1 0 0 text 0 TRUE font-size 0 font)))
+ (text-layer (car(gimp-text-font image -1 0 0 text 0 TRUE font-size font)))
+ (bg-layer (car (gimp-layer-new image "Background" bg-x-right text-height RGB-IMAGE 100 LAYER-MODE-NORMAL)))
+ ;(is-nocolorful (car (gimp-drawable-is-gray drawable))) ; czy obraz jest w odcieniach szarości
+ )
+
+ ; Ustawienie koloru tła
+ (gimp-context-set-background bg-color)
+ (gimp-context-set-foreground fg-color)
+
+ (gimp-drawable-fill bg-layer FILL-BACKGROUND)
+ (gimp-layer-set-opacity bg-layer opacity)
+
+ ; jeśli obraz jest szary to konwertuje go na RGB - tak na sztukę
+ ;(if (= is-nocolorful TRUE)
+ ; (gimp-image-convert-rgb image)
+ ;)
+ ; TODO
+ ; jeśli obraz jest szary to konwertuje go na RGB - w RC2 ten numer nie przedzie
+ ;(if (= type GRAY-IMAGE)
+ ; (gimp-image-convert-rgb image) )
+ ; lub lepiej ...
+ ;(if (> (car (gimp-drawable-type (vector-ref drawable 0))) 1 )
+ ; (gimp-image-convert-rgb image))
+
+ ; Dodanie warstwy tła pod tekstem
+ (gimp-image-insert-layer image bg-layer 0 -1)
+
+ ;(gimp-layer-translate bg-layer bg-x-left pos-y)
+ ;(gimp-selection-translate image bg-layer bg-x-left pos-y)
+ (gimp-layer-set-offsets bg-layer bg-x-left pos-y)
+ (if (= background-transparency TRUE)
+ (begin
+ (gimp-drawable-fill bg-layer FILL-TRANSPARENT)
+ )
+ (begin ; else
+ )
+ )
+
+ ; Ustawienie pozycji tekstu
+ (gimp-layer-set-offsets text-layer pos-x pos-y)
+
+ ; Przesuń warstwę tekstową na górę stosu warstw
+ (gimp-image-raise-item-to-top image text-layer)
+
+ ; Scalanie warstw
+ (gimp-image-merge-down image text-layer CLIP-TO-IMAGE)
+
+ ; Aktualizacja widoku
+ (gimp-displays-flush)
+
+ (gimp-image-undo-group-end image) ; Zakończ grupę operacji undo
+ )
+)
+
+(script-fu-register "przem-add-background-under-text-v3"
+ _"Add Background Under Text"
+ _"Dodaje kolorowe tło pod tekstem z możliwością wyboru czcionki i rozmiaru."
+ "Przemysław R. Pietraszczyk"
+ "Public Domain"
+ "2025-02-06"
+ "RGB* GRAY*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Drawable" 0
+ SF-STRING "Text" "Doda Elektroda"
+ SF-FONT "Font" "Monospace"
+ SF-ADJUSTMENT "Font Size" (list 50 1 1000 1 10 0 1)
+ SF-COLOR "Foreground Color" (list 100 100 100)
+ SF-COLOR "Background Color" (list 255 215 0)
+ SF-TOGGLE "Background Transparency" FALSE
+ SF-ADJUSTMENT "Transparency Value" (list 100 1 100 1 10 0 1)
+)
+
+(script-fu-menu-register "przem-add-background-under-text-v3"
+ "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/3.0/przem-apply-sepia-v3.scm b/script-fu/3.0/przem-apply-sepia-v3.scm
new file mode 100644
index 0000000..aa495b7
--- /dev/null
+++ b/script-fu/3.0/przem-apply-sepia-v3.scm
@@ -0,0 +1,154 @@
+; przem-apply-sepia-v3 - Script-fu dodający prawdziwą sepie do zdjęcia
+; author: PRP
+; licencja: GPL v3
+; Gdańsk - 07-02-2025
+; ver. 2.2502022-0~beta for GIMP 3
+;
+; This program is free software: you can redistribute it and/or modify
+; it under the terms of the GNU General Public License as published by
+; the Free Software Foundation; either version 3 of the License, or
+; (at your option) any later version.
+;
+; This program is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+; GNU General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program. If not, see <https://www.gnu.org/licenses/>.
+;
+
+(define (przem-apply-sepia-v3 image drawable value-slider-sepia shadow-sepia gradient-reverse in-sepia 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 layer)))
+ (center-x (/ image-width 2))
+ (center-y (/ image-height 2))
+ (radius (sqrt (+ (* center-x center-x) (* center-y center-y))))
+ (the-layer 0)
+ )
+
+ (gimp-image-undo-group-start image)
+ ;(gimp-image-undo-disable image)
+
+ ; TODO - z kodu old-photo wynika że nie trzeba konwertować na RGB - mimo tego kod nie dziala jak należy
+ ; jeśli obraz jest szary to konwertuje go na RGB - w RC2 ten numer nie przedzie
+ ;;(if (= type GRAY-IMAGE)
+ ; (gimp-image-convert-rgb image) )
+ ; lub ...
+ ;(if (> (car (gimp-drawable-type (vector-ref drawable 0))) 1 )
+ ; (gimp-image-convert-rgb image))
+
+ (gimp-selection-all image)
+ (set! the-layer (car (gimp-image-flatten image)))
+
+ ; Konwersja obrazu do skali szarości
+ ;(if (= type RGB-IMAGE)
+ ;(gimp-drawable-desaturate the-layer DESATURATE-LIGHTNESS)
+ ;)
+
+ (if (= in-sepia TRUE)
+ (begin (gimp-drawable-desaturate the-layer DESATURATE-LIGHTNESS)
+ (gimp-drawable-brightness-contrast the-layer -0.078125 -0.15625)
+ (gimp-drawable-color-balance the-layer TRANSFER-SHADOWS TRUE 30 0 -30)
+ )
+ )
+
+ (let (
+ (sepia-layer (car (gimp-layer-new image "Sepia" image-width image-height RGB-IMAGE 100 LAYER-MODE-NORMAL)))
+ )
+
+ (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 8)
+
+ (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)
+ (gimp-context-set-gradient-fg-bg-rgb)
+ (if (= gradient-shape 1)
+ (begin
+ (gimp-context-set-gradient-reverse gradient-reverse)
+ (gimp-drawable-edit-gradient-fill sepia-layer
+ GRADIENT-LINEAR (- 100 shadow-sepia)
+ FALSE 1 0
+ TRUE
+ 0 0 image-width image-height)
+ ) )
+ (if (= gradient-shape 2)
+ (begin
+ (gimp-context-set-gradient-reverse gradient-reverse)
+ (gimp-drawable-edit-gradient-fill sepia-layer
+ GRADIENT-SHAPEBURST-DIMPLED (- 100 shadow-sepia)
+ FALSE 1 0
+ TRUE
+ 0 0 center-x center-y)
+ )
+ )
+ (if (= gradient-shape 0)
+ (begin
+ (gimp-context-set-gradient-reverse gradient-reverse)
+ (gimp-drawable-edit-gradient-fill sepia-layer
+ GRADIENT-BILINEAR (- 100 shadow-sepia)
+ FALSE 1 0
+ TRUE
+ (/ (+ (* 2 center-x) center-y -1) 2) 0
+ 0 0)
+ )
+ )
+
+ (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)
+ ) ; let
+ (gimp-selection-none 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"
+ "GPL v3"
+ "2025-02-07"
+ "RGB* GRAY*"
+ SF-ONE-OR-MORE-DRAWABLE
+ SF-ADJUSTMENT _"Sepia intensity" '(50 0 100 1 10 0 0) ; Suwak poziomy
+ SF-ADJUSTMENT _"Shadow Sepia" '(30 0 100 1 10 0 0) ; Suwak poziomy
+ SF-TOGGLE _"Gradient reverse" FALSE
+ SF-TOGGLE _"Sepia" TRUE
+ SF-OPTION _"Shape" '("Bilinear" "Linear" "Shapeburst")
+
+
+
+)
+
+(script-fu-menu-register "przem-apply-sepia-v3"
+ "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/3.0/przem-soft-focus-noninteractive-v3.scm b/script-fu/3.0/przem-soft-focus-noninteractive-v3.scm
new file mode 100644
index 0000000..98d5ed0
--- /dev/null
+++ b/script-fu/3.0/przem-soft-focus-noninteractive-v3.scm
@@ -0,0 +1,54 @@
+; przem-soft-focus-noninteractive-v3.sh - Filtr dodający miękki focus
+; 2025-06-19 - PRP
+; Public Domain
+; ver. 2025-06-19
+
+;(define (przem-soft-focus-noninteractive-v3 basout savename)
+(define (przem-soft-focus-noninteractive-v3 ask-fileglob)
+
+ (let* (
+ (thefiles (cadr (file-glob ask-fileglob 0)))
+ (baseout (car thefiles))
+ (savename (cad thefiles))
+ (image (car (gimp-file-load RUN-NONINTERACTIVE baseout savename)))
+ (selected-layers-array (car (gimp-image-get-selected-layers image)))
+ (num-selected-layers vector-length selected-layers-array)
+ ;(width (car (gimp-image-get-width image)))
+ ;(height (car (gimp-image-get-height image)))
+ (active-layer 0)
+ (blur-radius 100)
+ (opacity 100)
+ )
+
+ ;(gimp-message (string-append \"baseout: \" (number->string baseout)))
+ ;(gimp-message (string-append \"savename: \" (number->string savename)))
+
+ (set! active-layer (vector-ref selected-layers-array (- num-selected-layers 1)))
+
+
+ ; Rozmycie Gaussa
+ ;(plug-in-gauss RUN-NONINTERACTIVE image active-layer blur-radius blur-radius 0)
+
+ (gimp-drawable-merge-new-filter active-layer "gegl:gaussian-blur" RUN-NONINTERACTIVE LAYER-MODE-REPLACE 1.0 "std-dev-x" blur-radius "std-dev-y" 0.0 "filter" "auto")
+
+ ; Zmień tryb mieszania na Overlay lub Screen
+ (gimp-layer-set-mode active-layer OVERLAY-MODE)
+
+ ; Dostosuj przezroczystość
+ (gimp-layer-set-opacity active-layer opacity)
+ ;(gimp-image-merge-down image active-layer CLIP-TO-IMAGE)
+
+ ;(let* (
+ ;(merged-layer (car (gimp-image-merge-visible-layers image EXPAND-AS-NECESSARY)))
+ ;(merged-layer (car (gimp-image-merge-down image active-layer CLIP-TO-IMAGE)))
+ ;)
+ ;(file-tiff-save RUN-NONINTERACTIVE image active-layer savename baseout 1) ; 1 - lZW
+ (gimp-file-save RUN-NONINTERACTIVE image active-layer savename baseout)
+
+ (gimp-image-undo-enable image)
+ ;)
+
+
+ (gimp-image-delete image)
+
+))
diff --git a/script-fu/3.0/przem-traditional-photo-v3.scm b/script-fu/3.0/przem-traditional-photo-v3.scm
new file mode 100644
index 0000000..ee9b727
--- /dev/null
+++ b/script-fu/3.0/przem-traditional-photo-v3.scm
@@ -0,0 +1,69 @@
+; przem-traditional-photo-v3 - luźne nawiązanie do chemii tradycyjnej fototgrafii
+; author: PRP
+; licencja: Public Domain
+; Gdańsk - 15-02-2025
+; ver. 2.250217-0~beta for GIMP 3
+
+
+(define (przem-traditional-photo-v3 image drawable crossing contrast-colors balance-color)
+ (let (
+ ;(the-image (car (gimp-image-duplicate image)) image)
+ (the-layer 0)
+ (image-width (car (gimp-image-get-width image)))
+ (image-height (car (gimp-image-get-height image)))
+ )
+ (gimp-image-undo-group-start image)
+
+ ;(gimp-selection-all the-image)
+
+ (set! the-layer (car (gimp-image-flatten image)))
+
+ (if (= crossing TRUE)
+ (cross image image-width image-height))
+ ;(if (= grain TRUE)
+ ; (gimp-noise-hurl drawable 1 0.02))
+ (if (= contrast-colors TRUE)
+ ; Zmniejsz kontrast i dodaj kolor
+ (gimp-drawable-brightness-contrast the-layer -0.078125 -0.15625)
+ (gimp-drawable-color-balance the-layer TRANSFER-SHADOWS TRUE balance-color 0 -30))
+
+ ;(gimp-selection-none the-tmage)
+
+
+ (gimp-image-undo-group-end image)
+ (gimp-displays-flush)
+) )
+
+(define (cross image width height)
+ ; crossing photo
+ ;(gimp-drawable-curves-spline layer1 HISTOGRAM-VALUE (spline-chrome-it))
+ (let* ((layer (gimp-layer-new image "Cross" width height RGB-IMAGE 100 LAYER-MODE-NORMAL))
+
+ (set! layer (gimp-image-merge-visible-layers image CLIP-TO-IMAGE))
+
+ (gimp-drawable-curves-spline layer HISTOGRAM-VALUE 10 #(0 0 64 90 128 160 192 230 255 255))
+ (gimp-drawable-curves-spline layer HISTOGRAM-RED 10 #(0 0 64 50 128 180 192 230 255 255))
+ (gimp-drawable-curves-spline layer HISTOGRAM-GREEN 10 #(0 0 64 80 128 120 192 200 255 255))
+ (gimp-drawable-curves-spline layer HISTOGRAM-BLUE 10 #(0 0 64 30 128 150 192 220 255 255))
+ ; lub
+ ;(define value #(0 0 64 90 128 160 192 230 255 255))
+ ;(gimp-drawable-curves-spline drawable HISTOGRAM-VALUE 10 value)
+ ))
+)
+
+(script-fu-register-filter "przem-traditional-photo-v3"
+ _"_Convert photographs to neotraditional"
+ _"Konwertuje na neotradycyjną fotografię"
+ "Przemyslaw R. Pietraszczyk"
+ "Public Domain"
+ "2025-02-15"
+ "RGB*"
+ SF-ONE-OR-MORE-DRAWABLE
+ SF-TOGGLE _"Crossing" FALSE
+ SF-TOGGLE _"Contrast and Color corection" TRUE
+ ;SF-ADJUSTMENT _"Contrast" (list -0.15625 -1 1 0.00010 0.00100 0 0) ; źle działa dodanie jako parametru
+ SF-ADJUSTMENT _"Balance Color" (list -30 -100 100 1 1 0 0)
+)
+
+(script-fu-menu-register "przem-traditional-photo-v3"
+ "<Image>/Filters/PIETRASZCZYK/")
diff --git a/script-fu/changelog.md b/script-fu/changelog.md
new file mode 100644
index 0000000..bca2d9e
--- /dev/null
+++ b/script-fu/changelog.md
@@ -0,0 +1,129 @@
+# [2.250622-0] przem-prossian-blue-effect.scm
+* Dodane filtra imitującego "pruski błękit"
+
+# [2.250619-3] przem-soft-focus-noninteractive-v3.scm
+* Dodanie filtra wywolywanego z linii poleceń - nie uruchamia się
+
+# [2.250618-0] przem-cyanotype-gum-effect.scm
+* Dodanie efektu zastosowania cyjanotypi wraz z gumą dwuchromianową\
+
+# [2.250616-0] przem-soft-focus-noninteractive.scm
+* Dodanie filtra wywolywanego z linii poleceń
+
+# [2.250615-0] przem-soft-focus.scm
+* Dodanie filtra "miękkiego focusa' - w nawiązaniu do piktorializmu
+
+# [2.250610-4] przem-expired-negative.scm
+* Konwersja z RGB na colorspace Gray
+
+# [2.250610-3] przem-expired-negative.scm
+* Dzielnik mgły, zwiększony do 0.50
+
+# [2.250610-2] przem-expired-negative.scm
+* Dodanie suwaka density
+
+# [2.250610-1] przem-expired-negative.scm
+* Przy odwolywaniu się do wspólnej funkcji gradientu - filtr dzialą nieprawidlowo
+* Możliwa zmiana odcieniu gradientu (background)
+
+# [2.250608-3] przem-expired-negative.scm
+* Dodaje efekt prawidłowo, zarówno na dole jak i na górze
+
+# [2.250608-2] przem-expired-negative.scm
+* Dodaje efekt expire ORWO do poziomego zdjęcia, jednak nie równomiernie
+
+# [2.250525-1] przem-expired-negative.scm
+* Rozróżnia rodzaj obrazu. Jednak prawidłowo przetwarza jedynie póki co portrety
+
+# [2.250522-4] przem-expired-negative.scm
+* Mgła jest prawidłowo rozmieszczana po przegach
+
+# [2.250522-0] przem-expired-negative.scm
+* Filtr imitujący przetermonowany negatyw ORWO - Inicjacja
+
+# [2.250225-2] przem-apply-waves-effect.scm
+* Filtr, działać, działa. Jednak wynik, trudno uzanć za falowanie.
+
+# [2.250225-1] przem-apply-waves-effect.scm
+* Pierwszy mały sukces
+
+# [2.250225-0] przem-apply-waves-effect.scm
+* Próba skopiowania barwy pixela
+
+# [2.250224-0] przem-apply-waves-effect.scm
+* Nowa propozycja z sincosinus
+
+# [2.250223-3] przem-apply-cents-effect.scm
+* Drobne literówki
+
+# [2.250223-2] przem-apply-cents-effect.scm
+* Dodanie nowego filtra - centkowanie
+
+# [2.250223-0] przem-apply-waves-effect.scm
+* Dodanie nowego filtra
+
+# [2.250222-0] przem-apply-sepia-v3.scm
+* Korekta w SF_OPTION
+
+# [2.250221-0] przem-apply-sepia-v3.scm
+* Dodanie potrójnego pola wyboru dla rodzaju gradientu.
+
+# [2.25021=20-0] przem-apply-sepia-v3.scm
+* Przeniesienie 'gimp-layer-new' do wewnątrz skryptu - desaturate dalej zwraca błąd przy zdjęciach monochromatycznych
+
+# [2.250219-1] przem-apply-sepia-v3.scm
+* Dodanie 'gimp-image-flatten', bez efektu
+
+# [2.250219-0] przem-apply-sepia-v3.scm
+* Dodanie suwaka z shadow-sepia użytego jako argument 'gimp-drawable-edit-gradient-fill'
+
+# [2.250217-0] przem-traditional-photo.scm && przem-traditional-photo-v3.scm
+* Zmniejszyłem skrajne parametry do -100 i 100 dla skali kontrastu i balansu koloru
+
+# [2.250216-3] przem-traditional-photo-v3.scm
+* Dodanie krosowania. Jednak można odnieść wrażenie że zmiana balans koloru nie daje żądnego efektu
+
+# [2.250216-2] przem-traditional-photo-v3.scm
+* Rezygnacja ze suwaka kontrastu na rzecz zmiennej ( -0.15625 )- możliwe że wersja dla 2.10 wykrzącza się przez zbyt wysoki argument dla kontrastu
+
+# [2.250216-1] przem-traditional-photo.scm
+* Kosmetyka danych suwaka
+
+# [2.250216-0] przem-traditional-photo.scm
+* Dodanie suwaka ze zmianą kontrastu oraz suwaka z balansem koloru
+
+# [2.250215-2] przem-traditional-photo.scm
+* dodanie nowego skryptu korsującego zdjęcie
+
+# [2.250215-1] przem-apply-sepia.scm - przem-add-background-under-text.scm
+* Oba skrypty pracują nieprawidłowo z obrazem w odcieniach szarości
+
+# [2.250215-0] przem-apply-sepia.scm
+* BUG ? Nie potrafi przekonwertować obrazka GRAY na RGB - w przypadku szarego obrazu nakłąda jedynie gradient, bez sepii
+
+# [1.250214-0] przem-apply-sepia.scm
+* Częściowe dostosowanie wtyczki do nowego API z RC2 - póki co przetwarza jedynie kolorowe obrazy
+
+# [1.250213-0] przem-apply-sepia.scm
+* Dodałem lepszy gradient, revers gradientu oraz kształt okręgu
+
+# [1.250212-0] przem-apply-sepia.scm
+* Opruje już jedynie na dwóch odcieniach sepii
+
+# [1.250212-0] przem-add-background-under-text.scm
+* Możliwość zmiany koloru tła i czcionki wewnątrz wtyczki, nie można zmienić czcionki. Potrafi się wykrzaczyć
+
+# [1.250910-0~alpha]
+* Wersja alpha 'przem-add-background-under-text.scm', pokazuje samo tło i w dodatku w złym miejscu
+
+# [1.250910-2]
+* Wersja stabilna 'przem-apply-sepia.scm' dla 3.0
+
+# [1.250209-1]
+* Wersja stabilna 'przem-add-background-under-text.scm' dla 2.10
+
+# [0.250207-0]
+* Incjacja skryptu 'przem-apply-sepia.scm'
+
+# [0.250206-0]
+* Incjacja skryptu 'przem-add-background-under-text.scm'