/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S R E L A T I V E S A L A M A R C H E A L E A T O I R E : */ /* */ /* */ /* Author of '$xrk/rdn_walk.31$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1997??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A C C E S A U N A L B U M : */ /* */ /*************************************************************************************************************************************/ #define INVERSER_L_ORDRE_DES_COUPES_DANS_ACCES_ALBUM \ VRAI #define NE_PAS_INVERSER_L_ORDRE_DES_COUPES_DANS_ACCES_ALBUM \ NOTL(INVERSER_L_ORDRE_DES_COUPES_DANS_ACCES_ALBUM) /* Pour l'initialisation de l'indicateur logique 'inverser' de 'ACCES_ALBUM(...)'. */ #define AUTORISER_LES_SEQUENCES_INCOMPLETES_DANS_UN_ALBUM \ AUTORISE #define NE_PAS_AUTORISER_LES_SEQUENCES_INCOMPLETES_DANS_UN_ALBUM \ NOTL(AUTORISER_LES_SEQUENCES_INCOMPLETES_DANS_UN_ALBUM) /* Pour l'initialisation de l'indicateur logique 'incomplet' de 'ACCES_ALBUM(...)'. */ #define NUMERO_DE_LA_COUPE(premiere_coupe,inverser) \ COND(IL_NE_FAUT_PAS(inverser) \ ,numero_de_la_coupe \ ,INVX(numero_de_la_coupe,premiere_coupe,LSTX(premiere_coupe,NBRE(Zmin,Zmax))) \ ) \ /* Fonction de calcul de la coupe courante. */ #define editer_les_messages_d_erreur_de_lecture_des_fichiers \ files_____editer_les_messages_d_erreur_de_lecture_des_fichiers \ /* Afin de raccourcir la longueur d'une ligne a suivre... */ #define ACCES_ALBUM(utiliser_champ,champ,nom_champ,nom_postfixe,nombre_chiffres,wait,incomplet,premiere_coupe,pas_coupes,inverser,v0) \ Bblock \ Test(IL_FAUT(utiliser_champ)) \ Bblock \ DEFV(Int,INIT(numero_de_la_coupe,premiere_coupe)); \ /* Numero de la coupe courante. */ \ \ begin_fuite \ Bblock \ Test(IFEQ_chaine(nom_champ,NOM_PIPE)) \ Bblock \ CALS(Iinitialisation(PAGE(champ,Z),v0)); \ /* Cas ou il n'y a pas d'images a lire, on force la valeur initiale 'v0'... */ \ Eblock \ ATes \ Bblock \ /* Cas ou il y a des images a lire : */ \ DEFV(CHAR,INIT(POINTERc(nom_d_une_coupe),NOM_UNDEF)); \ /* Nom courant des coupes. */ \ \ EGAL(nom_d_une_coupe \ ,COND(IFEQ_chaine(nom_postfixe,NOM_UNDEF_VIDE) \ ,chain_Aconcaten2_sauf_nom_pipe(nom_champ \ ,chain_numero(NUMERO_DE_LA_COUPE(premiere_coupe,inverser) \ ,nombre_chiffres \ ) \ ) \ ,chain_Aconcaten3_sauf_nom_pipe(nom_champ \ ,chain_numero(NUMERO_DE_LA_COUPE(premiere_coupe,inverser) \ ,nombre_chiffres \ ) \ ,nom_postfixe \ ) \ ) \ ); \ \ Test(IFET(EST_AUTORISE(incomplet) \ ,IL_Y_A_ERREUR(CODE_ERROR(Itest_fichier(nom_d_une_coupe))) \ ) \ ) \ Bblock \ CALS(Iinitialisation(PAGE(champ,Z),v0)); \ /* Cas ou il n'y a pas d'images a lire, on force la valeur initiale 'v0'... */ \ Eblock \ ATes \ Bblock \ Test(IL_FAUT(wait)) \ Bblock \ Tant(IL_Y_A_ERREUR(CODE_ERROR(Iload_image(PAGE(champ,Z),nom_d_une_coupe)))) \ Bblock \ Eblock \ ETan \ Eblock \ ATes \ Bblock \ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(PAGE(champ,Z),nom_d_une_coupe)))) \ Bblock \ Eblock \ ATes \ Bblock \ gTest__CODE_ERREUR__ERREUR07 \ (BLOC(Bblock \ PRINT_ATTENTION("la fin de flot a ete rencontree"); \ Eblock \ ) \ ,BLOC(Bblock \ Test(IL_FAUT(editer_les_messages_d_erreur_de_lecture_des_fichiers)) \ Bblock \ PRINT_ERREUR("le fichier n'existe pas ou n'est pas de type 'image'"); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ ) \ ); \ Eblock \ ETes \ Eblock \ ETes \ Eblock \ ETes \ \ CALZ_FreCC(nom_d_une_coupe); \ Eblock \ ETes \ \ INCR(numero_de_la_coupe,pas_coupes); \ /* Numero de l'image suivante a recuperer... */ \ Eblock \ end_fuite \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Procedure de recuperation d'un album. */