1 Program SystemedeFenetrage;
\r
3 (*****************************************************************************)
\r
4 (* premiere famille de classes : les classes graphiques *)
\r
5 (*****************************************************************************)
\r
9 Unit Windows : Ptr Class(father :windows,x1,y1,x2,y2 : integer);
\r
10 Close hauteur,largeur;
\r
11 Var lborder,cfond,cborder : integer,
\r
12 hauteur,largeur : integer,
\r
13 xpos,ypos,xmax,ymax : integer,
\r
15 save_map : arrayof integer;
\r
17 Unit Affiche : procedure;
\r
19 call father.rectanglef(x1,y1,x2,y2,cfond);
\r
22 Unit virtual rectangle : procedure(xx1,yy1,xx2,yy2,c :integer);
\r
24 if(xx1<x2 and xx1>x1 and yy1<y2 and yy2>y1)
\r
25 then call father.rectangle(xx1,yy1,xx2,yy2,c);
\r
29 Unit virtual rectanglef : procedure(xx1,yy1,xx2,yy2,c : integer);
\r
34 hauteur:=y2-y1-2*lborder;
\r
35 largeur:=x2-x1-2*lborder;
\r
38 Unit Bitmap : Windows Class;
\r
41 Unit Son : Windows Class;
\r
44 Unit Maine : Windows Class;
\r
47 Unit Dialogue : Son Class;
\r
50 Unit Catalogue : Dialogue Class;
\r
53 Unit Question : Dialogue Class;
\r
56 Unit Widgets : Ptr Class;
\r
59 Unit Menu : Widgets Class;
\r
62 Unit Menu_V : Menu Class;
\r
65 Unit Menu_H : Menu Class;
\r
68 Unit Bottons : Widgets Class;
\r
71 Unit Racc : Bottons Class;
\r
74 Unit Opt_list : Bottons Class;
\r
77 Unit Oneline : Opt_list Class;
\r
80 Unit Multiline : Opt_list Class;
\r
83 Unit Botton : Bottons Class;
\r
86 Unit Lift : Widgets Class;
\r
89 Unit Lift_V : Lift Class;
\r
92 Unit Lift_H : Lift Class;
\r
95 (*****************************************************************************)
\r
96 (* deuxieme famille de classes : les structures de donnees *)
\r
97 (*****************************************************************************)
\r
98 Unit Ensemble : CLass;
\r
101 Unit Queue : Ensemble Class;
\r
104 Unit Ofpriority : Queue Class;
\r
107 Unit ListD : Ensemble Class;
\r
110 Unit Clic : ListD Class;
\r
113 Unit Bot : ListD Class;
\r
116 Unit Key : ListD Class;
\r
119 Unit Win : ListD Class;
\r
122 Unit Stack : Ensemble Class;
\r
126 (*****************************************************************************)
\r
127 (* Famille de process *)
\r
128 (*****************************************************************************)
\r
129 Unit Applications : process (node : integer);
\r
132 Unit Gest_event : mouse process (node : integer,gest : gest_wind);
\r
134 Unit ready : procedure;
\r
137 Unit event : function(output v,h,p,l,r,c : integer) : boolean;
\r
139 result:=getpress(v,h,p,l,r,c);
\r
143 v,h,p,l,r,c : integer;
\r
150 if(event(v,h,p,l,r,c))
\r
151 then call gest.event(v,h,p,l,r,c);
\r
156 Unit Gest_wind : iiuwgraph process(node,x1,y1,x2,y2 : integer,gest:gest_event);
\r
158 v,p,h,l,r,c : integer,
\r
162 Unit getinfo : procedure (g : gest_event);
\r
168 Unit event : procedure (input lv,lh,lp,ll,lr,lc : integer);
\r
170 v:=lv; h:=lh; p:=lp; l:=ll; r:=lr; c:=lc;
\r
173 Unit traitement : procedure;
\r
175 if((h=164 and l=27) or c=3)
\r
178 call patern(80,25,130,100,0,1);
\r
179 call track(40,10,4,v);
\r
180 call track(140,10,4,p);
\r
181 call track(80,30,4,h);
\r
182 call track(80,50,4,l);
\r
183 call track(80,70,4,r);
\r
184 call track(80,90,4,c);
\r
187 Unit fin : procedure;
\r
190 writeln("on ferme");
\r
194 Unit graph : windows class;
\r
196 Unit virtual rectangle : procedure (x1,y1,x2,y2,c : integer);
\r
198 call patern(x1,y1,x2,y2,c,0);
\r
201 Unit virtual rectanglef : procedure (x1,y1,x2,y2,c : integer);
\r
203 call patern(x1,y1,x2,y2,c,1);
\r
210 j:=new graph(none,0,0,0,0);
\r
211 w:=new windows(j,x1,y1,x2,y2);
\r
217 call outstring(10,40,"Windows",0,10);
\r
225 Unit Application : Applications process;
\r
229 (*****************************************************************************)
\r
230 (* P r o g r a m m e P r i n c i p a l *)
\r
231 (*****************************************************************************)
\r
236 when memerror : call endrun;
\r
237 when syserror : call endrun;
\r
240 G1:=new Gest_wind(0,0,0,640,480,none);
\r
241 G2:=new Gest_event(0,G1);
\r
244 call G1.getinfo(G2);
\r