1 (* Programme d'affichage des images du PetitTracer © François Fleuret 1992 *)
3 (* $R- $S- $V- $N- $F- On veut que ça aille VITE !!!*)
4 (* sur un 500 de base, du calme François, du calme... *)
8 FROM SYSTEM IMPORT ADR;
9 FROM Arguments IMPORT NumArgs, GetArg;
10 FROM InOut IMPORT WriteString, WriteInt, WriteLn;
11 FROM RealInOut IMPORT ReadReal, WriteReal;
12 FROM Arts IMPORT TermProcedure, RemoveTermProc;
13 FROM RandomNumber IMPORT Random;
15 FROM DosTracer IMPORT FICHIER, OuvreFichierEntree, FermeFichier,
16 RecupereScalaire, RecupereEntier;
17 FROM SortieGraphique IMPORT LargeurImage, HauteurImage, EchelleCouleur,
18 OuvreGraphique, AttendsSouris, FermeGraphique,
20 FROM MathTracer IMPORT SCALAIRE, Frac;
24 Flag, NomFichier: ARRAY[0..63] OF CHAR;
28 LargeurVue, HauteurVue: INTEGER;
29 FichierEntree: FICHIER;
30 xpixel, ypixel: INTEGER;
31 DeltaCouleur, Couleur, p: SCALAIRE;
32 CouleurPoint: INTEGER;
37 FermeFichier(FichierEntree);
42 WriteString("Afficheur du PetitTracer"); WriteLn;
43 WriteString("© François Fleuret 1992."); WriteLn;
44 WriteString("Cliquez dans la case de fermeture de la fenêtre ");
45 WriteString("(en gris sombre :-) pour"); WriteLn;
46 WriteString("quitter."); WriteLn;
51 GetArg(2, Flag, Longueur);
56 GetArg(1, NomFichier, Longueur);
57 TermProcedure(Panique); (* au cas où un abruti s'énerverait *)
59 IF OuvreGraphique() THEN
61 FichierEntree:=OuvreFichierEntree(ADR(NomFichier));
63 IF FichierEntree#NIL THEN
65 LargeurVue:=RecupereEntier(FichierEntree);
66 HauteurVue:=RecupereEntier(FichierEntree);
68 WriteString("Largeur: "); WriteInt(2*LargeurVue, 0);
69 WriteString(" Hauteur: "); WriteInt(2*HauteurVue, 0);
72 FOR xpixel:=-LargeurVue TO LargeurVue-1 DO
73 p:=100.0*REAL(xpixel+LargeurVue)/REAL(2*LargeurVue);
74 WriteReal(p, 6, 2); WriteString(" % de l'image déja affiché"); WriteLn;
75 FOR ypixel:=-HauteurVue TO HauteurVue-1 DO
77 Couleur:=RecupereScalaire(FichierEntree);
78 Couleur:=REAL(EchelleCouleur)*Couleur;
83 IF Couleur>=REAL(EchelleCouleur)-1.0 THEN
84 CouleurPoint:=EchelleCouleur-1;
87 DeltaCouleur:=Frac(Couleur);
88 IF Random()<DeltaCouleur THEN
89 CouleurPoint:=INTEGER(Couleur)+1;
91 CouleurPoint:=INTEGER(Couleur);
94 CouleurPoint:=INTEGER(Couleur);
98 AffichePoint(xpixel+LargeurImage/2, ypixel+HauteurImage/2, CouleurPoint);
102 WriteString("Impossible d'ouvrir le fichier !"); WriteLn;
105 WriteString("--- Image affichée ---"); WriteLn;
107 RemoveTermProc(Panique);
109 FermeFichier(FichierEntree);
113 WriteString("Impossible d'ouvrir l'écran et la fenêtre d'affichage !");
117 WriteString("USAGE: Afficheur nomfichier.rtr [a]"); WriteLn;