;;mhtranspla
;Kiki
;http://kikidide.yuki-mura.net/GIMP/gimp.htm
;http://kikidide.yuki-mura.net/GIMP/engimp.htm
;

(define (script-fu-mhtranspla text size font foption fcolor fg fpat cm? ds fuchi cc borc beb bor shbr shof ft)
  (let* ((img (car (gimp-image-new 256 256 RGB)))

;;文字
	(text-layer (car (gimp-text-fontname img -1 0 0 text (+ (/ size 12) 4) TRUE size PIXELS font)))
	(width (car (gimp-drawable-width text-layer)))
	(height (car (gimp-drawable-height text-layer)))

	(old-fg (car (gimp-palette-get-foreground)))
	(old-grad (car (gimp-gradients-get-active)))
	(old-pat (car (gimp-patterns-get-pattern)))
	(wdth)
	(hgt)
)
    (gimp-image-undo-disable img)

    (gimp-image-resize img (+ (+ width shof) (* shbr 1.1)) (+ (+ height shof) (* shbr 1.1)) (/ (* shbr 1.1) 2) (/ (* shbr 1.1) 2))

    (gimp-palette-set-foreground fcolor)
    (gimp-layer-set-preserve-trans text-layer TRUE)
    (gimp-edit-fill text-layer FOREGROUND-FILL)
    (cond((= foption 1)
	(gimp-gradients-set-active fg)
	(gimp-edit-blend text-layer CUSTOM NORMAL 0 100 20 REPEAT-NONE FALSE FALSE 0 0 FALSE 0 0 width height)
	)
       ((= foption 2)
       (gimp-selection-layer-alpha text-layer)
       (gimp-patterns-set-pattern fpat)
       (gimp-edit-bucket-fill text-layer PATTERN-BUCKET-FILL NORMAL-MODE 100 255 FALSE 0 0)
       (gimp-selection-none img)
       ))

    (gimp-layer-set-preserve-trans text-layer FALSE)
;;    (set! fuchi (* (/ size 120) 3))
;;    (if (> fuchi 1) (= fuchi 1))

    (script-fu-mhtransplaimg img text-layer TRUE cm? ds fuchi cc borc beb bor shbr shof ft)

    (gimp-palette-set-foreground old-fg)
    (gimp-gradients-set-active old-grad)
    (gimp-patterns-set-pattern old-pat)

    (gimp-image-undo-enable img)
    (gimp-display-new img)
))

(script-fu-register "script-fu-mhtranspla"
		    "<Image>/File/Create/Logos/Transplastic"
		    "mhtranspla"
		    "Kiki"
		    "Kiki"
		    "2012/1"
		    ""
		    SF-STRING		"Text String"		"Transparent"
		    SF-ADJUSTMENT	"Font Size (pixels)"	'(120 2 1000 1 10 0 1)
		    SF-FONT		"Font"			"Sans"
                    SF-OPTION		"fg-mode"		'(_"color" _"gradient" _"pattern")
		    SF-COLOR		"Font color"		'(187 232 169)
                    SF-GRADIENT		"Gradient"		"Pastel Rainbow"
                    SF-PATTERN		"Pattern"		"Small Squares"
                    SF-OPTION		"Color-Mode?"		'(_"OVERLAY" _"COLOR")
		    SF-ADJUSTMENT	"Color density"		'(85 0 100 1 2 0 0)
		    SF-ADJUSTMENT	"Outline"		'(3 1 100 1 2 0 0)
		    SF-COLOR		"Bg Color"		'(140 140 140)
		    SF-COLOR		"Border Color"		'(0 0 0)
		    SF-ADJUSTMENT	"bevel"			'(5 1 15 1 2 0 0)
		    SF-ADJUSTMENT	"Bg border width"	'(7 1 100 1 2 0 0)
		    SF-ADJUSTMENT	"shadow blur"		  '(12 0 100 1 2 0 0)
		    SF-ADJUSTMENT	"shadow offset"		'(12 0 150 1 2 0 0)
                    SF-TOGGLE		"Flatten Image"		FALSE
)


