From 504e7c84c63d1dcb7ffbddd404863a90c1dd3616 Mon Sep 17 00:00:00 2001 From: Adrian Likins Date: Thu, 9 Apr 1998 12:32:04 +0000 Subject: [PATCH] oops, forgot to cvs add this one before. -adrian --- plug-ins/script-fu/scripts/unsharp-mask.scm | 79 +++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 plug-ins/script-fu/scripts/unsharp-mask.scm diff --git a/plug-ins/script-fu/scripts/unsharp-mask.scm b/plug-ins/script-fu/scripts/unsharp-mask.scm new file mode 100644 index 0000000000..128f8bb45b --- /dev/null +++ b/plug-ins/script-fu/scripts/unsharp-mask.scm @@ -0,0 +1,79 @@ +;;; unsharp-mask.scm +;;; Time-stamp: <1997/10/30 23:27:20 narazaki@InetQ.or.jp> +;;; Author: Narazaki Shuji +;;; Version 0.7 + +;;; Code: + +(if (not (symbol-bound? 'script-fu-unsharp-mask-mask-size (the-environment))) + (define script-fu-unsharp-mask-mask-size 5)) + +(define (script-fu-unsharp-mask img drw mask-size) + (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 "Original" 100 NORMAL))) + (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 img drw) + (gimp-image-disable-undo new-image) + (gimp-floating-sel-anchor + (car (gimp-edit-paste new-image original-layer FALSE))) + (gimp-image-add-layer new-image original-layer 0) + (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-layer-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) + (set! darker-layer + (car (gimp-image-merge-visible-layers new-image CLIP-TO-IMAGE))) + (gimp-layer-set-name darker-layer "darker mask") + (gimp-layer-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) + (set! lighter-layer + (car (gimp-image-merge-visible-layers new-image CLIP-TO-IMAGE))) + (gimp-layer-set-name lighter-layer "lighter mask") + ;; combine them + (gimp-layer-set-visible original-layer TRUE) + (gimp-layer-set-mode darker-layer SUBTRACT) + (gimp-layer-set-opacity darker-layer 50.0) + (gimp-layer-set-visible darker-layer TRUE) + (gimp-layer-set-mode lighter-layer ADDITION) + (gimp-layer-set-opacity lighter-layer 50.0) + (gimp-layer-set-visible lighter-layer TRUE) + (gimp-image-enable-undo new-image) + (set! script-fu-unsharp-mask-mask-size mask-size) + (gimp-displays-flush))) + +(script-fu-register + "script-fu-unsharp-mask" + "/Script-Fu/Alchemy/Unsharp Mask" + "Make a sharp image of IMAGE's DRAWABLE by applying unsharp mask method" + "Shuji Narazaki " + "Shuji Narazaki" + "1997" + "RGB*, GRAY*" + SF-IMAGE "Image" 0 + SF-DRAWABLE "Drawable to apply" 0 + SF-VALUE "Mask size" (number->string script-fu-unsharp-mask-mask-size) +) + +;;; unsharp-mask.scm ends here