|  | Documentation VISION (LDV) |  | Dernière mise à jour : 06/05/01
Télécharger la doc | 3. D E S C R I P T I O N |

Pour résumer, voici ce qui se passe entre VISION et un LDV :

0. Init (fait une seule fois au premier appel de l'utilisateur mettant en oeuvre les LDV). VISION charge la fonction GetLDVCapabilities de chaque LDV, appelle la fonction et mémorise les capacités de chaque LDV afin de limiter les futurs accès disque, puis décharge chaque LDV

1. VISION charge le LDV

2. Si spécifiée, VISION appelle la fonction GetParams

3. VISION appelle la fonction PreRun

4. VISION appelle la fonction Run (ou Preview)

5. VISION décharge le LDV

3.1 Capacités du LDV

Prototype | LDV_INFOS * cdecl GetLDVCapabilities(VAPI *vapi)
Paramètres | [IN] vapi : pointeur sur l'interface VAPI fournie par VISION. Ce pointeur doit être mémorisé pour un usage futur.
Retour | Un pointeur sur la structure LDV_INFOS stockée dans le LDV (le squelette déclare la variable LdvInfos de type LDV_INFOS)
Responsabilités | Cette fonction est entièrement ecrie dans le squelette, le travail à faire réside dans le remplissage de la structure de type LDV_INFOS du squelette LDV.

3.2 Fonction PreRun

Prototype | LDV_STATUS cdecl PreRun(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
Paramètres | [IN] in : pointeur sur la structure LDV_IMAGE décrivant l'image de VISION [IN / OUT] params : pointeur sur une structure LDV_PARAMS indiquant la zone à modifier
Retour | Un code de succès ou d'erreur

Responsabilités

Doit signaler à VISION la mémoire à allouer et la partie à sauvegarder pour la fonction UNDO :

1. Si le LDV en a besoin (LDVF_OPINPLACE non défini dans la structure LDV_CAPS), out->Raster.fd_w et out->Raster.fd_h doivent contenir la taille de l'image à allouer pour la destination. C'est cette image qui sera ensuite affichée par VISION dans la fenêtre associée.
2. Au besoin, indiquer dans les champs x1, x2, y1 et y2 de la structure LDV_PARAMS, la zone à sauvegarde dans le buffer UNDO de l'image afin de pouvoir revenir en arrière. Avant l'appel, VISION positionne ces champs en fonction de la sélection de l'utilisateur (bloc ou image entière)

Par défaut :

1. VISION n'allouera aucune mémoire pour le LDV et supposera que la transformation se fera "sur place"
2. VISION sauvegardera dans le buffer UNDO la partie précisée par champs x1, x2, y1 et y2 de la structure LDV_PARAMS (image entière ou sélection si un bloc est sélectionné)

3.3 Fonction Run

Prototype | LDV_STATUS cdecl Run(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
Paramètres | [IN] in : pointeur sur la structure LDV_IMAGE décrivant l'image source de VISION [IN] params : pointeur sur une structure LDV_PARAMS indiquant la zone à modifier [OUT] out : pointeur sur l'image destination, allouée par VISION grâce à un appel précédent à PreRun
Retour | Un code de succès ou d'erreur

Responsabilités / Remarques

Doit effectuer l'opération prévue pour le LDV.
VISION choisit automatiquement le format le plus adapté en essayant de minimiser la mémoire et en tenant compte du ou des formats gérés par le LDV (sachant que le plus économe est LDVF_SPECFORMAT)
Le LDV peut modifier une autre zone que celle donnée dans les champs x1, y1, x2 et y2 de params à condition de l'avoir signalé auparavant par la fonction PreRun
Ne JAMAIS allouer dans le LDV de la mémoire à destination de VISION, car celle-ci sera libérée dès que VISION déchargera le LDV (même si vous ne le faites pas explicitement, le compilateur ou le système s'en chargera).Par contre, rien ne vous interdit d'allouer de la mémoire à usage interne pour effectuer cette fonction, n'oubliez pas de la libérer !
Depuis la version 1.02 de VAPI, on peut maintenant annuler le traitement en cours depuis l'interface utilisateur (il suffit de fermer la fenêtre de progression ou d'appuyer sur Control-C), pour cela :
* Ajouter LDVF_SUPPORTCANCEL dans le champ Flags de la structure LDV_CAPS présente dans la variable LdvInfos du LDV
* Tester la valeur renvoyée par la fonction PrSetProgEx, si elle est non nulle, l'annulation est demandée
* Sortir du traitement du LDV (ne pas oublier de libérer l'éventuelle mémoire allouée en interne)
* Sortir de la fonction Run en renvoyant ELDV_CANCELLED
Notes :
Dès que la fonction PrSetProgEx a retourné une valeur non nulle, la fenêtre de progression est détruite, la demande d'annulation n'est donc pas seulement une demande mais une obligation !
Ne vous souciez pas de la libération de l'image destination ou de restaurer l'image source, VISION gère cela au travers du Undo.

3.4 Fonction Preview

Prototype | LDV_STATUS cdecl Preview(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out)
Paramètres | Identiques à ceux de la fonction Run
Retour | Un code de succès ou d'erreur

Responsabilités / Remarques

Cette fonction est identique à la fonction Run, sauf qu'elle opère sur des images plus petites (112 x 112 en moyenne). Si la fonction Run est suffisamment rapide pour afficher le résultat en moins de 1 seconde, la fonction Preview devrait simplement l'appeler. Dans le cas contraire, on peut se permettre certaines approximations ou pré-calculs pour revenir en deça de la seconde.

3.5 Fonction GetParams

Prototype | LDV_STATUS cdecl GetParams(LDV_IMAGE *img, LDV_PARAMS *params, char *path)
Paramètres | [IN] img : pointeur sur la structure LDV_IMAGE décrivant l'image source de VISION [IN] params : pointeur sur une structure LDV_PARAMS indiquant la zone à modifier [IN] path: chemin de chargement du LDV
Retour | ELDV_NOERROR ou ELDV_CANCELLED

Responsabilités / Remarques

Cette fonction est optionnelle. Si votre LDV l'exporte, VISION l'appellera en lieu et place de sa fonction interne de saisie des paramètres.
Si ELDV_NOERROR est renvoyé, VISION appellera ensuite la fonction Run
Si ELDV_CANCELLED est renvoyé, la saisie est annulée (comme si vous aviez annulé la saisie au travers du formulaire standard proposé par VISION).
Le paramètre params devient transparent pour VISION, il sera renvoyé sans changement lors de l'appel à la fonction Run. Votre LDV peut s'en servir pour stocker ses paramètres ou peut choisir de les mémoriser en interne.
path permet de récupérer le fichier INI associé pour la description multi-langue des paramètres. Vous pouvez au choix utiliser un fichier INI (ou tout autre, c'est maintenant vous qui êtes maître). Si vous voulez gérer la description multi-langues, n'oubliez pas de scruter les répertoires de langues à partir de path.

3.6 Le fichier INI associé

Le fichier INI associé à un LDV a deux buts:

1. Rassembler toutes les informations relatives à la langue comme son nom et sa description
2. Définir le paramétrage du LDV

3.6.1 Informations sur la langue

Les LDV sont multi-langues, c'est à dire que si vous avez défini une langue dans les préférences, VISION est capable d'exploiter cette information également pour les LDV, si l'information est disponible. Dans le répertoire LDV de VISION, on trouve les .LDV ainsi que les .INI associés. Par exemple, le fichier INVERT.INI est associé au fichier INVERT.LDV.Dans ce dossier LDV, doivent figurer les .INI les plus standards, c'est à dire en langue anglaise. Si par exemple, vous avez défini la langue "Français" dans les préférences de VISION, il suffit de créer le sous-répertoire "Français" dans le dossier LDV, et d'y inclure le fichier INVERT.INI traduit en français pour que VISION aille le chercher à la place de son équivalent directement sous le répertoire LDV.

Dans la section [Informations], VISION attend les clés suivantes:

Nom de la clé | Taille | Description
ShortName | 15 caractères max. | Nom court du module apparaissant dans la liste des modules à sélectionner
LongName | 31 caractères max. | Nom apparaissant lorsque on demande des détails sur ce LDV
Description | 79 caractères max. | Description complète du module sur 3 lignes

3.6.2 Paramétrage du LDV

VISION permet la saisie de jusqu'à 4 paramètres pour un LDV. Ces paramètres sont saisis à l'aide d'ascenseurs GEM apparaissant ou non suivant le nombre de paramètres que le LDV accepte en entrée.
Pour que VISION accepte d'afficher un paramètre,une section nommée [ParameterN] (1 <= N <= 4) doit être créee avec les clés suivantes:

Nom de la clé | Description
Name | Nom de ce paramètre (15 caractères max.). Si le nom est absent, ce paramètre n'apparaitra pas
Type | 1 : entier 16 bits (-32768 --> +32767) 2 : float (non géré actuellement)
MinValue | Valeur minimale admissible pour ce paramètre
DefautValue | Valeur par défaut présenté avec l'interface de VISION
MaxValue | Valeur maximale admissible pour ce paramètre

Si cela ne peut convenir au LDV que vous développez, vous pouvez spécifier une fonction de saisie spécifique avec la fonction GetParams.

|  | Documentation VISION (LDV) |  | Dernière mise à jour : 06/05/01
Télécharger la doc | 3. D E S C R I P T I O N |