3.5. Dar algo de sustancia a nuestro script

Continuemos con nuestro entrenamiento y añadamos alguna funcionalidad a nuestro script

En la lección anterior, creamos una función vacia y la registramos en el GIMP. En esta lección, queremos proporcionar funcionalidad a nuestro script, queremos crear una nueva imagen, añadirle texto del usuario y redimensionar la imagen para adecuarla al texto exactamente.

Una vez que sabe como configurar variables, definir funciones y acceder a los miembros de la lista, el resto es cuesta abajo, todo lo que necesita hacer es familiarizarse con las funciones disponibles en la base de datos de procedimientos del GIMP y llamar, directamente, a las funciones. Así que encienda su examinador de procedimientos y vamos a cocinar!.

Comencemos haciendo una imagen nueva. Crearemos una nueva variable, theImage, es el resultado de llamar a la función de construcción del GIMP <code>gimp-image-new</code>.

Como puede ver en el examinador de procedimientos, la función <code>gimp-image-new</code> toma tres parámetros ancho, alto y tipo de la imagen. Porque, más tarde, redimensionaremos la imagen al tamaño adecuado para el texto, haremos una imagen 10x10 RGB. Almacenaremos el ancho y tamaño de la imagen en algunas variables, tambien, las remitiremos y manipularemos, más tarde, en el script.

        (define (script-fu-text-box inText inFont inFontSize inTextColor)
        (let*
              (
                 ; define our local variables
                 ; create a new image:
                 (theImageWidth  10)
                 (theImageHeight 10)
                 (theImage (car
                                (gimp-image-new
                                 theImageWidth
                                 theImageHeight
                                 RGB
                                )
                           )
                 )
                 (theText)     ;a declaration for the text
                               ;we create later
      

Nota: Usamos el valor RGB para especificar que la imagen es una imagen RGB. Se podría usar, tambien, 0, pero RGB es más descriptivo cuando ojeemos el código.

Tambien, debería notar que tomamos la cabeza de el resultado de la función llamada. Esto podría parecer extraño, porque la base de datos, explicitamente, nos dice que devuelve solo un valor, el ID de la imagen recien creada. Todas las funciones devuelven una lista, siempre que haya un solo elemento en la lista, así que necesitamos conseguir la cabeza de la lista.

Avancemos y quitamos la linea de representación de la imagen (o la comentamos con un ; como primer caracter de la linea).

Antes de que añadamos texto a la imagen, necesitamos seleccionar los colores de fondo y frente, para que así aparezca con el color especificado por el usuario. Usaremos las funciones gimp-context-set-background y gimp-context-set-foreground:

        (gimp-context-set-background '(255 255 255) )
        (gimp-context-set-foreground inTextColor)
      

Con los colores seleccionados correctamente, ahora, limpiaremos la basura actual en la imagen para rellenar el dibujable con el color de fondo:

        (gimp-drawable-fill theLayer BACKGROUND-FILL)
      

Con la imagen limpia, estamos listos para añadir algún texto:

        (set! theText
                      (car
                           (gimp-text-fontname
                            theImage theLayer
                            0 0
                            inText
                            0
                            TRUE
                            inFontSize PIXELS
                            "Sans")
                       )
        )
      

Aunque hay una llamada de función, es bastante más sencillo si repasas los parámetros mientras miras las entradas de función en el examinador de procedimientos. Basicamente, estamos creando una nueva capa de texto y la asignamos a la variable theText.

Ahora que tenemos el texto, podemos coger el ancho y alto y redimensionar la imagen y la capa de la imagen al tamaño del texto:

        (set! theImageWidth   (car (gimp-drawable-width  theText) ) )
        (set! theImageHeight  (car (gimp-drawable-height theText) ) )
        (gimp-image-resize theImage theImageWidth theImageHeight 0 0)
        (gimp-layer-resize theLayer theImageWidth theImageHeight 0 0)
      

Si es como yo, le maravillará lo que es un dibujable comparado con una capa. La diferencia entre los dos es que un dibujable es algo en lo que puedes dibujar, incluido capas, pero también canales, máscaras de capa, selecciones, etc.; una capa es una versión más especifica de un dibujable. En muchos casos, la distinción no es importante.

Con la imagen lista, podemos reañadir nuestra linea de representación:

        (gimp-display-new theImage)
      

Guarde su trabajo, refresque la base de datos y ejecute su primer script!.