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 - downloadIndex: ┃ B T ┃
Length: 3355 (0xd1b) 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_006 is List : X_Point_List; procedure Generate_List (Dpy : X_Display; Width : S_Short; Height : S_Short) is Count : S_Long := Dpy.Poly_Point_Limit; begin Count := Count - Count mod 4; List := new X_Point_Array (1 .. Count); for I in 1 .. Count loop List (I).X := Random_X (Width); List (I).Y := Random_Y (Height - 15) + 15; 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; I : S_Natural; J : S_Natural; begin I := List'First; while I < List'Last loop if List'Last - I + 1 >= Per_Message then J := I + Per_Message - 1; else J := List'Last; end if; if J - I + 1 < 2 then exit; end if; X_Fill_Polygon (Dpy, Window.Drawable, Gc, List (I .. J), Complex, Coord_Mode_Origin); Flush := Flush + 1; if Flush >= Per_Message then X_Flush (Dpy); Flush := 0; end if; I := J + 1; 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_Point_List then Generate_List (Dpy, Width, Height); end if; case State is when 1 => X_Fill_Polygon (Dpy, Window.Drawable, Gc, List (List'First .. List'First + List'Length / 2 - 1), Complex, Coord_Mode_Origin); when 2 => X_Fill_Polygon (Dpy, Window.Drawable, Gc, List.all, Complex, Coord_Mode_Origin); when 3 => Draw (Dpy, Window, Gc, Font, Width, Height, 4); when 4 => Draw (Dpy, Window, Gc, Font, Width, Height, 8); when 5 => Draw (Dpy, Window, Gc, Font, Width, Height, Dpy.Poly_Point_Limit / 2); when others => Free_X_Point_List (List); State := 0; end case; end Do_Graphics; procedure Test is new Gr_State_Test (Do_Graphics); begin Test; end Gr_006;