home *** CD-ROM | disk | FTP | other *** search
- MODULE Sparks;
-
- IMPORT g := Graphics,
- I := Intuition,
- sys := SYSTEM;
-
- (* $OvflChk- $RangeChk- $StackChk- $NilChk- $ReturnChk- $CaseChk- *)
-
- CONST
- maxLines = 64;
- erase = 0;
- x = 0;
- y = 1;
- start = 0;
- end = 1;
-
- TYPE
- point = ARRAY 2 OF INTEGER; (* x,y *)
- line = ARRAY 2 OF point; (* start,end *)
-
- VAR
- i: INTEGER;
- ns: I.NewScreen;
- screen: I.ScreenPtr;
- Ciapra[0BFE001H]: SHORTSET;
- lines: ARRAY maxLines OF line;
- l: line;
- cl: INTEGER;
- color,coldir: INTEGER;
- deltas: line;
-
- TYPE
- ColArr = ARRAY 32 OF INTEGER;
-
- CONST
- colors = ColArr(0000H,0F00H,0F30H,0F60H,0F90H,0FC0H,0FF0H,0CF0H,
- 09F0H,06F0H,03F0H,00F0H,00F3H,00F6H,00F9H,00FCH,
- 00FFH,00CFH,009FH,006FH,003FH,000FH,030FH,060FH,
- 090FH,0C0FH,0F0FH,0F3FH,0F6FH,0F9FH,0FCFH,0FFFH);
-
-
- PROCEDURE DrawLine(VAR l: line; color: INTEGER);
-
- VAR rp: g.RastPortPtr;
-
- BEGIN
- rp := sys.ADR(screen.rastPort);
- g.SetAPen(rp,color);
- g.SetDrMd(rp,g.jam1);
- g.Move(rp,l[start,x],l[start,y]);
- g.Draw(rp,l[end, x],l[end, y]);
- END DrawLine;
-
-
- PROCEDURE Adjust(VAR c,dc: INTEGER; max: INTEGER);
-
- VAR
- i: INTEGER;
- VHPosR[0DFF006H]: SET;
-
- BEGIN
- i := dc - 8;
- INC(c,i);
- IF (c<0) OR (c>=max) THEN
- DEC(c,i);
- i := sys.VAL(INTEGER,VHPosR*{0..3});
- IF i>7 THEN INC(i,1) END;
- dc := i;
- END;
- END Adjust;
-
-
-
- BEGIN
-
- ns.width := g.gfx.normalDisplayColumns DIV 2;
- ns.height := -1;
- ns.depth := 5;
- ns.type := I.customScreen+{I.screenQuiet};
- screen := I.OpenScreen(ns);
-
- IF screen#NIL THEN
-
- g.LoadRGB4(sys.ADR(screen.viewPort),colors,32);
-
- color:=1; coldir := 1;
-
- REPEAT
-
- DrawLine(lines[cl],erase);
-
- INC(color,coldir);
- CASE color OF 1,31: coldir := -coldir ELSE END;
-
- i := start;
- REPEAT
- Adjust(l[i,x],deltas[i,x],screen.width);
- Adjust(l[i,y],deltas[i,y],screen.height);
- INC(i);
- UNTIL i>end;
-
- DrawLine(l,color);
- lines[cl] := l;
-
- INC(cl);
- IF cl=maxLines THEN cl := 0 END;
-
- UNTIL NOT(6 IN Ciapra);
-
- I.OldCloseScreen(screen);
-
- END
-
- END Sparks.
-
-
-