|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 3249 (0xcb1)
Types: TextFile
Names: »B«
└─⟦85b835f43⟧ Bits:30000549 8mm tape, Rational 1000, Xlib rev 6.00
└─⟦0c20f784e⟧ »DATA«
└─⟦1abbe589f⟧
└─⟦49e7f20b9⟧
└─⟦this⟧
with Gr_Random;
use Gr_Random;
with Gr_State_Test;
with Test_Io;
use Test_Io;
with Xlbt_Arithmetic;
use Xlbt_Arithmetic;
with Xlbt_Basic;
use Xlbt_Basic;
with Xlbt_Font;
use Xlbt_Font;
with Xlbt_Graphics;
use Xlbt_Graphics;
with Xlbp_Event;
use Xlbp_Event;
with Xlbp_Graphics;
use Xlbp_Graphics;
procedure Gr_008 is
List : X_Arc_List;
procedure Generate_List (Dpy : X_Display;
Width : S_Short;
Height : S_Short) is
Count : S_Long := Dpy.Poly_Arc_Limit;
A1 : S_Short;
A2 : S_Short;
begin
List := new X_Arc_Array (1 .. Count);
A1 := 45 * 64;
A2 := 135 * 64;
for I in 1 .. Count loop
List (I).X := Random_X (Width);
List (I).Y := Random_Y (Height - 15) + 15;
List (I).Width := Random_W (100);
List (I).Height := Random_H (100);
List (I).Angle1 := A1;
List (I).Angle2 := A2;
A1 := (A1 + 64) rem (360 * 64);
A2 := (A2 + 128) rem (360 * 64);
end loop;
end Generate_List;
procedure Draw (Dpy : X_Display;
Window : X_Window;
Gc : X_Gc;
Font : X_Font_Struct;
Width : S_Short;
Height : S_Short;
Per_Message : S_Natural) is
Flush : S_Natural := 0;
begin
for I in List'Range loop
X_Fill_Arc (Dpy, Window.Drawable, Gc, List (I).X,
List (I).Y, List (I).Width, List (I).Height,
List (I).Angle1, List (I).Angle2);
Flush := Flush + 1;
if Flush >= Per_Message then
X_Flush (Dpy);
Flush := 0;
end if;
end loop;
end Draw;
procedure Do_Graphics (Dpy : X_Display;
State : in out Natural;
Window : X_Window;
Gc : X_Gc;
Font : X_Font_Struct;
Width : S_Short;
Height : S_Short) is
begin
if List = None_X_Arc_List then
Generate_List (Dpy, Width, Height);
end if;
case State is
when 1 =>
X_Fill_Arcs (Dpy, Window.Drawable, Gc,
List (List'First .. List'First +
List'Length / 2 - 1));
when 2 =>
X_Fill_Arcs (Dpy, Window.Drawable, Gc, List.all);
when 3 =>
Draw (Dpy, Window, Gc, Font, Width, Height, 1);
when 4 =>
Draw (Dpy, Window, Gc, Font, Width, Height, 5);
when 5 =>
Draw (Dpy, Window, Gc, Font, Width, Height, S_Natural'Last);
when others =>
Free_X_Arc_List (List);
State := 0;
end case;
end Do_Graphics;
procedure Test is new Gr_State_Test (Do_Graphics);
begin
Test;
end Gr_008;