Audela
Audela

Les extensions standard de Audela

Les extensions standard de 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.

archi

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.

1. Extensions standard

1.1. Libaudela : les objets de Audela

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 :

1.2. Libmc : mécanique céleste

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.

1.3. Libgzip : compression de fichiers

Libgzip permet de compresser ou de décompresser un ou plusieurs fichiers au format .gz.

1.4. Librgb : imagerie couleur

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.

1.5. Libjm : photométrie

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.

1.6. Libgsltcl : calcul scientifique

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.

1.7. Libsext : sextractor

Libsext permet d'appeler l'exécutable Sextractor. C'est un logiciel spécialisé dans la détection d'étoiles dans une image.

1.8. Libgs : logiciel Guide

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).

2. Extensions libcam

Les extensions de pilotage de caméras sont décrites dans une page dédiée.

3. Extensions libtel

Les extensions de pilotage de montures de télescopes sont décrites dans une page dédiée.

4. Extensions personnelles

4.1. DP : communication réseau haut niveau

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/ .

4.2. BLT : fonctions graphiques

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.

4.3. ddp : communication logiciels sous Windows

Cette extension permet de communiquer entre logiciels sous Windows en utilisant le protocole DDP.

4.4. com : objets com de Windows

Cette extension permet d'utiliser les objets com sous Windows.

5. Utiliser Audela depuis un autre logiciel

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);

| English Version | Mailing List Audela | ©2004 Audela | Design TechnoSpeak