3.7. Your script and its working
| 3. A Script-Fu Tutorial |

### 3.7. Your script and its working

#### 3.7.1. What you write

Below the complete script:

            (script-fu-register
                      "script-fu-text-box"                        ;func name
                      "Text Box"                                  ;menu label
                      "Creates a simple text box, sized to fit\
                        around the user's choice of text,\
                        font, font size, and color."              ;description
                      "Michael Terry"                             ;author
                      "copyright 1997, Michael Terry"             ;copyright notice
                      "October 27, 1997"                          ;date created
                      ""                     ;image type that the script works on
                      SF-STRING      "Text:"         "Text Box"   ;a string variable
                      SF-FONT        "Font:"         "Charter"    ;a font variable
                      SF-ADJUSTMENT  "Font size"     '(50 1 1000 1 10 0 1)
                                                                  ;a spin-button
                      SF-COLOR       "Color:"        '(0 0 0)     ;color variable
                      SF-ADJUSTMENT  "Buffer amount" '(35 0 100 1 10 1 0)
                                                                  ;a slider
            )
            (script-fu-menu-register "script-fu-text-box" "<Toolbox>/Xtns/Script-Fu/Text")
            (define (script-fu-text-box inText inFont inFontSize inTextColor inBufferAmount)
              (let*
                (
                  ; define our local variables
                  ; create a new image:
                  (theImageWidth  10)
                  (theImageHeight 10)
                  (theImage)
                  (theImage
                            (car
                                (gimp-image-new
                                  theImageWidth
                                  theImageHeight
                                  RGB
                                )
                            )
                  )
                  (theText)             ;a declaration for the text
                  (theBuffer)           ;create a new layer for the image
                  (theLayer
                            (car
                                (gimp-layer-new
                                  theImage
                                  theImageWidth
                                  theImageHeight
                                  RGB-IMAGE
                                  "layer 1"
                                  100
                                  NORMAL
                                )
                            )
                  )
                ) ;end of our local variables
                (gimp-image-add-layer theImage theLayer 0)
                (gimp-context-set-background '(255 255 255) )
                (gimp-context-set-foreground inTextColor)
                (gimp-drawable-fill theLayer BACKGROUND-FILL)
                (set! theText
                              (car
                                    (gimp-text-fontname
                                    theImage theLayer
                                    0 0
                                    inText
                                    0
                                    TRUE
                                    inFontSize PIXELS
                                    "Sans")
                                )
                  )
                (set! theImageWidth   (car (gimp-drawable-width  theText) ) )
                (set! theImageHeight  (car (gimp-drawable-height theText) ) )
                (set! theBuffer (* theImageHeight (/ inBufferAmount 100) ) )
                (set! theImageHeight (+ theImageHeight theBuffer theBuffer) )
                (set! theImageWidth  (+ theImageWidth  theBuffer theBuffer) )
                (gimp-image-resize theImage theImageWidth theImageHeight 0 0)
                (gimp-layer-resize theLayer theImageWidth theImageHeight 0 0)
                (gimp-layer-set-offsets theText theBuffer theBuffer)
                (gimp-display-new theImage)
                (list theImage theLayer theText)
              )
            )

#### 3.7.2. What you obtain

Рисунок 12.5. And the result on the screen.

3.6. Extending The Text Box Script |  | Часть III. Справочник по функциям