Hola Pep
¡Bienvenido a los scripts de PixInsight!
Como te decía David, aquí no hay trampa ni cartón (si exceptuamos el pequeño detalle de que todavía no hay documentación para el runtime de JavaScript en PI 8) ). Los scripts se pueden desarrollar íntegramente en PI con ScriptEditor.
Para aprender el lenguage, te recomiendo la documentación existente en el sitio de Mozilla. Un buen punto de comienzo es éste:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guidedonde se describe el lenguaje JavaScript. Aquí tienes una referencia exhaustiva sobre todos los componentes del lenguaje:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_ReferenceAunque estos documentos se refieren a la versión 1.5, y PI implementa la 1.7, las diferencias son pocas y no muy importantes.
En la web hay infinidad de sitios con muy buena documentación sobre JavaScript. Sin embargo, ten en cuenta que PixInsight no es un navegador web, de manera que no funcionará prácticamente ningún código de ejemplo que encuentres. JavaScript está implementado en PixInsight como un lenguaje para procesamiento de imágenes, para generación de gráficos y de interfaces de usuario. Lo primero que tienes que hacer es aprender el lenguaje en sí, olvidándote de todos los objetos que están definidos en los navegadores.
Por ejemplo, en un navegador tienes definido un objeto Document que representa el documento actual en el navegador. En PixInsight no existe nada parecido, pero sin embargo tienes cosas como Image, ImageWindow, Dialog, etc., que no existen en ningún navegador.
Además, en PixInsight hay cambios muy importantes en algunos objetos estándar de javaScript. En particular, la implementación del objeto Math en PI no tiene nada que ver con el estándar del lenguaje, ya que PI requiere un soporte de rutinas matemáticas muy superior.
Por último, PI implementa un preprocesador del JavaScript, similar al preprocesador estándar de C, que no existe en ninguna otra implementación. Por ejemplo, el PI puedes usar directivas #include, #define, #ifdef, etc., cosa que no encontrarás en ningún otro sitio.
Tengo una duda, los script que vienen con la instalación, los usuarios ¿tenemos derecho a modificarlos?
Por supuesto que sí. Lo único que pedimos es que publiquéis las modificaciones que hagáis
me gustaría poder añadir un control "RadioButton" para poder seleccionar la posición donde aparece el texto sobre la imagen
Excelente idea. Para definir la posición del texto en este script te sugiero los siguientes cambios:
1. Añade las siguientes definiciones para las cuatro posibles localizaciones del texto (las cuatro esquinas):
#define TOP_LEFT 0
#define TOP_RIGHT 1
#define BOTTOM_LEFT 2
#define BOTTOM_RIGHT 3
2. Añade un miembro a DrawSignatureData:
this.position = BOTTOM_LEFT;
Esta línea tendría que ir dentro de la función DrawSignatureData(). Por ejemplo, debajo de la línea 178:
this.text = "PixInsight";
3. haz los cambios pertinentes en la rutina DrawSignature, a partir de la línea 61. Fíjate que la rutina hace todo el trabajo en un Bitmap, y después copia este bitmap sobre la imagen. Basta con que cambies las coordenadas en la línea 161:
image.selectedPoint = new Point( data.margin,
image.height - data.margin - height/antialiasingScaleFactor );
image.selectedPoint es precisamente el punto donde se copia el bitmap (que contiene el texto dibujado) sobre la imagen.
Para seleccionar la posición del texto puedes usar cuatro controles RadioButton. Sin embargo, sería más práctico hacerlo con un único ComboBox que tuviera las cuatro opciones a seleccionar.
Bueno, espero que con estas pistas puedas empezar. Por supuesto, cualquier duda que tengas la puedes preguntar en la sección de Desarrollo de Software y estaremos encantados de ayudarte en todo lo que podamos.