; Script-Fu dynamic_brush_letters.scm
; Download : 
;
;	Copyright (C) 2013 samj ( http://aljacom.com/~gmic/ )
;
;	Licence GPL
;		Ce fichier est le Script-Fu "dynamic_brush_letters.scm" pour Gimp. 
;		Ce Script-Fu "dynamic_brush_letters.scm" est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU General Public License
;		telle que publiée par la Free Software Foundation ; soit la version 3 de la licence, soit (à votre gré) toute version ultérieure.
;		Ce Script-Fu "dynamic_brush_letters.scm" est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; 
;		pas même la garantie implicite de COMMERCIABILISABILITÉ ni d'ADÉQUATION à UN OBJECTIF PARTICULIER.
;		Consultez la GNU General Public License pour plus de détails.
;		Vous devez avoir reçu une copie de la GNU General Public License en même temps que GIMP ; si ce n'est pas le cas, consultez <http://www.gnu.org/licenses>
;
;	Ce fichier dynamic_brush_letters.scm est édité avec Notepad++    http://notepad-plus-plus.org/
;
;
;	Version 20130327 (origine)
;
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;
;	Ce script est un exemple employant le filtre "Twist" version 2.1 Download http://gimpchat.com/viewtopic.php?f=7&t=6732
;
;	Ce script-fu permet de créer une brosse contenant des lettres.
;
;	Accès sur l'image par :
;
;	Filtres > Misc > Concept > Dynamic Brush Letters ...
;	Filters > Misc > Concept > Dynamic Brush Letters ...
;
;
;	Les brosses sont sauvegardées dans le répertoire des préférences. 
;	Lors de la sauvegarde un message s'affiche pour visualiser les caractéristiques de la sauvegarde. 
;	L'utilisateur peut à tout moment supprimer les objets créés.
;
;
;	This script-fu creates a brush with letters.
;	Brushes are saved in the “preferences directory”.
;	This script-fu uses the plug-in "Twist version 2.1". 
;	Download   http://gimpchat.com/viewtopic.php?f=7&t=6732
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;
;

		
(define	
	(
		dynamic_brush_letters_samj
		image
		drawable
		Effects
		chaine_lettres
		Police
		Color_of_the_object
		Use_the_image_or_color
		Spacing_of_the_dynamic_brush
		Object_Name
		Operation_of_the_brush
		Niveau_Blur
		Display_Filter_Settings		
		
	)
	(let* 
		(

			(message (car (gimp-message-get-handler)))
			(old_context_transform_direction (car (gimp-context-get-transform-direction)))
			(old_context_interpolation (car (gimp-context-get-interpolation)))
			(old_context_recursion (car (gimp-context-get-transform-recursion)))
			(old_context_transform_resize (car (gimp-context-get-transform-resize)))
			(old-fg (car (gimp-context-get-foreground)))
			(old-bg (car (gimp-context-get-background)))

			(width (car (gimp-image-width image)))
			(height (car (gimp-image-height image)))

			(transparence (car (gimp-drawable-has-alpha drawable)))

			(Back_Ground_Color '(255 255 255))
			(FG_Color '(0 0 0))



			; Twist
			(run_mode 1)
			(Parameter_1 0)
			(Parameter_2 0)
			(Parameter_3 0)
			(Parameter_4 0)
			(Parameter_5 0)
			(Parameter_6 0)
			(Parameter_7 0)
			(Parameter_8 0)
			(Use_cutoff 0)
			(r_The_cutoff_radius 1)
			(dr_The_falloff_radius 1)
			(The_current_function 0)			
			(operating_mode 0)




			(selection_en_cours)
			(nouvelle_image)
			(copier_visible)
			(buffer-name "copier_visible")
			(calque_pattern)
			(calque_pattern_boucle)
			(path)


			(Selection_Size 256)
			(degrade)
			(ranks)

			(Letter "W")
			(Taille_Police 21)
			(width_letter)
			(height_letter)
			(surface_texte)
			(sortie_boucle_analyse_lettre 0)

			;;;; (chaine_lettres "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789")
			; 1 calque par lettre


			(NB_Images_GIH (string-length chaine_lettres))
			(Nb_Calques_A_Sauvegarder NB_Images_GIH)
			
			(Nom_definitif_de_l_objet  (strcat Object_Name "_" (number->string Effects)  "_" (number->string Use_the_image_or_color)  "_" (number->string Spacing_of_the_dynamic_brush)   "_" (number->string Operation_of_the_brush)   "_" (number->string Niveau_Blur)       )    )   

			(Effects_En_Texte "")
			(Use_the_image_or_color_En_Texte "")
			(Operation_of_the_brush_En_Texte "")
			
			(Probleme_lettre 0)


		)




		(gimp-context-set-transform-direction TRANSFORM-FORWARD)
		(gimp-context-set-interpolation 2)
		(gimp-context-set-transform-recursion 3)
		(gimp-context-set-transform-resize TRANSFORM-RESIZE-ADJUST)
		
		(gimp-undo-push-group-start image)

		(gimp-selection-none image)

		; sécutité pour limiter le volume des brosses
		(if (> NB_Images_GIH 64)
			(begin
				(set! NB_Images_GIH 64)
			)
		)
		;(gimp-message (number->string NB_Images_GIH) )




;******************************************************************************************************
; Taille de la police
;******************************************************************************************************



		; déterminer la taille de la police sur la lettre W avec analyse de la largeur
		(while
			(= sortie_boucle_analyse_lettre 0)
				(begin


					(set! Taille_Police (+ Taille_Police 1) )

					; caractéristiques de la surface occupée par la lettre
					(set! surface_texte (gimp-text-get-extents-fontname Letter Taille_Police 0 Police))		

					; largeur de la lettre
					(set! width_letter (car surface_texte)) 

					; hauteur de la lettre
					(set! height_letter (cadr surface_texte))

					(if (> width_letter Selection_Size)
						(begin
							(set! sortie_boucle_analyse_lettre 1)
						)
					)

					; il y a un problème
					(if (> Taille_Police (* Selection_Size) )
						(begin
							(set! sortie_boucle_analyse_lettre 1)
						)
					)

				)
		)

		(set! Taille_Police (- Taille_Police 20) )
		;(gimp-message (number->string Taille_Police) )







;******************************************************************************************************
; message
;******************************************************************************************************



		(if (= Display_Filter_Settings 1)
			(begin
					;; sélectionner la console erreurs pour envoyer un message
					(gimp-message-set-handler 2)

					(if (= Effects 0) (set! Effects_En_Texte "0  None"  ) )
					(if (= Effects 1) (set! Effects_En_Texte "1  Deform"  ) )
					(if (= Effects 2) (set! Effects_En_Texte "2  Random Deform"  ) )
					(if (= Effects 3) (set! Effects_En_Texte "3  Rotate Deform" ) )

					(if (= Use_the_image_or_color 0) (set! Use_the_image_or_color_En_Texte "0  Use Image"  ) )
					(if (= Use_the_image_or_color 1) (set! Use_the_image_or_color_En_Texte "1  Use Color"  ) )
					(if (= Use_the_image_or_color 2) (set! Use_the_image_or_color_En_Texte "2  Use Image + Color"  ) )
					(if (= Use_the_image_or_color 3) (set! Use_the_image_or_color_En_Texte "3  Use Color + Image" ) )

					(if (= Operation_of_the_brush 0) (set! Operation_of_the_brush_En_Texte "0  Random letters"   ) )
					(if (= Operation_of_the_brush 1) (set! Operation_of_the_brush_En_Texte "1  Letters in the input order"   ) )
					(if (= Operation_of_the_brush 2) (set! Operation_of_the_brush_En_Texte "2  Change of letters with the angle of application"  ) )


					(gimp-message 
						(string-append "-- Dynamic Brush Letters Parameters --\n" 
							"Effects : " Effects_En_Texte "\n"
							"Letters : " chaine_lettres  "\n"
							"Font : " Police  "\n"
							"Use the image or/and color : " Use_the_image_or_color_En_Texte "\n"							
							"Spacing of the dynamic brush : " (number->string Spacing_of_the_dynamic_brush) "\n"							
							"Object Name to save : " Nom_definitif_de_l_objet "\n"							
							"Operation of the brush : " Operation_of_the_brush_En_Texte "\n"
							"Blur : " (number->string Niveau_Blur) "\n"
							"\n------------------------------------------\n"			
						)
					)
			)
		)



;******************************************************************************************************
; paramètres
;******************************************************************************************************




		(if (= Effects 1)
			(begin

						(set! run_mode 1)
						(set! Parameter_1 1)
						(set! Parameter_2 -0.8)
						(set! Parameter_3 0)
						(set! Parameter_4 0)
						(set! Parameter_5 0)
						(set! Parameter_6 0)
						(set! Parameter_7 0)
						(set! Parameter_8 0)
						(set! Use_cutoff 1)
						(set! r_The_cutoff_radius 0.01)
						(set! dr_The_falloff_radius 1)
						(set! The_current_function 0)

			)
		)



		(if (= Effects 3)
			(begin

						(set! run_mode 1)
						(set! Parameter_1 -0.7)
						(set! Parameter_2 4)
						(set! Parameter_3 -10)
						(set! Parameter_4 -10)
						(set! Parameter_5 0)
						(set! Parameter_6 0)
						(set! Parameter_7 0)
						(set! Parameter_8 0)
						(set! Use_cutoff 0)
						(set! r_The_cutoff_radius 0.5)
						(set! dr_The_falloff_radius 0.2)
						(set! The_current_function 2)

			)
		)





;******************************************************************************************************
; "Dynamic Brush"
;******************************************************************************************************



		(gimp-context-set-background Back_Ground_Color)

		

		(set! copier_visible (car (gimp-edit-named-copy-visible image buffer-name)))

		; créer une nouvelle image rgb
		(set! nouvelle_image (car (gimp-image-new width height 0)))

		(gimp-undo-push-group-start nouvelle_image)

		; créer le premier calque
		(set! calque_pattern (car (gimp-layer-new nouvelle_image width height 0 "calque_pattern" 100 0)))

		(gimp-image-insert-layer nouvelle_image calque_pattern -1 0)

		(gimp-image-select-rectangle nouvelle_image 0  width height 0 0 )

		(set! selection_en_cours (car (gimp-edit-named-paste calque_pattern copier_visible 0)))

		(gimp-floating-sel-anchor selection_en_cours)

		(gimp-selection-none nouvelle_image)

		(gimp-layer-add-alpha calque_pattern)

		(gimp-layer-scale calque_pattern Selection_Size Selection_Size 1)

		(gimp-layer-resize calque_pattern Selection_Size Selection_Size 0 0)
		; ajuster taille image à la taille des calques
		(gimp-image-resize-to-layers nouvelle_image)

		(gimp-item-set-visible calque_pattern TRUE)





		(while
			(> NB_Images_GIH 0)
				(begin

					(set! Probleme_lettre 0)

					(if (= Use_the_image_or_color 0) ; image
						(begin

							(gimp-context-set-foreground (car (gimp-image-pick-color nouvelle_image calque_pattern (truncate (random Selection_Size) )    (truncate (random Selection_Size) )   FALSE FALSE 0) )   )

						)
					)


					(if (= Use_the_image_or_color 1) ; color
						(begin

							(gimp-context-set-foreground Color_of_the_object)

						)
					)

					(if (= Use_the_image_or_color 2) ; image + color
						(begin

							(set! FG_Color (car (gimp-image-pick-color nouvelle_image calque_pattern (truncate (random Selection_Size) )    (truncate (random Selection_Size) )   FALSE FALSE 0) )   )
							(gimp-context-set-foreground FG_Color)

						)
					)

					(if (= Use_the_image_or_color 3) ; color + image
						(begin

							(set! FG_Color (car (gimp-image-pick-color nouvelle_image calque_pattern (truncate (random Selection_Size) )    (truncate (random Selection_Size) )   FALSE FALSE 0) )   )
							(gimp-context-set-foreground Color_of_the_object)

						)
					)



					(set! Letter (substring chaine_lettres (- NB_Images_GIH 1) NB_Images_GIH  ))
					
					; problèmes de caractères
					(if (string=? Letter " ") ; espace
						(begin
							(set! Letter "-")
							(set! Probleme_lettre 1)
							;(gimp-message "espace")
						)
					)

					(set! calque_pattern_boucle (string-append "calque_pattern_" (number->string NB_Images_GIH) )  )

					; créer le calque texte
					;                  (gimp-text-fontname image drawable x y text border antialias size size-type fontname)
					(set! calque_pattern_boucle   (car (gimp-text-fontname nouvelle_image -1 0 0 Letter 0 TRUE Taille_Police 0 Police)))



					(if (= Use_the_image_or_color 2) ; image + color
						(begin

							(gimp-image-select-color nouvelle_image 2 calque_pattern_boucle FG_Color)

							(gimp-selection-shrink nouvelle_image 8)

							(gimp-context-set-foreground Color_of_the_object)

							(gimp-edit-fill calque_pattern_boucle 0)

							(gimp-selection-none nouvelle_image)

						)
					)

					(if (= Use_the_image_or_color 3) ; color + image
						(begin

							(gimp-image-select-color nouvelle_image 2 calque_pattern_boucle Color_of_the_object)

							(gimp-selection-shrink nouvelle_image 8)

							(gimp-context-set-foreground FG_Color)

							(gimp-edit-fill calque_pattern_boucle 0)

							(gimp-selection-none nouvelle_image)

						)
					)


					(if (= Effects 2)
						(begin

							(set! Parameter_2 (+ (/ (random 500) 100) 0.5)    ) ;

						)
					)

					(if (= Effects 3)
						(begin
								(if (= (modulo NB_Images_GIH 2) 0)
									(begin
										(set! Parameter_3 -10)
										(set! Parameter_4 -10)
									)
									;else
									(begin
										(set! Parameter_3 -2)
										(set! Parameter_4 10)									
									)
								)
						)
					)



					(if (> Effects 0)
						(begin

							(plug-in-Twist 
								run_mode				;      GIMP_PDB_INT32, run_mode, Interactive, non-interactive
								nouvelle_image			;      GIMP_PDB_IMAGE, image, Input image
								calque_pattern_boucle			;      GIMP_PDB_DRAWABLE, drawable, Input drawable
								Parameter_1				;      GIMP_PDB_FLOAT, a1, float parameter #1
								Parameter_2				;      GIMP_PDB_FLOAT, a2, float parameter #2
								Parameter_3				;      GIMP_PDB_FLOAT, a3, float parameter #3
								Parameter_4				;      GIMP_PDB_FLOAT, a4, float parameter #4
								Parameter_5				;      GIMP_PDB_FLOAT, a5, float parameter #5
								Parameter_6				;      GIMP_PDB_FLOAT, a6, float parameter #6
								Parameter_7				;      GIMP_PDB_FLOAT, a7, float parameter #7
								Parameter_8				;      GIMP_PDB_FLOAT, a8, float parameter #8
								"unused"				;      GIMP_PDB_STRING , lettering01, lettering #1
								"unused"				;      GIMP_PDB_STRING , lettering02, lettering #2
								"unused"				;      GIMP_PDB_STRING , lettering03, lettering #3
								"unused"				;      GIMP_PDB_STRING , lettering04, lettering #4
								"unused"				;      GIMP_PDB_STRING , lettering05, lettering #5
								"unused"				;      GIMP_PDB_STRING , lettering06, lettering #6
								"unused"				;      GIMP_PDB_STRING , lettering07, lettering #7
								"unused"				;      GIMP_PDB_STRING , lettering08, lettering #8
								Use_cutoff				;      GIMP_PDB_INT32, use_cutoff, Use cutoff or not
								r_The_cutoff_radius		;      GIMP_PDB_FLOAT, r, The cutoff radius
								dr_The_falloff_radius	;      GIMP_PDB_FLOAT, dr, The falloff radius
								The_current_function	;      GIMP_PDB_INT32, current_function, The current function
																	; "R(r) - 4th order poly"	0
																	; "R(phi) - cosine"			1
																	; "Phi(r) - 4th order poly"	2
																	; "Phi(phi) - cosine"		3
																	; "R(r)Phi(phi)"			4
																	; "R(r)R(phi)"				5
																	; "Cosines"					6
																	; "Gauss"					7
																	; "XY 4th Order"			8
								operating_mode			;      GIMP_PDB_INT32, operating_mode ( 0=normal 1=mémorisation des valeurs )
							)

						)
					)



					(if (> Niveau_Blur 0)
						(begin
							(plug-in-gauss 1 nouvelle_image calque_pattern_boucle Niveau_Blur Niveau_Blur 1)
						)
					)


					; problèmes de caractères
					(if (= Probleme_lettre 1)
						(begin
							(gimp-selection-all nouvelle_image)
							(gimp-drawable-fill calque_pattern_boucle 3)
							(gimp-selection-none nouvelle_image)
						)
					)

					
					
					; calque texte aux dimensions de l'image
					(gimp-layer-resize-to-image-size calque_pattern_boucle )

					(set! NB_Images_GIH (- NB_Images_GIH 1))

				)
		)

		(gimp-image-remove-layer nouvelle_image calque_pattern)

		;;;;;;;;;;;;;;;;


		; déterminer le chemin complet de la brosse à sauvegarder
		(set! path (string-append gimp-directory "/brushes/" (strcat Nom_definitif_de_l_objet ".gih") ) )

		; sauvegarder la brosse sous :  "Object_Name"_"Selection_Size".gih

		(set! ranks (cons-array 1 'byte))
		(vector-set! ranks 0 Nb_Calques_A_Sauvegarder)


		(if (= Operation_of_the_brush 0) ; Random letters
			(begin

					(file-gih-save 
						1															; GIMP_PDB_INT32       "run-mode"     "The run mode { RUN-INTERACTIVE (0) RUN-NONINTERACTIVE (1) }"
						nouvelle_image												; GIMP_PDB_IMAGE       "image"        "Input image"
						(car (gimp-image-get-active-layer nouvelle_image))			; GIMP_PDB_DRAWABLE    "drawable"     "Drawable to save"
						path														; GIMP_PDB_STRING      "filename"     "The name of the file to save the brush pipe in"
						path														; GIMP_PDB_STRING      "raw-filename" "The name of the file to save the brush pipe in"
						Spacing_of_the_dynamic_brush								; GIMP_PDB_INT32       "spacing"      "Spacing of the brush"
						Nom_definitif_de_l_objet									; GIMP_PDB_STRING      "description"  "Short description of the brush pipe"
						Selection_Size												; GIMP_PDB_INT32       "cell-width"   "Width of the brush cells"
						Selection_Size												; GIMP_PDB_INT32       "cell-height"  "Width of the brush cells"
						1															; GIMP_PDB_INT8        "display-cols" "Display column number"
						1															; GIMP_PDB_INT8        "display-rows" "Display row number"
						1															; GIMP_PDB_INT32       "dimension"    "Dimension of the brush pipe"
						ranks														; GIMP_PDB_INT8ARRAY   "rank"         "Ranks of the dimensions" The number of rank and sel args depend on the dimension
						1															; GIMP_PDB_INT32       "dimension"    "Dimension (again)"
						'("random")													; GIMP_PDB_STRINGARRAY "sel"          "Selection modes" }
					)
			)
		)

		(if (= Operation_of_the_brush 1) ; Letters in the input order
			(begin

					(file-gih-save 
						1															; GIMP_PDB_INT32       "run-mode"     "The run mode { RUN-INTERACTIVE (0) RUN-NONINTERACTIVE (1) }"
						nouvelle_image												; GIMP_PDB_IMAGE       "image"        "Input image"
						(car (gimp-image-get-active-layer nouvelle_image))			; GIMP_PDB_DRAWABLE    "drawable"     "Drawable to save"
						path														; GIMP_PDB_STRING      "filename"     "The name of the file to save the brush pipe in"
						path														; GIMP_PDB_STRING      "raw-filename" "The name of the file to save the brush pipe in"
						Spacing_of_the_dynamic_brush								; GIMP_PDB_INT32       "spacing"      "Spacing of the brush"
						Nom_definitif_de_l_objet									; GIMP_PDB_STRING      "description"  "Short description of the brush pipe"
						Selection_Size												; GIMP_PDB_INT32       "cell-width"   "Width of the brush cells"
						Selection_Size												; GIMP_PDB_INT32       "cell-height"  "Width of the brush cells"
						1															; GIMP_PDB_INT8        "display-cols" "Display column number"
						1															; GIMP_PDB_INT8        "display-rows" "Display row number"
						1															; GIMP_PDB_INT32       "dimension"    "Dimension of the brush pipe"
						ranks														; GIMP_PDB_INT8ARRAY   "rank"         "Ranks of the dimensions" The number of rank and sel args depend on the dimension
						1															; GIMP_PDB_INT32       "dimension"    "Dimension (again)"
						'("incremental")													; GIMP_PDB_STRINGARRAY "sel"          "Selection modes" }
					)
			)
		)

		(if (= Operation_of_the_brush 2) ; Change of letters with the angle of application
			(begin

					(file-gih-save 
						1															; GIMP_PDB_INT32       "run-mode"     "The run mode { RUN-INTERACTIVE (0) RUN-NONINTERACTIVE (1) }"
						nouvelle_image												; GIMP_PDB_IMAGE       "image"        "Input image"
						(car (gimp-image-get-active-layer nouvelle_image))			; GIMP_PDB_DRAWABLE    "drawable"     "Drawable to save"
						path														; GIMP_PDB_STRING      "filename"     "The name of the file to save the brush pipe in"
						path														; GIMP_PDB_STRING      "raw-filename" "The name of the file to save the brush pipe in"
						Spacing_of_the_dynamic_brush								; GIMP_PDB_INT32       "spacing"      "Spacing of the brush"
						Nom_definitif_de_l_objet									; GIMP_PDB_STRING      "description"  "Short description of the brush pipe"
						Selection_Size												; GIMP_PDB_INT32       "cell-width"   "Width of the brush cells"
						Selection_Size												; GIMP_PDB_INT32       "cell-height"  "Width of the brush cells"
						1															; GIMP_PDB_INT8        "display-cols" "Display column number"
						1															; GIMP_PDB_INT8        "display-rows" "Display row number"
						1															; GIMP_PDB_INT32       "dimension"    "Dimension of the brush pipe"
						ranks														; GIMP_PDB_INT8ARRAY   "rank"         "Ranks of the dimensions" The number of rank and sel args depend on the dimension
						1															; GIMP_PDB_INT32       "dimension"    "Dimension (again)"
						'("angular")													; GIMP_PDB_STRINGARRAY "sel"          "Selection modes" }
					)
			)
		)










		; mettre à jour les brosses dans Gimp
		(gimp-brushes-refresh)
		
		; choisir la brosse comme brosse active
		(gimp-context-set-brush Nom_definitif_de_l_objet )
		
		(gimp-image-delete nouvelle_image)
		
		(gimp-message (string-append "Brush Path :\n" path "\nBrush Name:\n" Nom_definitif_de_l_objet ) )

























;******************************************************************************************************

		;; rétablir le mode message
		(gimp-message-set-handler message)

		(gimp-context-set-transform-direction old_context_transform_direction )
		(gimp-context-set-interpolation old_context_interpolation)
		(gimp-context-set-transform-recursion old_context_recursion)
		(gimp-context-set-transform-resize old_context_transform_resize)
		(gimp-context-set-background old-bg)
		(gimp-context-set-foreground old-fg)

		(gimp-undo-push-group-end image)
		(gimp-displays-flush)


	)
)





(script-fu-register "dynamic_brush_letters_samj"
                    _"<Image>/Filters/Misc/Concept/Dynamic Brush Letters ..."
                    "Dynamic Brushes, letters from an image."
                    "samj"
                    "samj"
                    "20130327"
                    "RGB*"
                    SF-IMAGE    "Image"     0
                    SF-DRAWABLE "Drawable"  0
					SF-OPTION "Effects " '("0  None" "1  Deform" "2  Random Deform" "3  Rotate Deform")
					SF-STRING "Letters "    "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789"
					SF-FONT "Police / Font " "Serif Bold Italic" ; Serif Bold Italic
					SF-COLOR "Color of the letters " '(222 22 222)
					SF-OPTION "Use the image or/and color " '("0  Use Image" "1  Use Color" "2  Use Image + Color" "3  Use Color + Image")
					SF-ADJUSTMENT "Spacing of the dynamic brush (%) " '(100 1 800 1 10 0 1)
					SF-STRING "Object Name to save (DO NOT PUT SPACES) "    "Letters_Brush_"
					SF-OPTION "Operation of the brush " '("0  Random letters" "1  Letters in the input order" "2  Change of letters with the angle of application" )
					SF-ADJUSTMENT "Blur " '(0 0 20 1 2 2 1)
					SF-TOGGLE "Display Filter Settings" FALSE




)

;; FIN





