VAPI (VISION's Application
Programmer Interface) est une partie de VISION
destinée à vous aider dans le développement des LDV. Vous
devez bien vous douter qu'en interne VISION
utilise un tas de fonctions permettant la gestion des images
(conversions bit-plan <--> index TOS/VDI, manipulation de
rasters,...) ainsi que des fonctions d'interface utilisateur
(fenêtres de progression par exemple).
L'idée de VAPI est de rendre disponible aux LDV ces fonctions
jusqu'içi réservées au fonctionnement interne de VISION.
Pour un LDV, l'intérêt est double:
Bien entendu, VISION dispose de
pleins de fonctions (plus ou moins aisées et élégantes...), il
s'agit donc de faire un choix pour savoir lesquelles exporter.
D'autant plus que l'on peut imaginer que VISION
exporte aussi ses données comme le catalogue, le Browser
d'images, etc...
Etant donné que cela prend quand même pas mal de temps à
concervoir et à réaliser, je ferais en sorte que VISION
exporte tout d'abord quelques fonctions
"élémentaires", puis, si le succès grandit, d'autres
viendront.
Le kit de développement VAPI est identique à celui des LDV. Vous le trouverez ici.
Utiliser VAPI depuis un LDV est très simple : lorsque VISION appelle la fonction GetLDVCapabilities du LDV, il vous fournit un pointeur sur une structure de type VAPI. Sans entrer dans le détail, cette structure rassemble les informations suivantes:
Maintenant, pour utiliser une fonction de VAPI, c'est très simple, imaginez que vous vouliez initialiser le raster image destination fourni passé en paramètre dans la fonction Run, avec la couleur blanche (en bit-plans ou True Color), il vous suffit d'insérer la ligne suivante:
Vapi->RaImgWhite( &out->Raster ) ;
Cela suppose uniquement que vous avez récupéré le pointeur Vapi fourni par VISION au travers de GetLDVCapabilities (automatiquement fait par le squelette).
La liste de toutes des fonctions définies par l'interface VAPI sont disponibles ici. Désolé, mais toutes les interfaces et les noms de fonctions possèdent des noms en anglais !
Les interfaces regroupent des fonctions du même centre d'intérêt. Voici la liste (que j'espère non-exhaustive) des interfaces actuelles:
Progress Interface | Raster Interface | Configuration Interface | INI Interface |
MEM Interface | Logging Interface | Image Interface | File Interface |