(define (script-fu-reflections-mk1 image layer outer-loop)

	(let* (
		(layer-width (car (gimp-drawable-width layer)))
		(layer-height (car (gimp-drawable-height layer)))
		(inner-loop 0)
		(half-width 0)
		(half-height 0)
	         )

	        (gimp-image-undo-group-start image)

		(set! layer-width (* (floor (/ layer-width 2)) 2))
		(gimp-image-crop image layer-width layer-height 0 0)
		(set! layer-height (* (floor (/ layer-height 2)) 2))
		(gimp-image-crop image layer-width layer-height 0 0)


		(while (> outer-loop 0)
			(set! inner-loop 3)
			(set! half-width (/ (car (gimp-drawable-width layer)) 2))
			(set! half-height (/ (car (gimp-drawable-height layer)) 2))

			(gimp-edit-copy layer)
			(gimp-image-scale image (* (car (gimp-drawable-width layer)) 2) (* (car (gimp-drawable-height layer)) 2))
			(gimp-layer-add-alpha layer)
			(gimp-edit-clear layer)
			(gimp-floating-sel-anchor (car (gimp-edit-paste layer FALSE)))


				(while (> inner-loop 0)
				        (gimp-image-add-layer image (car (gimp-layer-new-from-drawable layer image)) FALSE)
				(set! inner-loop (- inner-loop 1)))


			(gimp-drawable-transform-flip-simple (vector-ref (cadr (gimp-image-get-layers image)) 1) 0 TRUE 0 TRUE)
			(gimp-drawable-transform-flip-simple (vector-ref (cadr (gimp-image-get-layers image)) 2) 0 TRUE 0 TRUE)
			(gimp-drawable-transform-flip-simple (vector-ref (cadr (gimp-image-get-layers image)) 2) 1 TRUE 0 TRUE)
			(gimp-drawable-transform-flip-simple (vector-ref (cadr (gimp-image-get-layers image)) 3) 1 TRUE 0 TRUE)

			(gimp-layer-translate (vector-ref (cadr (gimp-image-get-layers image)) 0) (- 0 half-width) (- 0 half-height))
			(gimp-layer-translate (vector-ref (cadr (gimp-image-get-layers image)) 1) half-width (- 0 half-height))
			(gimp-layer-translate (vector-ref (cadr (gimp-image-get-layers image)) 2) half-width half-height)
			(gimp-layer-translate (vector-ref (cadr (gimp-image-get-layers image)) 3) (- 0 half-width) half-height)

			(gimp-image-merge-visible-layers image 1)

			(set! layer (vector-ref (cadr (gimp-image-get-layers image)) 0))
		(set! outer-loop (- outer-loop 1)))


	            (gimp-image-flatten image)

	        (gimp-image-undo-group-end image)

	)

        (gimp-displays-flush)

)


(script-fu-register
	"script-fu-reflections-mk1"
	"<Image>/File/Create/Patterns/Reflections"
;;;;	"<Image>/Gimp/Reflections"
	"Creates a symmetrical tile from the image"
	"SteveMi"
	"Unrestricted"
	"2015"
	"*"
	SF-IMAGE	"Image" 0
	SF-DRAWABLE	"Layer" 0
	SF-ADJUSTMENT	"Number of reflections"		'(1 1 15 1 1 0 0)
)
