Skip to content

Commit 25bc17a

Browse files
committed
0.20250518: scheme: add RIS undefect
1 parent 5925ff7 commit 25bc17a

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

scheme/ris-undefect.scm

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
;
2+
; (gimp-layer-set-mode layer-base SCREEN-MODE)
3+
; NORMAL-MODE 0
4+
; DISSOLVE-MODE 1
5+
; BEHIND-MODE 2
6+
; MULTIPLY-MODE 3
7+
; SCREEN-MODE 4
8+
; OVERLAY-MODE 5
9+
; DIFFERENCE 6
10+
; ADDITION-MODE 7
11+
; SUBTRACT-MODE 8
12+
; DARKEN-ONLY-MODE 9
13+
; LIGHTEN-ONLY-MODE10
14+
; HUE-MODE 11
15+
; SATURATION-MODE 12
16+
; COLOR-MODE 13
17+
; VALUE-MODE 14
18+
; DIVIDE-MODE 15
19+
; DODGE-MODE 16
20+
; BURN-MODE 17
21+
; HARDLIGHT-MODE 18
22+
; SOFTLIGHT-MODE 19
23+
; GRAIN-EXTRACT-MODE 20
24+
; GRAIN-MERGE-MODE 21
25+
; COLOR-ERASE-MODE 22
26+
27+
(define (ris-undefect image
28+
drawable
29+
factor
30+
method)
31+
(let*
32+
(
33+
(drawable (car (gimp-image-active-drawable image)))
34+
(oldwidth (car (gimp-image-width image)))
35+
(oldheight (car (gimp-image-height image)))
36+
(newwidth (* oldwidth factor))
37+
(newheight (* oldheight factor))
38+
(layer-base (car (gimp-layer-copy drawable TRUE)))
39+
(layer-defect (car (gimp-layer-copy drawable TRUE)))
40+
(layer-copy (car (gimp-layer-copy drawable TRUE)))
41+
)
42+
43+
(gimp-image-undo-group-start image)
44+
45+
(gimp-context-set-interpolation method)
46+
47+
(set! layer-base (car (gimp-layer-new-from-visible image image "visible")))
48+
(set! layer-defect (car (gimp-layer-copy layer-base TRUE)))
49+
(gimp-image-insert-layer image layer-base 0 -1)
50+
(gimp-image-insert-layer image layer-defect 0 -1)
51+
(gimp-layer-scale layer-defect newwidth newheight TRUE)
52+
(gimp-layer-scale layer-defect oldwidth oldheight TRUE)
53+
54+
(set! layer-copy (car (gimp-layer-copy layer-base TRUE)))
55+
(gimp-image-insert-layer image layer-copy 0 -1)
56+
(gimp-layer-set-mode layer-copy GRAIN-EXTRACT-MODE)
57+
(set! layer-defect (car (gimp-image-merge-down image layer-copy EXPAND-AS-NECESSARY)))
58+
(gimp-layer-set-mode layer-defect GRAIN-EXTRACT-MODE)
59+
(set! layer-base (car (gimp-image-merge-down image layer-defect EXPAND-AS-NECESSARY)))
60+
(gimp-item-set-name layer-base "RISundefect")
61+
62+
(gimp-displays-flush)
63+
64+
(gimp-image-undo-group-end image)
65+
)
66+
)
67+
68+
(script-fu-register "ris-undefect"
69+
"_RIS undefect"
70+
"Undefect based Resize used RIS (Reverse Interpolate Scale)"
71+
"zvezdochiot https://github.com/zvezdochiot"
72+
"This is free and unencumbered software released into the public domain."
73+
"2025-05-18"
74+
"*"
75+
SF-IMAGE "Image" 0
76+
SF-DRAWABLE "Drawable" 0
77+
SF-VALUE "Factor" "0.5"
78+
SF-ENUM "Method" '("InterpolationType" "cubic" "none" "linear" "cubic" "nohalo" "lohalo")
79+
)
80+
81+
(script-fu-menu-register "ris-undefect" "<Image>/Image/Transform")

0 commit comments

Comments
 (0)