¿No necesita parar y tomar algo? ¿No? Bien, entonces procederemos con la cuarta lección, su primer código de Script-Fu.
Una de las operaciones más comunes que realiza el autor en GIMP es crear una caja con algún texto en ella para una página web, un logotipo o algo así. Nunca se sabe el tamaño adecuado de una imagen cuando se empieza. No sabe cuánto espacio llenará el texto con la tipografía ni el tamaño de tipografía que quiere.
Los maestros de Script-Fu (y los estudiantes) reconocen rápidamente que este problema puede resolverse fácilmente y automatizado con Script-Fu.
Crearemos un script, llamado «Text Box», que creará una imagen, con el tamaño correctamente ajustado a una línea 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.
Up until now, we've been working in the Script-Fu Console. Now, however, we're going to switch to editing script files. Script files should be plain text files that you can edit in a text or code editor. The name you give is not that important, except for being able to recognize the script. You should give your script file the extension “.scm”.
Where you place your scripts is a matter of preference. In GIMP's folder preferences you can see in which folders GIMP looks for scripts. It is also possible to add a new folder there. The folder where GIMP stores its own scripts is usually not the best choice for your scripts, but for the rest feel free to choose what suits you best.
Cada guión Script-Fu define al menos una función, que es la función principal del script. Es donde hace el trabajo.
Cada script debe registrarse también en la base de datos de procedimientos, para poder acceder a el bajo GIMP.
Se define la función principal, primero:
(define (script-fu-text-box inText inFont inFontSize inTextColor))
Aquí se ha definido una nueva función llamada script-fu-text-box
que toma cuatro parámetros que más tarde corresponderán al texto, a una tipografía, al tamaño de la tipografía y al color del texto. La función generalmente está vacía y no hace nada. Hasta ahora, todo va bien; nada nuevo, nada lujoso.
Las convenciones de nombres en Scheme parecen preferir minúsculas con guiones y se han seguido en el nombre de la función. Sin embargo, se parte de la convención con los parámetros. Se quieren nombres más descriptivos para los parámetros y variables, y se añade el prefijo «in» a los parámetros, así se puede ver rápidamente qué valores entran en el script, en lugar de que los que se crean en él. Se usa el prefijo «the» para las variables definidas en el script.
Es la convención de GIMP para nombrar sus funciones de script script-fu-abc
, porque así están listadas en la base de datos de procedimientos, todas ellas se mostrarán bajo Script-Fu cuando se estén listando las funciones. Esto también ayuda a distinguirlas de los complementos.
Ahora se registra 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. Puede situar esta llamada a la función donde quiera en su script, pero normalmente se sitúa al final, después de las otras líneas de código.
Aquí está el listado de registro de esta función (se explicarán todos estos parámetros enseguida):
(script-fu-register "script-fu-text-box" ;function 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;\ 2009, the GIMP Documentation Team" ;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" "<Image>/File/Create/Text")
Si guarda estas funciones en un archivo de texto con el sufijo .scm
en su carpeta de scripts, seleccione → → , este script nuevo aparecerá como → → → .
Si llama a este nuevo script, no hará nada, desde luego, pero puede ver los apuntes creados cuando se registra el script (más información de lo que hicimos, se descubrirá luego).
Finalmente, si abre el visor de procedimientos
→ ), verá que nuestro script aparece en la base de datos.Para registrar el script en GIMP, se llamará a la función script-fu-register
, se rellenarán los siete parámetros requeridos y se añadirán los parámetros propios, junto con una descripción y los valores predefinidos para cada parámetro.
Los parámetros requeridos
El nombre de la función que se define. Esto es la llamada de la función cuando nuestro script se invoca (el punto de entrada del script). Es necesario porque se pueden definir funciones adicionales bajo el mismo archivo, y GIMP necesita saber a cuáles de estas funciones se llama. En este ejemplo, solo se define una función, «text box», que se ha registrado.
The menu label is the name that will be shown in the menu. In previous versions of GIMP you could specify the menu location here, but that has changed. How to specify the location will be shown below.
Una descripción de su script, para ser mostrada en el visor de procedimientos.
Su nombre (el autor del script).
Información de los derechos de autor.
La fecha en que se hizo el script, o la última revisión del mismo.
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 este caso, se está creando una imagen, y no se necesita definir el tipo de imagen sobre la que se trabaja.
Una vez que se han listado los parámetros requeridos, se necesitan listar los parámetros que corresponden a los parámetros que su script necesita. Al listar estos parámetros, se dan indicaciones del tipo que son. Esto es por el diálogo que aparece cuando el usuario selecciona el script. También se pueden proporcionar valores predefinidos.
Esta sección del proceso de registro tiene el siguiente formato:
Tipo de parámetro |
Descripción |
Ejemplo |
---|---|---|
|
Si su script opera en una imagen nueva, esta 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 |
|
Si su script opera sobre una imagen abierta, este sería el segundo parámetro después de el parámetro |
17 |
|
Acepta números y cadenas. Tenga en cuenta que las cuotas deben eludir el texto predefinido, por lo que es mejor usar |
42 |
|
Acepta cadenas. |
«Un texto» |
|
Indica que color se requiere en este parámetro. |
'(0 102 255) |
|
Se muestra una caja, para obtener un valor Booleano. |
TRUE o FALSE |
Nota | |
---|---|
Junto a los tipos de parámetros anteriores hay más tipos para el modo interactivo, cada uno de ellos crea un widget en el control del diálogo. Encontrará una lista de estos parámetros con descripciones y ejemplos en el script de prueba |
Tipo de parámetro |
Descripción |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Crea un widget de ajuste en el diálogo. SF-ADJUSTMENT "etiqueta" '(valuer inferior superior incremento_del_paso incremento_tecla_página dígitos tipo) Lista de argumentos del widget
|
||||||||||||||||
|
Crea un botón de color en el diálogo. SF-COLOR "etiqueta" '(red green blue) o SF-COLOR "etiqueta" "color" Lista de argumentos del widget
|
||||||||||||||||
|
Crea un widget para la selección de la tipografía en el diálogo. Devuelve un nombre de tipografía en una cadena. Hay dos procedimientos nuevos de «gimp-text» para facilitar el uso de este parámetro de retorno: (gimp-text-fontname image drawable x-pos y-pos text border antialias size unit font) (gimp-text-get-extents-fontname text size unit font) en donde «font» es el nombre de la tipografía que obtiene. El tamaño especificado en nombre de la tipografía se ignora silenciosamente. Sólo se usa en el selector de la tipografía. Se le pregunta para que lo ajuste a un valor útil (24 píxeles es una buena elección). SF-FONT "etiqueta" "nombre de la tipografía" Lista de argumentos del widget
|
||||||||||||||||
|
Creará un widget en el diálogo de control. El widget consiste en un área de vista previa (que cuando se presiona produce una vista previa emergente) y un botón con la etiqueta «...». El botón abre un diálogo donde se pueden seleccionar los pinceles y modificar cada una de las características del pincel. SF-BRUSH "Brush" '("Círculo (03)" 100 44 0) Aquí el diálogo de pincel se abrirá con el pincel predeterminado «Círculo (03)», opacidad 100, espaciado 44 y el modo de pintura en normal (valor 0). Si se cambió esta selección el valor pasado a la función como parámetro será '("Círculo (03)" 100 44 0). |
||||||||||||||||
|
Creará un widget en el diálogo de control. El widget consiste en un área de vista previa (que cuando se presiona produce una vista previa emergente) y un botón con la etiqueta «...». El botón abre un diálogo donde se pueden seleccionar los patrones. SF-PATTERN "Pattern" "Hojas de arce" El valor devuelto cuando se llama al script es una cadena que contiene el nombre del patrón. Si la selección anterior no se ha cambiado la cadena contendrá «Hojas de arce». |
||||||||||||||||
|
Creará un widget en el diálogo de control. El widget consiste en un botón que contiene una vista previa del degradado seleccionado. Si se presiona el botón se abre un diálogo de selección de degradado. SF-GRADIENT "Gradient" "Azul profundo" El valor devuelto cuando se llama al script es una cadena que contiene el nombre del patrón. Si la selección anterior no se ha cambiado la cadena contendrá «Azul profundo». |
||||||||||||||||
|
Creará un widget en el diálogo de control. El widget consiste en un botón que contiene el nombre de la paleta seleccionada. Si se presiona el botón se abre un diálogo de selección de paleta. SF-PALETTE "Palette" "Colores con nombre" El valor devuelto cuando se llama al script es una cadena que contiene el nombre del patrón. Si la selección anterior no se ha cambiado la cadena contendrá «Colores con nombre». |
||||||||||||||||
|
Creará un widget en el diálogo de control. El widget consiste en un botón que contiene el nombre de un archivo. Si se presiona el botón se abre un diálogo de selección de archivo. SF-FILENAME "etiqueta" (string-append "" gimp-data-directory "/scripts/beavis.jpg") El valor devuelto cuando se llama al script es una cadena que contiene el nombre del archivo. |
||||||||||||||||
|
Sólo es útil en modo interactivo. Muy parecido a SF-FILENAME, pero el widget creado permite elegir una carpeta en lugar de un archivo. SF-DIRNAME "etiqueta" "/var/tmp/images" El valor devuelto cuando se llama al script es una cadena que contiene el nombre de la carpeta. |
||||||||||||||||
|
Creará un widget en el diálogo de control. El widget es una caja combinada que muestra las opciones pasadas como una lista. La primera opción es la predeterminada. SF-OPTION "etiqueta" '("opción1" "opción2") El valor devuelto cuando se llama al script es el número de la opción elegida, en donde la primera opción se cuenta como 0. |
||||||||||||||||
|
Creará un widget en el diálogo de control. El widget es una caja combinada que muestra todos los valores enumerados para el tipo de enumeración dado . Tiene que ser el nombre de un enumerado registrado, sin el prefijo «Gimp». El segundo parámetro especifica el valor predeterminado, usando el nombre corto del valor de enumeración. SF-ENUM "Interpolación" '("InterpolationType" "lineal") El valor devuelto cuando se llama al script corresponde al valor enumerado elegido. |
Once we have registered our script, we need to tell GIMP where it should be found in the menu.
The best menu location of your script depends on its function. Most scripts are found in the
and menus.
For the current script, which creates a new image, we choose a submenu
of
script-fu-menu-register
function does.
Thus, we registered our Text Box script here:
→ → → .
Si se fija, el submenú «Texto», en el menú Archivo/Crear, no estaba allí al empezar, GIMP crea automáticamente cualquier menú que todavía no exista.