All pastes #915215 Raw Edit

Untitled

public text v1 · immutable
#915215 ·published 2008-02-23 17:07 UTC
rendered paste body
(define (script-fu-dvdbutton-find-layer-by-name-recursive inLayerCount inLayerList inName inDepth)
	(let*
		(ourLayer 0)
		(ourName "")
	)
	(
		(set! ourLayer
			(car inLayerList)
		)
		
		(set! ourName
			(car (gimp-drawable-get-name ourLayer))
		)
		
		(cond
			((> inDepth inLayerCount) -1)
			((string=? ourName inName) ourLayer)
			(else (script-fu-dvdbutton-find-layer-by-name-recursive inLayerCount (cdr inLayerList) inName (+ inDepth 1)))
		)
	)	
)

(define (script-fu-dvdbutton-find-layer-by-name inImage inName)
	(let*
		(ourLayerCount 0)
		(ourLayerList '())
	)
	(
		(set! ourLayerList
			(gimp-image-get-layers inImage)
		)
		
		(set! ourLayerCount
			(car ourLayerList)
		)
		
		(set! ourLayerList
			(cdr ourLayerList)
		)

		(script-fu-dvdbutton-find-layer-by-name-recursive ourLayerCount ourLayerList inName 1)
	)
)

(define (script-fu-add-dvdbutton inImage inDrawable inText inFont inFontSize inTextColor)
	(let*
		(
			(ourTextLayer -1)
			(ourBorderLayer -1)
			(ourExtentsList '())
			(ourTextboxX 0)
			(ourTextboxY 0)
			(ourLayerList '())
			(ourOffsetBlurRad (/ inFontSize 10) )
		)
		
		(gimp-context-set-foreground inTextColor)
		
		(set! ourTextLayer
			(car (gimp-text-fontname inImage -1 10 10 inText 0 TRUE inFontSize 0 inFont))
		)
		
		(set! ourExtentsList
			(gimp-text-get-extents-fontname inText inFontSize 0 inFont)
		)
		
		(set! ourTextboxX
			(car ourExtentsList)
		)
		
		(set! ourTextboxY
			(cadr ourExtentsList)
		)
		
		(set! ourLayerList
			(cdr (gimp-image-get-layers inImage))
		)
		
		(gimp-image-raise-layer-to-top inImage ourTextLayer)
		(script-fu-drop-shadow inImage ourTextLayer 10 10 10 '(0 0 0) 80 0)
		(gimp-rect-select inImage 7 7 ourTextboxX ourTextboxY 2 FALSE 0)
		(gimp-selection-border inImage 3)
		
		(set! ourBorderLayer
			(script-fu-dvdbutton-find-layer-by-name inImage "DVDButton_select_layer")
		)
		
		(cond
			((= ourBorderLayer -1) 
				(set! ourBorderLayer
					(car (gimp-layer-new inImage (car (gimp-image-width inImage)) (car (gimp-image-height inImage)) 1 "DVDButton_select_layer" 0 0))
				)
			)
		)
		
		(gimp-image-add-layer inImage ourBorderLayer 1)		
		(gimp-edit-bucket-fill ourBorderLayer 0 0 100 0 FALSE 0 0)
		(gimp-displays-flush)
	)
)

(script-fu-register
	"script-fu-add-dvdbutton"							;func name
	"Add DVD Button"									;menu label
	"Creates a text box, sized to fit\
	around the user's choice of text,\
	font, font size, and color."						;description
	"Om"										;author
	"copyright 2008, Om"						;copyright notice
	"Febuary 23, 2008"									;date created
	""													;image type that the script works on
	SF-IMAGE		"Image"		0						;the image
	SF-DRAWABLE		"Drawable"	0						;reference to the active layer	
	SF-STRING		"Text:"		"Button Text"			;a string variable
	SF-FONT			"Font:"		"Scaberous"				;a font variable
	SF-ADJUSTMENT	"Font size"	'(50 1 1000 1 10 0 1)	;a spin-button
	SF-COLOR		"Color:"	'(255 255 255)			;color variable
)

(script-fu-menu-register "script-fu-add-dvdbutton" "<Image>/Script-Fu/DVDButton")