(define (script-fu-zoom-animate simage slayer 
         )
	
		(let* 
		   (
		   (image-width 0)
		   (image-height 0)
		   (image)
		   (layer)
		   (layer1)
		   (layer2)
		   (layer3)
		    )
		  
		  
			
			(set! image-width (car (gimp-image-width simage)))
			(set! image-height (car (gimp-image-height simage)))

			;creates new image
			(set! image (car (gimp-image-new image-width image-height RGB)))
			
			;first layer
			(set! layer1 (car (gimp-layer-copy slayer TRUE)))
			(gimp-image-insert-layer simage layer1 0 0)	
			
			(gimp-layer-scale layer1 (* image-width  (pow 1.05 1))
			                         (* image-height (pow 1.05 1))
									  TRUE)
            (gimp-layer-set-opacity layer1 36)
			
			;second layer
			(set! layer2 (car (gimp-layer-copy slayer TRUE)))
			(gimp-image-insert-layer simage layer2 0 0)	
			
			(gimp-layer-scale layer2 (* image-width  (pow 1.05 5))
			                         (* image-height (pow 1.05 5))
									  TRUE)
            (gimp-layer-set-opacity layer2 24)
			
			;third layer
			(set! layer3 (car (gimp-layer-copy slayer TRUE)))
			(gimp-image-insert-layer simage layer3 0 0)	
			
			(gimp-layer-scale layer3 (* image-width  (pow 1.05 9))
			                         (* image-height (pow 1.05 9))
									  TRUE)
            (gimp-layer-set-opacity layer3 12)
			
            ;creates 1st frame from visible	
		    (set! layer (car (gimp-layer-new-from-visible simage image "frame 1")))
			(gimp-image-insert-layer image layer 0 0)	
		    ;#############################################################
		    ;first layer
			(gimp-layer-scale layer1 (* image-width  (pow 1.05 2))
			                         (* image-height (pow 1.05 2))
									  TRUE)
            (gimp-layer-set-opacity layer1 33)
			
			;second layer
			(gimp-layer-scale layer2 (* image-width  (pow 1.05 6))
			                         (* image-height (pow 1.05 6))
									  TRUE)
            (gimp-layer-set-opacity layer2 21)
			
			;third layer
			(gimp-layer-scale layer3 (* image-width  (pow 1.05 10))
			                         (* image-height (pow 1.05 10))
									  TRUE)
            (gimp-layer-set-opacity layer3 9)
		    ;creates 2nd frame from visible	
		    (set! layer (car (gimp-layer-new-from-visible simage image "frame 2")))
			(gimp-image-insert-layer image layer 0 0)	
		    ;#############################################################
		    ;first layer
			(gimp-layer-scale layer1 (* image-width  (pow 1.05 3))
			                         (* image-height (pow 1.05 3))
									  TRUE)
            (gimp-layer-set-opacity layer1 30)
			
			;second layer
			(gimp-layer-scale layer2 (* image-width  (pow 1.05 7))
			                         (* image-height (pow 1.05 7))
									  TRUE)
            (gimp-layer-set-opacity layer2 18)
			
			;third layer
			(gimp-layer-scale layer3 (* image-width  (pow 1.05 11))
			                         (* image-height (pow 1.05 11))
									  TRUE)
            (gimp-layer-set-opacity layer3 6)
		    ;creates 3nd frame from visible	
		    (set! layer (car (gimp-layer-new-from-visible simage image "frame 3")))
			(gimp-image-insert-layer image layer 0 0)	
		   ;#############################################################
		    ;first layer
			(gimp-layer-scale layer1 (* image-width  (pow 1.05 4))
			                         (* image-height (pow 1.05 4))
									  TRUE)
            (gimp-layer-set-opacity layer1 27)
			
			;second layer
			(gimp-layer-scale layer2 (* image-width  (pow 1.05 8))
			                         (* image-height (pow 1.05 8))
									  TRUE)
            (gimp-layer-set-opacity layer2 15)
			
			;third layer
			(gimp-layer-scale layer3 (* image-width  (pow 1.05 12))
			                         (* image-height (pow 1.05 12))
									  TRUE)
            (gimp-layer-set-opacity layer3 3)
		    ;creates 3nd frame from visible	
		    (set! layer (car (gimp-layer-new-from-visible simage image "frame 4")))
			(gimp-image-insert-layer image layer 0 0)	
			
			(gimp-display-new image)
			(gimp-displays-flush)
	    )
	
	
    
) ;end of define

(script-fu-register
  "script-fu-zoom-animate"         ;function name
  "<Image>/Script-Fu/Zoom Animate"    ;menu register
  "Zooming Animation"       ;description
  "Tin Tran"                          ;author name
  "copyright info and description"         ;copyright info or description
  "2015"                          ;date
  "RGB*, GRAY*"                        ;mode
  SF-IMAGE      "Image" 0                   
  SF-DRAWABLE   "Layer" 0
  ;SF-ADJUSTMENT "Number of colors" '(5 2 255 1 10 0 0)
  ;SF-OPTION     "Colorize with" '("Random colors" "RGB variations")
  ;SF-TOGGLE     "Flatten newly created image" TRUE
  
)