File: unsharp-mask.scm

package info (click to toggle)
gimp 2.2.13-1etch4
  • links: PTS
  • area: main
  • in suites: etch
  • size: 94,832 kB
  • ctags: 47,113
  • sloc: ansic: 524,858; xml: 36,798; lisp: 9,870; sh: 9,409; makefile: 7,923; python: 2,674; perl: 2,589; yacc: 520; lex: 334
file content (83 lines) | stat: -rw-r--r-- 3,248 bytes parent folder | download | duplicates (3)
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
;;; unsharp-mask.scm
;;; Time-stamp: <1998/11/17 13:18:39 narazaki@gimp.org>
;;; Author: Narazaki Shuji <narazaki@gimp.org>
;;; Version 0.8

(define (script-fu-unsharp-mask img drw mask-size mask-opacity)
  (let* ((drawable-width (car (gimp-drawable-width drw)))
	 (drawable-height (car (gimp-drawable-height drw)))
	 (new-image (car (gimp-image-new drawable-width drawable-height RGB)))
	 (original-layer (car (gimp-layer-new new-image
					      drawable-width drawable-height
					      RGB-IMAGE "Original"
					      100 NORMAL-MODE)))
	 (original-layer-for-darker #f)
	 (original-layer-for-lighter #f)
	 (blured-layer-for-darker #f)
	 (blured-layer-for-lighter #f)
	 (darker-layer #f)
	 (lighter-layer #f))

    (gimp-selection-all img)
    (gimp-edit-copy drw)

    (gimp-image-undo-disable new-image)

    (gimp-image-add-layer new-image original-layer 0)
    (gimp-floating-sel-anchor
     (car (gimp-edit-paste original-layer FALSE)))

    (set! original-layer-for-darker (car (gimp-layer-copy original-layer TRUE)))
    (set! original-layer-for-lighter (car (gimp-layer-copy original-layer TRUE)))
    (set! blured-layer-for-darker (car (gimp-layer-copy original-layer TRUE)))
    (gimp-drawable-set-visible original-layer FALSE)
    (gimp-display-new new-image)

    ;; make darker mask
    (gimp-image-add-layer new-image blured-layer-for-darker -1)
    (plug-in-gauss-iir TRUE new-image blured-layer-for-darker mask-size
		       TRUE TRUE)
    (set! blured-layer-for-lighter
	  (car (gimp-layer-copy blured-layer-for-darker TRUE)))
    (gimp-image-add-layer new-image original-layer-for-darker -1)
    (gimp-layer-set-mode original-layer-for-darker SUBTRACT-MODE)
    (set! darker-layer
	  (car (gimp-image-merge-visible-layers new-image CLIP-TO-IMAGE)))
    (gimp-drawable-set-name darker-layer "darker mask")
    (gimp-drawable-set-visible darker-layer FALSE)

    ;; make lighter mask
    (gimp-image-add-layer new-image original-layer-for-lighter -1)
    (gimp-image-add-layer new-image blured-layer-for-lighter -1)
    (gimp-layer-set-mode blured-layer-for-lighter SUBTRACT-MODE)
    (set! lighter-layer
	  (car (gimp-image-merge-visible-layers new-image CLIP-TO-IMAGE)))
    (gimp-drawable-set-name lighter-layer "lighter mask")

    ;; combine them
    (gimp-drawable-set-visible original-layer TRUE)
    (gimp-layer-set-mode darker-layer SUBTRACT-MODE)
    (gimp-layer-set-opacity darker-layer mask-opacity)
    (gimp-drawable-set-visible darker-layer TRUE)
    (gimp-layer-set-mode lighter-layer ADDITION-MODE)
    (gimp-layer-set-opacity lighter-layer mask-opacity)
    (gimp-drawable-set-visible lighter-layer TRUE)

    (gimp-image-undo-enable new-image)
    (gimp-displays-flush)))


(script-fu-register "script-fu-unsharp-mask"
		    _"_Unsharp Mask..."
		    "Make a sharp image of IMAGE's DRAWABLE by applying unsharp mask method"
		    "Shuji Narazaki <narazaki@gimp.org>"
		    "Shuji Narazaki"
		    "1997,1998"
		    ""
		    SF-IMAGE       "Image"             0
		    SF-DRAWABLE    "Drawable to apply" 0
		    SF-ADJUSTMENT _"Mask size"         '(5 1 100 1 1 0 1)
		    SF-ADJUSTMENT _"Mask opacity"      '(50 0 100 1 1 0 1))

(script-fu-menu-register "script-fu-unsharp-mask"
			 _"<Image>/Script-Fu/Alchemy")