(define (script-fu-mhtransplaimg img drawable bg? cm? ds fuchi cc borc beb bor shbr shof ft)
  (let* (

;;幅と高さ
	 (width (car (gimp-drawable-width drawable)))
	 (height (car (gimp-drawable-height drawable)))

         (width (+ width (* bor 2)))
         (height (+ height (* bor 2)))

;;背景
	 (bg-layer (car (gimp-layer-new img (+ (+ width shof) (* shbr 1.1)) (+ (+ height shof) (* shbr 1.1)) RGB-IMAGE "Background" 100 NORMAL-MODE)))
	 (g-layer (car (gimp-layer-new img (+ (+ width shof) (* shbr 1.1)) (+ (+ height shof) (* shbr 1.1)) RGBA-IMAGE "Gray" 100 NORMAL-MODE)))
	 (w-layer (car (gimp-layer-new img (+ (+ width shof) (* shbr 1.1)) (+ (+ height shof) (* shbr 1.1)) RGBA-IMAGE "White" 100 NORMAL-MODE)))
	 (br-layer (car (gimp-layer-new img (+ (+ width shof) (* shbr 1.1)) (+ (+ height shof) (* shbr 1.1)) RGBA-IMAGE "Brown" 100 NORMAL-MODE)))

         (old-fg (car (gimp-palette-get-foreground)))

;;2.4追加
	 (l4)
	 (o1-layer)
	 (o2-layer)
	 (ds2)
	 (o-layer)
	 (shou)
)
    (gimp-image-undo-group-start img)

;    (if (> huet 181) (set! huet (- huet 360)))

;;サイズ調整
    (gimp-layer-resize drawable (+ (+ width shof) (* shbr 1.1)) (+ (+ height shof) (* shbr 1.1)) (+ shof (* shbr 0.55)) (+ shof (* shbr 0.55)))
    (set! o-layer (car (gimp-layer-copy drawable TRUE)))	;add
    (if (= bg? TRUE)
    (begin
    (gimp-image-resize img (+ (+ width shof) (* shbr 1.1)) (+ (+ height shof) (* shbr 1.1)) bor bor)
    (gimp-layer-resize drawable (+ (+ width shof) (* shbr 1.1)) (+ (+ height shof) (* shbr 1.1)) bor bor)
    (set! o-layer (car (gimp-layer-copy drawable TRUE)))	;add
    ))

;    (if (= bg? FALSE)						;add
;    (begin							;add
;    (set! width (car (gimp-drawable-width drawable)))		;add
;    (set! height (car (gimp-drawable-height drawable)))		;add
;    (gimp-image-resize img (* width 1.2) (* height 1.2) 0 0)	;add	remove noise
;    ))								;add
    (gimp-image-add-layer img w-layer 1)
    (gimp-image-add-layer img br-layer 1)
    (gimp-selection-all img)
    (gimp-edit-clear w-layer)					;none
;    (gimp-edit-clear br-layer)
    (gimp-drawable-fill br-layer TRANS-IMAGE-FILL)		;add    noise remove
;    (if (= bg? FALSE)						;add
;    (gimp-image-resize img (- width (* bor 2)) (- height (* bor 2)) 0 0)	;add	remove noise
;    )								;add
    (gimp-selection-layer-alpha drawable)
    (gimp-palette-set-foreground '(255 255 255))
    (gimp-edit-fill w-layer FOREGROUND-FILL)
    (gimp-image-remove-layer img drawable)

    (gimp-palette-set-foreground '(132 106 79))
    (gimp-edit-fill br-layer FOREGROUND-FILL)
    (gimp-selection-none img)
    (plug-in-gauss-iir2 1 img w-layer beb beb)
    (plug-in-bump-map 1 img br-layer w-layer 135 45 beb 0 0 0 0 FALSE FALSE 0)
    (gimp-selection-layer-alpha br-layer)
    (gimp-selection-shrink img fuchi)
    (define (spline) (let* ((a (cons-array 8 'double))) 
    (set-pt a 0 0.0 0.0)
    (set-pt a 1 1.0 0.247)
    a))
    (define (set-pt a index x y)
    (prog1
    (aset a (* index 2) x)
    (aset a (+ (* index 2) 1) y)))
    (gimp-curves-spline br-layer HISTOGRAM-ALPHA 4 (spline))
    (gimp-image-remove-layer img w-layer)

    (set! l4 (car (gimp-layer-copy br-layer 0)))
    (gimp-image-add-layer img l4 0)
    (gimp-edit-clear br-layer)
    (gimp-selection-none img)
    (gimp-invert l4)

    (if (>= shbr 1) (plug-in-gauss-iir2 1 img br-layer shbr shbr))
    (gimp-layer-translate br-layer shof shof)
    (gimp-desaturate br-layer)

    (gimp-image-add-layer img o-layer 0)
    (gimp-layer-set-mode o-layer OVERLAY-MODE)
    (if (= cm? 1) (gimp-layer-set-mode o-layer COLOR-MODE))
    (if (> ds 0) (gimp-desaturate l4))
    (gimp-layer-set-opacity o-layer ds)
    (set! o1-layer (car (gimp-layer-copy o-layer TRUE)))
    (gimp-image-add-layer img o1-layer 1)
    (gimp-image-merge-down img o1-layer 0)
    (set! o2-layer (car (gimp-layer-copy o-layer TRUE)))
    (gimp-image-merge-down img o-layer 0)
    (gimp-image-add-layer img o2-layer 1)
    (set! ds2 (* (/ ds 85) 50))
    (if (< ds2 0) (set! ds2 0))
    (gimp-layer-set-opacity o2-layer ds2)
    (gimp-selection-layer-alpha o2-layer)
    (gimp-selection-shrink img fuchi)
    (gimp-edit-clear o2-layer)
    (gimp-selection-none img)
    (if (> shbr 0) (plug-in-gauss-iir2 1 img o2-layer shbr shbr))
    (gimp-layer-translate o2-layer shof shof)
;    (gimp-image-merge-down img o2-layer 0)

    (set! width (car (gimp-drawable-width br-layer)))		;add
    (set! height (car (gimp-drawable-height br-layer)))		;add
    (if (>= shof shbr) (set! shou shbr)				;add
	(set! shou shof)					;add
    )								;add
    (if (= bg? FALSE)
    (gimp-image-resize img (- (- width (* bor 2)) (/ shou 2))  (- (- height (* bor 2)) (/ shou 2)) (- 0 (/ shou 2)) (- 0 (/ shou 2)))	;add
    (gimp-image-resize img (- width (/ shou 2))  (- height (/ shou 2)) (- 0 (/ shou 2)) (- 0 (/ shou 2)))	;add
    )

    ;moved
    (if (= bg? TRUE)
    (begin
    (gimp-image-add-layer img bg-layer 3)
    (gimp-palette-set-foreground borc)
    (gimp-edit-fill bg-layer FOREGROUND-FILL)
    (gimp-image-add-layer img g-layer 3)
    (gimp-selection-all img)
    (gimp-selection-shrink img bor)
    (gimp-palette-set-foreground cc)
    (gimp-edit-fill g-layer FOREGROUND-FILL)
    (gimp-selection-invert img)
    (gimp-edit-clear g-layer)
    (gimp-selection-none img)
    ))

    (if (= ft TRUE) (gimp-image-flatten img))

    (gimp-palette-set-foreground old-fg)

    (gimp-image-undo-group-end img)
    (gimp-displays-flush)
))


(define (script-fu-mhtransplaimgh img drawable bg? cm? ds fuchi cc borc beb bor shbr shof ft)
  (let* (

;;幅と高さ
	 (width (car (gimp-drawable-width drawable)))
	 (height (car (gimp-drawable-height drawable)))
  )

    (gimp-image-resize img (+ (+ width shof) (* shbr 1.1)) (+ (+ height shof) (* shbr 1.1)) (/ (* shbr 1.1) 2) (/ (* shbr 1.1) 2))
    (script-fu-mhtransplaimg img drawable bg? cm? ds fuchi cc borc beb bor shbr shof ft)
)
)

(script-fu-register "script-fu-mhtransplaimgh"
		    "<Image>/Filters/Alpha to Logo/Transplastic"
		    "mhtranspla"
		    "Kiki"
		    "Kiki"
		    "2012/1"
		    "RGBA"
		    SF-IMAGE		"Image"		0
		    SF-DRAWABLE		"Drawable"	0
                    SF-TOGGLE		"Background"	FALSE
                    SF-OPTION		"Color-Mode?"	'(_"OVERLAY" _"COLOR")
		    SF-ADJUSTMENT	"Color density"	'(85 0 100 1 2 0 0)
		    SF-ADJUSTMENT	"Outline"	'(3 1 100 1 2 0 0)
		    SF-COLOR		"Bg Color"	'(140 140 140)
		    SF-COLOR		"Border Color"	'(0 0 0)
		    SF-ADJUSTMENT	"bevel"		'(5 1 15 1 2 0 0)
		    SF-ADJUSTMENT	"Bg border width"	'(7 1 100 1 2 0 0)
		    SF-ADJUSTMENT	"shadow blur"	'(12 0 100 1 2 0 0)
		    SF-ADJUSTMENT	"shadow offset"	'(12 0 150 1 2 0 0)
                    SF-TOGGLE		"Flatten Image"	FALSE
)
