typedef struct { unsigned short Version ; unsigned short StrSize ; void* Global ; void cdecl (*GEMMessageLoop)(void *msg) ; char RFU[116] ; } VAPI_HEADER ;
Champ | Type | Description |
Version | unsigned short | Du type 0x0101. Ce numéro est incrémenté à chaque évolution. Ce numéro de version est destiné à effectuer éventuellement des contrôles par le LDV. Si la version de VAPI ne contient pas les interfaces ou fonctions nécessaires, le LDV doit renvoyer le code d'erreur ELDV_BADVAPIVERSION |
StrSize | unsigned short | Taille de la structure VAPI |
Global | void * | Pointeur sur le tableau global (fourni par l'AES) de VISION. Ce tableau permet au LDV d'utiliser ensuite MT_AES. Pour plus de détails, consultez la documentation des LDG. Le type est void * et non pas int * pour ne pas risquer de rentrer en conflit avec le compilateur utilisé (int a une taille de 16 bits sous PURE C et 32 bits sous GCC). Il appartient donc au programmeur de LDV de "caster" ce pointeur vers le type entier 16 bits convenant au compilateur. |
GEMMessageLoop | void cdecl (*)(void *) | Pointeur sur la fonction de boucle de messages GEM de VISION. Cela permet au LDV, s'il utilise l'AES, de filtrer parmi les messages qu'il reçoit, ceux qui lui sont destinés et ceux destinés à VISION. Comme le LDV est lancé par VISION, c'est lui qui reçoit les messages destinés à VISION et devrait donc les renvoyer vers VISION au travers de cette fonction. Cela est surtout utile pour les messages de type Redraw, sinon les fenêtres de VISION ne seront plus dessinées pendant que le LDV a la main. Le paramètre msg est de type void * et non pas int * pour la même raison que précédemment. |
RFU | 116 octets | Pour usage futur. Ne pas toucher ! |
typedef struct { VAPI_HEADER Header ; /* Progress Interface */ .... /* Raster Interface */ ... /* More interfaces to come ! */ } VAPI ;
La description brute de cette structure ne présente que peu d'intérêt, voyez plutôt la liste des fonctions disponibles.
typedef struct { unsigned char *red ; unsigned char *green ; unsigned char *blue ; void *pt_img ; long nb_pts ; } REMAP_COLORS ;
Un pointeur sur une telle structure doit être passé aux
fonctions RaTCxxRemapColors.
red, green et blue pointent sur un tableau définisant les
valeurs des composantes élémentaires.
pt_img pointe sur le premier pixel à modifier
nb_pts est le nombre de points à partir de pt_img à modifier
suivant les tableaux red, green et blue.
Ces fonctions sont directement accessibles au travers du
pointeur vapi interne aux LDV, il suffit d'appeler ainsi les
fonctions désirées:
Vapi->NomDeLaFonction( ListeDesParamètres ) ;
N'oubliez pas de tester la valeur de retour si la fonction est
suceptible d'en renvoyer une !
Les fonctions sont regroupées en interfaces dans les chapitres suivants. Afin de retrouver facilement l'interface d'appartenance de fonctions, tous les noms de fonctions du même groupe commencent par les mêmes 2 lettres (par exemple "Pr" pour les fonctions du groupe de progression).