(define (script-fu-deblur-wallace image layer 
            blur-radius
			layer-mode
			opacity
         )
	
		(let* 
		   (
		   (width (car (gimp-image-width image)))
		   (height (car (gimp-image-height image)))
		   (active-vectors 0)
		   (dup-layer 0)
		   (new-from-visible-layer 0)
		   )
			;(gimp-image-undo-disable image); DN = NO UNDO
			(gimp-context-push)
			(gimp-image-undo-group-start image)                   ;undo-group in one step
			
			;duplicate layer
			(set! dup-layer (car (gimp-layer-copy layer TRUE)))
			(gimp-image-insert-layer image dup-layer 0 0)
			
			;gausian blur
			(plug-in-gauss 1 image dup-layer blur-radius blur-radius 1)
			
			;invert
			(gimp-invert dup-layer)
			
			;set mode to grain merge
			(gimp-layer-set-mode dup-layer GRAIN-MERGE-MODE)
			
			;new from visible
			(set! new-from-visible-layer (car (gimp-layer-new-from-visible image image "new-from-visible")))
			(gimp-image-insert-layer image new-from-visible-layer 0 0)
			;remove dup-layer
			(gimp-image-remove-layer image dup-layer)
			
			;set mode
			(gimp-layer-set-mode new-from-visible-layer layer-mode)
			
			;gimp-layer-set-opacity
			(gimp-layer-set-opacity new-from-visible-layer opacity)
			
		   ;(gimp-image-undo-enable image) ;DN = NO UNDO
			(gimp-image-undo-group-end image)                     ;undo group in one step
			(gimp-context-pop)
			(gimp-displays-flush)
	    )
	
	
    
) ;end of define
(script-fu-register
  "script-fu-deblur-wallace"         ;function name
  "<Image>/Filters/Enhance/Deblur (by Wallace)..."    ;menu register
  "Apply Curve from Curve File"       ;description
  "Tin Tran"                          ;author name
  "copyright info and description"         ;copyright info or description
  "2016"                          ;date
  "RGB*, GRAY*"                        ;mode
  SF-IMAGE      "Image" 0                   
  SF-DRAWABLE   "Layer" 0
  SF-ADJUSTMENT "Blur Radius" '(15 1 500 1 10 0 0)
  
  SF-OPTION     "Set Layer Mode" '(
									"NORMAL-MODE"
									"DISSOLVE-MODE"
									"BEHIND-MODE"
									"MULTIPLY-MODE"
									"SCREEN-MODE"
									"OVERLAY-MODE"
									"DIFFERENCE-MODE"
									"ADDITION-MODE"
									"SUBTRACT-MODE"
									"DARKEN-ONLY-MODE"
									"LIGHTEN-ONLY-MODE"
									"HUE-MODE"
									"SATURATION-MODE"
									"COLOR-MODE"
									"VALUE-MODE"
									"DIVIDE-MODE"
									"DODGE-MODE"
									"BURN-MODE"
									"HARDLIGHT-MODE"
									"SOFTLIGHT-MODE"
									"GRAIN-EXTRACT-MODE"
									"GRAIN-MERGE-MODE"
									"COLOR-ERASE-MODE"
									"ERASE-MODE"
									"REPLACE-MODE"
									"ANTI-ERASE-MODE")
  SF-ADJUSTMENT "Opacity" '(50 0 100 1 10 0 0)
)
