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: 6549 (0x1995) Types: TextFile Names: »B«
└─⟦85b835f43⟧ Bits:30000549 8mm tape, Rational 1000, Xlib rev 6.00 └─ ⟦0c20f784e⟧ »DATA« └─⟦1abbe589f⟧ └─⟦ada0be243⟧ └─⟦this⟧
with Text_Io; with Xload_Main; use Xload_Main; with Xlbt_Arithmetic; use Xlbt_Arithmetic; with Xlbt_Basic; use Xlbt_Basic; with Xlbt_Event; use Xlbt_Event; with Xlbt_Gc; use Xlbt_Gc; with Xlbt_Geometry; use Xlbt_Geometry; with Xlbt_Hint; use Xlbt_Hint; with Xlbt_Image; use Xlbt_Image; with Xlbt_Image3; with Xlbt_String; use Xlbt_String; with Xlbt_Window; use Xlbt_Window; with Xlbt_Visual; use Xlbt_Visual; with Xlbp_Bitmap; use Xlbp_Bitmap; with Xlbp_Display; use Xlbp_Display; with Xlbp_Event; use Xlbp_Event; with Xlbp_Gc; use Xlbp_Gc; with Xlbp_Geometry; use Xlbp_Geometry; with Xlbp_Graphics; use Xlbp_Graphics; with Xlbp_Hint; use Xlbp_Hint; with Xlbp_Image; use Xlbp_Image; with Xlbp_Window; use Xlbp_Window; with Xlbp_Window_Information; use Xlbp_Window_Information; package body Xload_Icon is ------------------------------------------------------------------------------ -- Xload - a version of Mah-Jongg for X Windows -- -- Author: Gary E. Barnes March 1989 -- -- icon.c - Deals with our icon. Setup and execution. ------------------------------------------------------------------------------ -- 05/30/90 GEB - Translate to Ada ------------------------------------------------------------------------------ Xload_Width : constant := 32; Xload_Height : constant := 32; Xload_Bits : constant U_Char_Array := (16#00#, 16#00#, 16#C0#, 16#03#, 16#1E#, 16#00#, 16#F0#, 16#03#, 16#00#, 16#00#, 16#F8#, 16#03#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#00#, 16#00#, 16#FC#, 16#03#, 16#00#, 16#00#, 16#FE#, 16#03#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#00#, 16#80#, 16#FF#, 16#03#, 16#00#, 16#C0#, 16#FF#, 16#03#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#00#, 16#E0#, 16#FF#, 16#03#, 16#00#, 16#F0#, 16#FF#, 16#03#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#00#, 16#F8#, 16#FF#, 16#03#, 16#00#, 16#F8#, 16#FF#, 16#03#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#00#, 16#FC#, 16#FF#, 16#03#, 16#00#, 16#FC#, 16#FF#, 16#03#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#00#, 16#FE#, 16#FF#, 16#03#, 16#00#, 16#FE#, 16#FF#, 16#03#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#00#, 16#FF#, 16#FF#, 16#03#, 16#00#, 16#FF#, 16#FF#, 16#03#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#80#, 16#FF#, 16#FF#, 16#03#, 16#C0#, 16#FF#, 16#FF#, 16#03#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#F8#, 16#FF#, 16#FF#, 16#03#, 16#FF#, 16#FF#, 16#FF#, 16#03#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#FF#, 16#03#); -- \f procedure Icon_Setup (Wm_Hints : in out X_Wm_Hints) is ------------------------------------------------------------------------------ -- Wm_Hints - Specifies an X_Wm_Hints structure to modify, it receives -- an Icon_Pixmap. -- -- Called to handle all of the Icon setup for our main shell. ------------------------------------------------------------------------------ Ic : X_Icon_Size_List; Success : X_Status; I : S_Long; Size : S_Long; Accepted : S_Long; Icon_Pixmap : X_Pixmap := None_X_Pixmap; W, H : U_Short := 0; X, Y : S_Short := 0; Flags : X_Parse_Geometry_Flags; begin ----If we've been asked to set up the Icon geometry then do that. -- Debug_Call ("Icon_Setup"); X_Parse_Geometry (Xload_Resources.Icon_Geometry.all, X, Y, W, H, Flags); if Flags (X_Value) then Wm_Hints.Icon_X := S_Long (X); Wm_Hints.Flags (Icon_Position_Hint) := True; end if; if Flags (Y_Value) then Wm_Hints.Icon_Y := S_Long (Y); Wm_Hints.Flags (Icon_Position_Hint) := True; end if; ----Set up the Icon pixmap or window. We try to use a pixmap instead of a -- window because it is simply less overhead. If there are supported Icon -- pixmap sizes then maybe we can use an icon pixmap. X_Get_Icon_Sizes (Dpy, X_Default_Root_Window (Dpy), Ic, Success); if Success /= Failed then ----Run over all of the sizes. We try to get a 32x32 pixmap. -- We grab the first size that allows us to create a pixmap of 32x32 or -- larger. Size := 0; for I in Ic'Range loop if Ic (I).Width_Inc = 0 or else Ic (I).Height_Inc = 0 then if Ic (I).Min_Width = 32 and then Ic (I).Min_Height = 32 then Size := 32; exit; elsif Ic (I).Min_Width >= 32 and then Ic (I).Min_Height >= 32 then Size := 32; else Size := 32; end if; elsif Size = 0 and then 32 in Ic (I).Min_Width .. Ic (I).Max_Width and then 32 in Ic (I).Min_Height .. Ic (I).Max_Height and then (32 - Ic (I).Min_Width) rem Ic (I).Width_Inc = 0 and then (32 - Ic (I).Min_Height) rem Ic (I).Height_Inc = 0 then Size := 32; exit; elsif Size = 0 and then Ic (I).Max_Width >= 32 and then Ic (I).Max_Height >= 32 then Size := 32; end if; end loop; Icon_Pixmap := -- Size is perfect X_Create_Pixmap_From_Bitmap_Data (Dpy, X_Default_Root_Window (Dpy).Drawable, Xload_Bits, Xload_Width, Xload_Height, Xload_Resources.Foreground, Xload_Resources.Background, X_Default_Depth_Of_Screen (X_Default_Screen_Of_Display (Dpy))); end if; ----If we managed to create a pixmap then use that. Otherwise we don't use -- anything. if Icon_Pixmap /= None_X_Pixmap then -- Debug_Other ("Icon_Setup", "Icon X_Pixmap"); Wm_Hints.Icon_Pixmap := Icon_Pixmap; Wm_Hints.Flags (Icon_Pixmap_Hint) := True; end if; -- Debug_Return ("Icon_Setup"); end Icon_Setup; -- \f end Xload_Icon;