(* Programme d'affichage des images du PetitTracer © François Fleuret 1992 *) (* $R- $S- $V- $N- $F- On veut que ça aille VITE !!!*) (* sur un 500 de base, du calme François, du calme... *) MODULE Afficheur; FROM SYSTEM IMPORT ADR; FROM Arguments IMPORT NumArgs, GetArg; FROM InOut IMPORT WriteString, WriteInt, WriteLn; FROM RealInOut IMPORT ReadReal, WriteReal; FROM Arts IMPORT TermProcedure, RemoveTermProc; FROM RandomNumber IMPORT Random; FROM DosTracer IMPORT FICHIER, OuvreFichierEntree, FermeFichier, RecupereScalaire, RecupereEntier; FROM SortieGraphique IMPORT LargeurImage, HauteurImage, EchelleCouleur, OuvreGraphique, AttendsSouris, FermeGraphique, AffichePoint; FROM MathTracer IMPORT SCALAIRE, Frac; VAR Flag, NomFichier: ARRAY[0..63] OF CHAR; Aleatoire: BOOLEAN; Longueur: INTEGER; LargeurVue, HauteurVue: INTEGER; FichierEntree: FICHIER; xpixel, ypixel: INTEGER; DeltaCouleur, Couleur, p: SCALAIRE; CouleurPoint: INTEGER; PROCEDURE Panique; BEGIN FermeGraphique(); FermeFichier(FichierEntree); END Panique; BEGIN WriteString("Afficheur du PetitTracer"); WriteLn; WriteString("© François Fleuret 1992."); WriteLn; WriteString("Cliquez dans la case de fermeture de la fenêtre "); WriteString("(en gris sombre :-) pour"); WriteLn; WriteString("quitter."); WriteLn; IF NumArgs()>=1 THEN Aleatoire:=FALSE; GetArg(2, Flag, Longueur); IF Flag[0]="a" THEN Aleatoire:=TRUE; END; GetArg(1, NomFichier, Longueur); TermProcedure(Panique); (* au cas où un abruti s'énerverait *) IF OuvreGraphique() THEN FichierEntree:=OuvreFichierEntree(ADR(NomFichier)); IF FichierEntree#NIL THEN LargeurVue:=RecupereEntier(FichierEntree); HauteurVue:=RecupereEntier(FichierEntree); WriteString("Largeur: "); WriteInt(2*LargeurVue, 0); WriteString(" Hauteur: "); WriteInt(2*HauteurVue, 0); WriteLn; FOR xpixel:=-LargeurVue TO LargeurVue-1 DO p:=100.0*REAL(xpixel+LargeurVue)/REAL(2*LargeurVue); WriteReal(p, 6, 2); WriteString(" % de l'image déja affiché"); WriteLn; FOR ypixel:=-HauteurVue TO HauteurVue-1 DO Couleur:=RecupereScalaire(FichierEntree); Couleur:=REAL(EchelleCouleur)*Couleur; IF Couleur<0.0 THEN CouleurPoint:=0; ELSE IF Couleur>=REAL(EchelleCouleur)-1.0 THEN CouleurPoint:=EchelleCouleur-1; ELSE IF Aleatoire THEN DeltaCouleur:=Frac(Couleur); IF Random()