|
|
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: 9284 (0x2444)
Types: TextFile
Names: »B«
└─⟦85b835f43⟧ Bits:30000549 8mm tape, Rational 1000, Xlib rev 6.00
└─⟦0c20f784e⟧ »DATA«
└─⟦1abbe589f⟧
└─⟦306851c02⟧
└─⟦this⟧
separate (Puz_Main)
procedure Setup (Display : X_String; Geometry : X_String) is
Arrow_Cross_Cursor : X_Cursor;
Min_Width : S_Long;
Min_Height : S_Long;
Visual : X_Visual;
Xgcv : X_Gc_Values;
Size_Hints : X_Size_Hints;
Success : X_Status;
begin
-- /*******************************************/
-- /** let the puzzle code initialize itself **/
-- /*******************************************/
Initialize;
Output_Logging := True;
Fg_Pixel := X_Black_Pixel (Dpy, Screen);
Bg_Pixel := X_White_Pixel (Dpy, Screen);
Title_Win_Height := Title_Window_Height;
Boundary_Height := C_Boundary_Height;
Min_Width := Min_Tile_Width * Puzzle_Width;
Min_Height := Min_Tile_Height * Puzzle_Height +
Title_Window_Height + C_Boundary_Height;
-- /*************************************/
-- /** configure the window size hints **/
-- /*************************************/
declare
X : S_Long;
Y : S_Long;
Width : S_Long;
Height : S_Long;
Tile_Height : S_Long;
Tile_Width : S_Long;
Flags : X_Parse_Geometry_Flags;
begin
Size_Hints.Flags :=
X_Size_Hints_Flags'
(P_Min_Size | P_Position | P_Size | P_Resize_Inc => True,
others => False);
Size_Hints.Min_Width := S_Long (Min_Width);
Size_Hints.Min_Height := S_Long (Min_Height);
Size_Hints.Width := S_Long (Min_Width);
Size_Hints.Height := S_Long (Min_Height);
Size_Hints.X := 100;
Size_Hints.Y := 300;
Size_Hints.Width_Inc := S_Long (Puzzle_Width);
Size_Hints.Height_Inc := S_Long (Puzzle_Height);
if Geometry /= "" then
declare
Xx, Yy : S_Short := 0;
Ww, Hh : U_Short := 0;
begin
X_Parse_Geometry (Geometry, Xx, Yy, Ww, Hh, Flags);
X := S_Long (Xx);
Y := S_Long (Yy);
Width := S_Long (Ww);
Height := S_Long (Hh);
end;
if Flags (Width_Value) then
Size_Hints.Flags (U_S_Size) := True;
if S_Long (Width) > Size_Hints.Min_Width then
Size_Hints.Width := S_Long (Width);
end if;
end if;
if Flags (Height_Value) then
Size_Hints.Flags (U_S_Size) := True;
if S_Long (Height) > Size_Hints.Min_Height then
Size_Hints.Height := S_Long (Height);
end if;
end if;
if Flags (X_Value) then
if Flags (X_Negative) then
X := S_Long (X_Display_Width
(Dpy, X_Default_Screen (Dpy))) +
X - S_Long (Size_Hints.Width);
end if;
Size_Hints.Flags (U_S_Position) := True;
Size_Hints.X := S_Long (X);
end if;
if Flags (Y_Value) then
if Flags (Y_Negative) then
Y := S_Long (X_Display_Height
(Dpy, X_Default_Screen (Dpy))) +
Y - S_Long (Size_Hints.Height);
end if;
Size_Hints.Flags (U_S_Position) := True;
Size_Hints.Y := S_Long (Y);
end if;
Tile_Height := (S_Long (Size_Hints.Height) -
Title_Win_Height - Boundary_Height) / Puzzle_Height;
Size_Hints.Height := S_Long (Tile_Height * Puzzle_Height +
Title_Win_Height + Boundary_Height);
Tile_Width := S_Long (Size_Hints.Width) / Puzzle_Width;
Size_Hints.Width := S_Long (Tile_Width * Puzzle_Width);
end if;
end;
-- /*******************************************************************/
-- /** create the puzzle main window and set its standard properties **/
-- /*******************************************************************/
Visual := Copy_From_Parent_Visual;
if not Geb_Server_Bug then
Puzzle_Root := X_Create_Simple_Window
(Dpy, X_Root_Window (Dpy, Screen),
S_Short (Size_Hints.X), S_Short (Size_Hints.Y),
U_Short (Size_Hints.Width),
U_Short (Size_Hints.Height),
Puzzle_Border_Width, Fg_Pixel, Fg_Pixel);
else
declare
Xswa : X_Set_Window_Attributes;
begin
Xswa.Background_Pixel := Fg_Pixel;
Xswa.Border_Pixel := Fg_Pixel;
Xswa.Event_Mask :=
X_Event_Mask'(Exposure_Mask | Visibility_Change_Mask => True,
others => False);
Puzzle_Root :=
X_Create_Window
(Dpy,
X_Root_Window (Dpy, Screen),
S_Short (Size_Hints.X),
S_Short (Size_Hints.Y),
U_Short (Size_Hints.Width),
U_Short (Size_Hints.Height),
Puzzle_Border_Width,
0,
Copy_From_Parent,
Copy_From_Parent_Visual,
(Cw_Back_Pixel | Cw_Border_Pixel | Cw_Event_Mask => True,
others => False),
Xswa);
end;
end if;
X_Set_Wm_Properties (Dpy, Puzzle_Root, "puzzle", "Puzzle",
(1 .. 0 => None_X_String_Pointer), Size_Hints,
None_X_Wm_Hints, None_X_Class_Hint, Success);
Xgcv.Foreground := Fg_Pixel;
Xgcv.Background := Bg_Pixel;
Xgcv.Line_Width := 1;
Gc := X_Create_Gc (Dpy, Puzzle_Root.Drawable,
(Gc_Foreground | Gc_Background | Gc_Line_Width => True,
others => False), Xgcv);
-- /*********************************/
-- /** load the arrow-cross cursor **/
-- /*********************************/
declare
Ac_Mask : X_Pixmap;
Ac_Pixmap : X_Pixmap;
Ac_Cursor : X_Cursor;
Fg_Color : X_Color;
Bg_Color : X_Color;
begin
Fg_Color.Red := 0;
Fg_Color.Green := 0;
Fg_Color.Blue := 0;
Bg_Color.Red := 16#FFFF#;
Bg_Color.Green := 16#FFFF#;
Bg_Color.Blue := 16#FFFF#;
Ac_Pixmap := X_Create_Bitmap_From_Data
(Dpy, X_Root_Window (Dpy, Screen).Drawable,
Ac_Bits, Ac_Width, Ac_Height);
Ac_Mask := X_Create_Bitmap_From_Data
(Dpy, X_Root_Window (Dpy, Screen).Drawable,
Ac_Mask_Bits, Ac_Mask_Width, Ac_Mask_Height);
Ac_Cursor := X_Create_Pixmap_Cursor (Dpy, Ac_Pixmap, Ac_Mask, Fg_Color,
Bg_Color, Ac_X_Hot, Ac_Y_Hot);
if "=" (Ac_Cursor, None_X_Cursor) then
Text_Io.Put_Line ("Unable to store Arrow_Cross_Cursor.");
end if;
X_Define_Cursor (Dpy, Puzzle_Root, Ac_Cursor);
end;
-- /*****************************************/
-- /** allocate the fonts we will be using **/
-- /*****************************************/
Title_Font_Info := X_Load_Query_Font (Dpy, Title_Font_Name);
if "=" (Title_Font_Info, None_X_Font_Struct) then
Text_Io.Put_Line ("Could not open font " & To_String (Title_Font_Name) &
"; opening 'fixed' instead?");
Title_Font_Info := X_Load_Query_Font (Dpy, "fixed");
if "=" (Title_Font_Info, None_X_Font_Struct) then
Text_Io.Put_Line ("Could not open font " &
To_String (Title_Font_Name) &
" or font 'fixed'?");
raise Terminate_Program;
end if;
end if;
Tile_Font_Info := X_Load_Query_Font (Dpy, Tile_Font_Name);
if "=" (Tile_Font_Info, None_X_Font_Struct) then
Text_Io.Put_Line ("Could not open font " & To_String (Tile_Font_Name) &
"; opening 'fixed' instead?");
Tile_Font_Info := X_Load_Query_Font (Dpy, "fixed");
if "=" (Tile_Font_Info, None_X_Font_Struct) then
Text_Io.Put_Line ("Could not open font " &
To_String (Tile_Font_Name) & " or font 'fixed'?");
raise Terminate_Program;
end if;
end if;
if not Geb_Server_Bug then
X_Select_Input (Dpy, Puzzle_Root,
(Exposure_Mask | Visibility_Change_Mask => True,
others => False));
end if;
X_Map_Window (Dpy, Puzzle_Root);
end Setup;