DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦a4c112be2⟧ Ada Source

    Length: 9216 (0x2400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Repaint_Title, seg_00539d, separate Puz_Main

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



separate (Puz_Main)  
procedure Repaint_Title (Method : Title_Method) is  
    Twidth        : S_Long;  
    Theight       : S_Long;  
    Box_X         : S_Long;  
    Box_Y         : S_Long;  
    I             : S_Long;  
    J             : S_Long;  
    Start_Color   : S_Natural;  
    Color2        : S_Natural;  
    Tiny_Box_Size : S_Long;  
    Tx            : S_Long;  
    Ty            : S_Long;  
begin

----applications painting their own title is out of style,
--  so don't just leave it there;

    Tiny_Box_Size := 5;  
    Twidth        := Puzzle_Win_Info.Width * 3 / 4;  
    Tx            := (Puzzle_Win_Info.Width - Twidth) / 2;  
    Text_X_Start  := Tx;

    if Method = Title_Text then  
        Twidth  := S_Long (X_Text_Width (Title_Font_Info, "Puzzle"));  
        Theight := S_Long (Title_Font_Info.Ascent + Title_Font_Info.Descent);  
        Tx      := (Puzzle_Win_Info.Width - Twidth) / 2;  
        Ty      := S_Long ((Title_Win_Height - Theight) / 2 +  
                           S_Long (Title_Font_Info.Ascent));

        X_Set_Font (Dpy, Gc, Title_Font_Info.Font_Id);  
        X_Draw_String (Dpy, Title_Window.Drawable, Gc,  
                       S_Short (Tx), S_Short (Ty), "Puzzle");  
        X_Flush (Dpy);

    elsif Method = Title_Tiles then  
        Start_Color := 0;  
        I           := 0;  
        while I < Title_Win_Height loop  
            Color2 := Start_Color;  
            J      := 0;  
            while J < Twidth loop  
                Rect_Set (Title_Window, J + Text_X_Start, I, Tiny_Box_Size,  
                          Tiny_Box_Size, X_Pixel (Color2 rem 2));  
                J      := J + Tiny_Box_Size;  
                Color2 := Color2 + 1;  
            end loop;  
            I           := I + Tiny_Box_Size;  
            Start_Color := Start_Color + 1;  
        end loop;

    else
        -- method = TITLE_ANIMATED
        declare  
            Tiles_High : S_Long :=  
               (Title_Win_Height + Tiny_Box_Size - 1) / Tiny_Box_Size;  
            Tiles_Wide : S_Long := (Twidth + Tiny_Box_Size - 1) / Tiny_Box_Size;  
            Num_Tiles  : S_Long := Tiles_High * Tiles_Wide;  
            Color_Val  : X_Pixel_Array (0 .. S_Natural (Num_Tiles) - 1);  
            Xloc       : S_Short_Array (0 .. S_Natural (Num_Tiles) - 1);  
            Yloc       : S_Short_Array (0 .. S_Natural (Num_Tiles) - 1);  
            Permute    : U_Short_Array (0 .. S_Natural (Num_Tiles) - 1);  
            Tmp        : S_Long;  
            Swap_With  : S_Natural;  
            Counter    : S_Natural;  
        begin

            for I in 0 .. Num_Tiles - 1 loop  
                Permute (S_Natural (I)) := U_Short (I);  
            end loop;  
            for I in reverse 2 .. Num_Tiles - 1 loop  
                Swap_With               := Random rem S_Natural (I);  
                Tmp                     := S_Long (Permute (Swap_With));  
                Permute (Swap_With)     := Permute (S_Natural (I));  
                Permute (S_Natural (I)) := U_Short (Tmp);  
            end loop;

            Counter     := 0;  
            Start_Color := 0;  
            I           := 0;  
            while I < Title_Win_Height loop  
                Color2 := Start_Color;  
                J      := 0;  
                while J < Twidth loop  
                    Color_Val (Counter) := X_Pixel (Color2 rem 2);  
                    Xloc (Counter)      := S_Short (J + Text_X_Start);  
                    Yloc (Counter)      := S_Short (I);  
                    Counter             := Counter + 1;  
                    J                   := J + Tiny_Box_Size;  
                    Color2              := Color2 + 1;  
                end loop;  
                I           := I + Tiny_Box_Size;  
                Start_Color := Start_Color + 1;  
            end loop;

            for I in 0 .. Num_Tiles - 1 loop  
                J := S_Long (Permute (S_Natural (I)));  
                Rect_Set (Title_Window, S_Long (Xloc (S_Natural (J))),  
                          S_Long (Yloc (S_Natural (J))), Tiny_Box_Size,  
                          Tiny_Box_Size, Color_Val (S_Natural (J)));  
                X_Flush (Dpy);  
            end loop;

        end;

    end if;

end Repaint_Title;  

E3 Meta Data

    nblk1=8
    nid=0
    hdr6=10
        [0x00] rec0=1d rec1=00 rec2=01 rec3=048
        [0x01] rec0=03 rec1=00 rec2=08 rec3=02e
        [0x02] rec0=1a rec1=00 rec2=02 rec3=010
        [0x03] rec0=00 rec1=00 rec2=07 rec3=03c
        [0x04] rec0=12 rec1=00 rec2=03 rec3=060
        [0x05] rec0=03 rec1=00 rec2=06 rec3=03a
        [0x06] rec0=15 rec1=00 rec2=04 rec3=052
        [0x07] rec0=0a rec1=00 rec2=05 rec3=001
    tail 0x21500a04281978957d2ee 0x42a00088462063203