Audela |
![]() |
Pour un programmeur, Audela n'est qu'un paquet d'extensions du langage Tcl apportant des fonctions pour les applications à l'astronomie. Rappelons qu'une extension est un fichier de librairie (.dll sous Windows et .so sous Linux) qui peut être chargé par un interpréteur Tcl afin de l'enrichir de nouvelles fonctions. Plutôt que d'avoir crée une seule énorme librairie, nous avons volontairement divisé Audela en plusieurs extensions afin d'être plus modulaire. Cela permet aussi une meilleure maintenance et laisse la possiblité à chacun de programmer une nouvelle librairie d'extension.
Les extensions de Audela peuvent être classées en trois catégories :
Le choix de laisser le code source de la librairie publique ou non est laissé au libre arbitre de l'auteur. C'est pour cette raison que certaines librairies sont publiques (GNU) et d'autres non. Nous rappelons rapidement ici d'où viennent les différentes fonctions standards de Audela. En espérant y trouver bientôt les vôtres... Le schéma ci-dessous dresse les modules fondamentaux du logiciel Audela. Les boîtes vertes et bleues concernent des fichiers d'extension Tcl. Les boîtes rouges sont des fichiers exécutables. La boite jaune concerne une librairie C standard.
La librairie d'extension Tcl libaudela est le point central du logiciel. Il peut être adressé par l'exécutable audela (.exe sous Windows) ou par Wish (version supérieure ou égale à 8.3). Il est possible d'utiliser libaudela à partir d'un logiciel quelconque en utilisant quelques fonctions exportées par libaudela pour ce besoin. La couche du coeur contient la librairie libaudela et les librairies de Tcl et Tk. Enfin, libaudela charge la librairie libtt. Libtt n'est pas une extension Tcl. C'est une librairie classique à un seul point d'entrée qui permet la gestion des images au format FITS, entre autres. La couche des extensions contient toutes les extensions Tcl susceptibles d'apporter de nouvelles fonctions pour Audela. On y remarquera les deux familles libcam et libtel qui concernent les pilotes d'instruments.
La librairie libaudela est le coeur de Audela. Elle contient les fonctions de base pour l'imagerie en astronomie.
Libaudela apporte apporte des familles de nouvelles fonctions. ces familles sont appelées "objets" et sont les suivantes :
Libaudela apporte des fonctions individuelles telles que :
ttscript2 : pour effectuer un traitement d'image par lot avec la syntaxe de libtt. libtt est une librairie classique qui complète libaudela. Les sources de la librairie sont publiques. Il est possible d'y programmer des fonctions de traitement d''image supplémentaires (langage C).
Libmc permet d'effectuer des calculs d'éphémérides, de prévoir la position d'objets (étoiles, astéroïdes, etc.) présents dans un champ CCD, de convertir des dates et des angles entre divers formats, ainsi que de nombreuses autres fonctionnalités associées à la mécanique céleste.
Libgzip permet de compresser ou de décompresser un ou plusieurs fichiers au format .gz.
Librgb permet de séparer des plans couleurs dans une image et de visualiser trois plans images (rouge, vert, bleu) en une image couleur à l'écran.
Libjm est développée par Jacques Michelet qui a développé des scripts Tcl pour la photométrie. La librairies libjm apporte donc des fonctions utiles dans ce domaine.
Libgsltcl permet d'utiliser quelques fonctions de la GNU Scientific Library (GSL). On pourra ainsi effectuer des calculs matriciels, des optimisations aux moindres carrés ou bien des transformées de Fourier.
Libsext permet d'appeler l'exécutable Sextractor. C'est un logiciel spécialisé dans la détection d'étoiles dans une image.
Libgs est développée par Guillaume Spitzer. Libgs apporte des fonctions qui permettent de piloter le logiciel de planétarium Guide (existe pour Windows seulement).
Les extensions de pilotage de caméras sont décrites dans une page dédiée.
Les extensions de pilotage de montures de télescopes sont décrites dans une page dédiée.
Libdp permet d'accéder à la notion de client/serveur. N'hésitez pas à consulter le le site WEB http://www.cs.cornell.edu/zeno/projects/tcldp/ .
BLT permet l'affichage de graphe de type Y fonction de X. Très utile pour l'analyse de données. N'hésitez pas à consulter le site WEB http://www.tcltk.com/blt.
Cette extension permet de communiquer entre logiciels sous Windows en utilisant le protocole DDP.
Cette extension permet d'utiliser les objets com sous Windows.
Ce paragraphe concerne les développeurs de logiciels sous Windows qui veulent se servir de AudeLa comme une simple librairie.La façon la plus simple est de regarder le code de test.cpp qui est une application basique. Pour cela, télécharger les fichiers suivants :
Il y a 6 fonctions à importer depuis l'application :
void* CALLMETHOD audela_open();
La fonction audela_open open ouvre une session Audela et retourne l'adresse for le handler audela.
Exemple :
void *session;
session=audela_open();
int CALLMETHOD audela_close(void *handle);
La fonction audela_close ferme une session Audela définie par son handler.
Exemple :
audela_close(session);
int CALLMETHOD audela_eval(void *handle, char *s, int *reslen);
La fonction audela_eval soumet une chaîne de caractères *s de syntaxe Tcl à évaluer par l'interprétautr Tcl de Audela. La valeur de reslen retourne le nombre de caractères de la chaîne (terminée par NULL) du résultat.
Exemple :
int reslen;
audela_eval(session,"source myscript.tcl",&reslen);
int CALLMETHOD audela_getresult(void *handle, int maxchar, char *s);
La fonction audela_getresult demande à l'interpréteur Tcl de Audela de retourner le dernier résultat d'évaluation dans la chaîne de caractères *s. La valeur maxchar permet de limiter la longueur de la chaîne retournée dans *s.
const int maxchar;
char s[maxchar];
audela_getresult(session,maxchar,s);
int CALLMETHOD audela_putbuf(void *handle, int bufno, int type, int w, int h, void *buffer);
La fonction audela_putbuf permet de tranférer les valeurs d'un pointeur image *buffer (largeur=w, hauteur=h) vers le buffer numéro bufno de Audela. Le buffer C est de type type :
unsigned char = AUDELA_TYPE_BYTE short = AUDELA_TYPE_SHORT unsigned short = AUDELA_TYPE_USHORT long = AUDELA_TYPE_LONG unsigned long = AUDELA_TYPE_ULONG float = AUDELA_TYPE_FLOAT double = AUDELA_TYPE_DOUBLE
Exemple :
const int w = 10, h = 10;
short buf[h][w]; int n=0;
for(int j=0;j<h;j++) for(int i=0;i<w;i++) buf[j][i] = (short)(n++);
audela_putbuf(session,1,AUDELA_TYPE_SHORT,w,h,buf);
int CALLMETHOD audela_getbuf(void *handle, int bufno, int type, int w, int h, void *buffer);
La fonction audela_getbuf permet de tranférer les valeurs du buffer numéro bufno de Audela vers un pointeur image*buffer (largeur=w, hauteur=h). Le buffer C est de type type :
Exemple :
const int w = 10, h = 10;
short buf[h][w]; int n=0;
audela_putbuf(session,1,AUDELA_TYPE_SHORT,w,h,buf);