14.4. Tu primer Script Script-Fu

¿No necesitas parar y tomar algo? ¿No? Bien, entonces procederemos con la cuarta lección -- tu primer script Scrpt-Fu.

Creando Un Script: Text Box

Una de las operaciones más comunes que realizo en Gimp es crear una caja con algún texto en ella pra una pagina web, un logo o algo así. Nunca sabes como de grande hacer una imagen cuando empiezas. No sabes cuanto espacio llenará el texto con la fuente y el tamaño de fuente que quieres.

Los Maestros de Script-Fu (y los estudientes), rapidamente, reconocen que este problema puede resolverse, facilmente, y automatizado con Script-Fu.

Crearemos un script, llamado Text Box, que creará una imagen, con el tamaño correctamente ajustado a una linea de texto, que el usuario introduce. También, dejaremos al usuario elegir la fuente, el tamaño de la fuente y el color del texto.

Editando YGuardando Tus Scripts

Hasta ahora, hemos trabajado en la Consola de Script-Fu. Ahora, sin embargo, vamos a cambiar para editar scripts de archivos de texto.

Donde situar tus scripts es cuestión de preferencias --si tienes acceso al directorio de scripts predefinido de Gimp, puedes situarlos allí. Sin embargo, yo prefiero dejar mis scripts personales en mi propio directorio de scripts, para mantenerlos separados de los instalados de fabrica.

 

En el directorio .gimp-2.2 que Gimp crea fuera del directorio home, deberías encontrar un directorio llamado scripts. Gimp, automaticamente, buscará en tu directorio .gimp-2.2 el directorio de scripts, y añadir los scripts de este directorio a la base de datos de Script-Fu. Deberías situar tus scripts personales aquí.

Los Esenciales al descubierto

Cada script Script-Fu define al menos una función, la cual es la función principal del script. Esta es donde haces el trabajo.

Cada script debe, también, registrarse en la base de datos de procedimientos, para poder acceder a ellos bajo Gimp.

Definiremos la función principal primero:

        (define (script-fu-text-box inText inFont inFontSize inTextColor))
      

Aquí, hemos definido una nueva función llamada script-fu-text-box que toma cuatro parámetros, que, más tarde, corresponderán al texto, una fuente, el tamaño de la fuente y el color del texto. La función está vacia y no hace nada.

Convenciones De Nombres

Las convenciones de nombres en Scheme parecen preferir minúsculas con guiones, en el nombre de la función. Sin embargo, he salido de la convencióncon los parámetros. Quiero nombres más descriptivos para mis parámetros y variables, y añado el prefijo "in" a los parámetros, así que,  puedo, rapidamente, ver que valores entran en el script, más bien que los que se crean en el. Uso el prefijo "the" para las variables definidas en el script.

Es la convención para nombrar tus funciones de scripts Script-Fu, porque cuando están listados en la base de datos de procedimientos, todos ellos se mostrarán bajo script-fu cuando se estén listando las funciones. Esto, también, ayuda a distinguirlos de los plug-ins.

Registrando La Función

Ahora, registremos la función con Gimp. Esto se hace llamando a la función script-fu-register. Cuando Gimp lee en un script, ejecutará esta función, que registrará el script en la base de datos de procedimientos. Puedes situar esta llamada a función donde quieras en tu script, pero, normalmente, se situa al final, después de los otros códigos.

Aquí está el listado de registro de esta función (explicaré todos estos parámetros en un minuto):

        (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
        )
        (script-fu-menu-register "script-fu-text-box" "<Toolbox>/Xtns/Script-Fu/Text")

      

Si guardas estas funciones en un archivo de texto con el sufijo  .scm  en tu directorio de script, escoge  Exts->Script-Fu->Refrescar Scripts, este nuevo script aparecerá como  Exts->Script-Fu->Text->Text Box.

Si llamas este nuevo script, no hará nada, desde luego, pero puedes ver los apuntes creados cuando se registra el script (más información de lo que hicimos se descubrirá luego).

Finalmente, si abres el Examinador de procedimientos --  Exts->Examinador de procedimientos, Notarás que nuestro script aparece en la base de datos.

Pasos Para Registrar El Script

Para registrar nuestro script en Gimp, llamamos a la función script-fu-register, rellenamos los siete parámetros requeridos y añadimos los nuestros propios, junto con una descripción y valores predefinidos para cada parámetro.

Los Parámetros Requeridos

  • El nombre de la función que definimos.Esto es la llamada de función cuando nuestro script es invocado (el punto de entrada de nuestro script). Esto es necesario porque podriamos definir funciones adicionales bajo el mismo archivo, y Gimp necesita saber a cuales de estas funciones se llama. En nuestro ejemplo, solo definimos una función, text box, que registramos.

  • La localización en el menú donde el script será insertado. El lugar exacto de el script está especificado como una ruta en Unix, con la raiz de la ruta estando entre la caja de herramientas o click derecho.

    Si tu script no opera sobre una imagen existente (y crea una imagen nueva, como nuestro Text Box hará), querrás insertarlo en el menú de la caja de herramientas -- este es el me´nu en la ventana principal de Gimp (donde se localizan todas las herramientas: herramientas de selección, lupa, etc.).

    Si tu script está intentando trabajar sobre una imagen que está siendo editada, querrás insertarla en el menú que aparece cuando pulsas el botón derecho sobre una imagen abierta. El resto de la ruta apunta a la lista de menú, menús y sb-menús. Resgistramos nuestro script Text Box en el menú Text de el menú Script-Fu del menú Exts, menú de la caja de herramientas    ( Exts->Script-Fu->Text->Text Box ).

    Si te fijas, el sub-menú Text en el menú Script-Fu no estaba allí cuando empezamos -- Gimp crea, automaticamente, cualquier menú que todavia no exista.

  • Una descrpción de tu script, para ser mostrada en el Examinador de Procedimientos

  • Tu nombre (el autor del script)

  • Información Copyright .

  • La fecha en que se hizo el script, o la última revisión.

  • El tipo de imágenes con las trabaja el script. Puede ser uno de los siguientes: RGB, RGBA, GRAY, GRAYA, INDEXED, INDEXEDA. O podría no ser ninguno de ellos -- en nuestro caso, estamos creando una imagen, y no necesitamos definir el tipo de imagen sobre la que trabajaremos.

Registrando Los Parámetros Del Script

Una vez que hemos listado los parámetros requeridos, necesitamos listar los parámetros que corresponden a los parámetros que nuestro script necesita. Cuando listamos estos parámetros, les damos indicación de como son. Esto es por el diálogo que surge cuando el usuario selecciona nuestro script. También podemos proporcionar valores predefinidos.

Esta sección del proceso de registro tiene el siguiente formato:

Param Type

Descripción

SF-VALUE

Acepta números y cadenas. Nota que las cuotas deben eludir el texto predefinido, mejor usar SF-STRING.

42

SF-STRING

Acepta cadenas.

"Some text"

SF-COLOR

Indica que color se requiere un color en este parámetro.

'(0 102 255)

SF-TOGGLE

A Se muestra una caja, para obtener un valor Booleano

TRUE or FALSE

SF-IMAGE

Si tu script opera en una imagen nueva, este debería ser el primer parámetro después de los parámetros requeridos. Gimp pasará una referencia a la imagen en este parámetro.

3

SF-DRAWABLE

Si tu script opera sobre una imagen abierta, este sería el segundo parámetro después de el parámetro SF-IMAGE. Se refiere a la capa activa. Gimp pasará una referencia a la capa activa en este parámetro.

17