#ifndef __LDVCOM #define __LDVCOM #ifndef __LDV #include "ldv\ldv.h" #endif typedef struct { char *ShortName ; /* Nom court du module (15 carac. max) */ char *LongName ; /* Nom long du module (31 carac. max) */ char *Description ; /* Description du module (79 carac. max) */ /* Definition des parametres pouvant etre applique */ LDV_DEF_PARAM Params[LDVNBMAX_PARAMETERS] ; } LDV_INI_SPEC ; /* Interface pour la modification d'image */ typedef struct { /* Permet a VISION d'allouer les ressources */ /* Necessaires a la fonction assuree par le LDV */ /* Renvoyer dans out->Raster les dimensions */ /* Voulues et/ou renseigner le champ out->Palette.NbColors */ /* Renvoyer dans params, la totalite de la zone a envoyer */ /* Dans le Undo */ LDV_STATUS cdecl (*PreRun)(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ; /* Effectue la fonction du LDV */ /* VISION a deja alloue la memoire voulue grace a la fonction precedente */ /* NE SURTOUT PAS ALLOUER OU LIBERER DE LA MEMOIRE QUI SERA UTILISEE PAR */ /* VISION ! */ LDV_STATUS cdecl (*Run)(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ; /* Identique a la fonction precedente, mais en mode Preview */ LDV_STATUS cdecl (*Preview)(LDV_IMAGE *in, LDV_PARAMS *params, LDV_IMAGE *out) ; /* Optionnel : Si cette fonction est presente, VISION l'appelera a la place */ /* de la fonction interne pour parametrer le module */ /* Si la valeur de retour est differente de ELDV_NOERROR, VISION consderera */ /* Que la saisie a ete annulee (comme si vous aviez appuye sur "Cancel" dans */ /* Le formulaire standard de saisie. */ LDV_STATUS cdecl (*GetParams)(LDV_IMAGE *img, LDV_PARAMS *params, char *path) ; } ILDVModifImg ; typedef struct { long RFU[10] ; } ILDVLoadImg ; typedef struct { long RFU[10] ; } ILDVSaveImg ; typedef struct { LDG *Ldg ; /* Le module LDG */ char *FileName ; /* Nom uniquement, sans le chemin */ short Version ; /* Idem que Ldg->vers */ LDV_INFOS Infos ; /* Informations sur ce module */ LDV_INI_SPEC IniSpec ; /* Specifique au .INI */ /* Indique a VISION ce que ce LDV sait faire */ /* VISION fournit son interface de programmation vapi */ LDV_INFOS * cdecl (*GetLDVCapabilities)(VAPI *vapi) ; int NbReferences ; /* Nombre de references en cours sur ce module */ ILDVModifImg *IModifImg ; /* Interface pour le type TLDV_MODIFYIMG */ ILDVLoadImg *ILoadImg ; /* Interface pour le type TLDV_LOADIMG */ ILDVSaveImg *ISaveImg ; /* Interface pour le type TLDV_SAVEIMG */ long RFUInterfaces[10] ; /* Interfaces de reserve */ } LDV_MODULE ; typedef struct { unsigned long prerun_ms ; unsigned long pre_ldv_ms ; unsigned long run_ms ; unsigned long post_ldv_ms ; unsigned long total_ms ; } LDV_PERF ; LDV_CAPS *LDVGetNPlanesCaps(LDV_MODULE *mod, int nplanes) ; LDV_MODULE *LDVGetModuleList(char *path, int *nb_ldv) ; void LDVFreeModuleList(LDV_MODULE *module_list) ; LDV_MODULE *GetLdvByLdg(LDV_MODULE *ldv_list, LDG *ldg) ; LDV_STATUS LDVAlloc(LDV_IMAGE *img) ; LDV_STATUS LDVDo(LDV_MODULE *ldv, LDV_PARAMS *ldv_params, LDV_IMAGE *ldv_img, int preview, LDV_PERF *perfs) ; LDV_STATUS LDVLoadFunctions(char *path, LDV_MODULE *mod) ; void LDVUnloadFunctions(LDV_MODULE *mod) ; #endif