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

⟦91dd4fa4c⟧ Ada Source

    Length: 139264 (0x22000)
    Types: Ada Source
    Notes: 03_class, FILE, Long Ada Source, R1k_Segment, e3_tag, package X_Windows, seg_01c4b3

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



with System;
package X_Windows is
    Bad_Request : exception;
    Bad_Value : exception;
    Bad_Window : exception;
    Bad_Pixmap : exception;
    Bad_Atom : exception;
    Bad_Cursor : exception;
    Bad_Font : exception;
    Bad_Match : exception;
    Bad_Drawable : exception;
    Bad_Access : exception;
    Bad_Alloc : exception;
    Bad_Color : exception;
    Bad_Gc : exception;
    Bad_Id_Choice : exception;
    Bad_Name : exception;
    Bad_Length : exception;
    Bad_Implementation : exception;
    First_Extension_Error : exception;
    Last_Extension_Error : exception;
    type Display is private;
    type Context is private;
    type Screen is private;
    type Visual is private;
    type Drawable is private;
    subtype Window is Drawable;
    subtype Pixmap is Drawable;
    type X_Id is private;
    Null_Display : constant Display;
    Null_Context : constant Context;
    Null_Drawable : constant Drawable;
    None : constant Drawable;
    Copy_Drawable_From_Parent : constant Drawable;
    Null_Window : constant Window;
    Pointer_Window : constant Window;
    Input_Focus_Window : constant Window;
    Pointer_Root_Window : constant Window;
    Null_Pixmap : constant Pixmap;
    Parent_Relative : constant Pixmap;
    Copy_Visual_From_Parent : constant Visual;
    Null_X_Id : constant X_Id;
    type Property_Format_Type is (Format_8, Format_16, Format_32);
    type X_Short_Integer is range -2 ** 7 .. (2 ** 7) - 1;
    type X_Integer is range -2 ** 15 .. (2 ** 15) - 1;
    type X_Long_Integer is range -2 ** 31 .. (2 ** 31) - 1;
    type Boolean_Array is array (Natural range <>) of Boolean;
    type Byte is range 0 .. 255;
    type Byte_Array is array (Natural range <>) of Byte;
    type Bytes is access Byte_Array;
    type Bit_Data is range 0 .. (2 ** 8) - 1;
    for Bit_Data'Size use 8;
    type Bit_Data_Array is array (Natural range <>) of Bit_Data;
    type Bits is access Bit_Data_Array;
    type Word is range 0 .. 65_535;
    type Word_Array is array (Natural range <>) of Word;
    type Words is access Word_Array;
    type String_Pointer is access String;
    type String_Pointer_Array is array (Natural range <>) of String_Pointer;
    type String_List is access String_Pointer_Array;
    type Long_Array is array (Natural range <>) of X_Long_Integer;
    type X_Character is range 0 .. 255;
    type String_8 is array (Positive range <>) of X_Character;
    type String_Pointer_8 is access String_8;
    type Time is range -2 ** 31 .. (2 ** 31) - 1;
    type Angle is range 0 .. (360 * 64);
    type Pixels is range -2 ** 31 .. (2 ** 31) - 1;
    type Millimeters is range -2 ** 15 .. (2 ** 15) - 1;
    subtype Coordinate is Pixels;
    type Depth_Type is range 0 .. (2 ** 15) - 1;
    type Screen_Number is range 0 .. (2 ** 15) - 1;
    type Segment is
        record
            X_1, Y_1 : Coordinate := 0;
            X_2, Y_2 : Coordinate := 0;
        end record;
    type Segment_Array is array (Natural range <>) of Segment;
    type Point is
        record
            X, Y : Coordinate := 0;
        end record;
    type Point_Array is array (Natural range <>) of Point;
    type Rectangle is
        record
            X, Y : Coordinate := 0;
            Width : Pixels := 0;
            Height : Pixels := 0;
        end record;
    type Rectangle_Array is array (Natural range <>) of Rectangle;
    type Arc is
        record
            X, Y : Coordinate := 0;
            Width : Pixels := 0;
            Height : Pixels := 0;
            Angle_1 : Angle := 0;
            Angle_2 : Angle := 0;
        end record;
    type Arc_Array is array (Natural range <>) of Arc;
    subtype Plane_Mask is Boolean_Array (0 .. 24);
    type Plane_Mask_Array is array (Natural range <>) of Plane_Mask;
    All_Planes : constant Plane_Mask := (0 .. 24 => False);
    type Depth_Record is
        record
            Depth : Depth_Type;
            Number_Of_Visuals : Natural;
            Visuals : Visual;
        end record;
    type Pixmap_Format is (Xy_Bitmap, Xy_Pixmap, Z_Pixmap);
    type Order_Type is (Lsb_First, Msb_First);
    type Backing_Store_Type is (Not_Useful, When_Mapped, Always);
    type Stack_Mode_Type is (Above, Below, Top_If, Bottom_If, Opposite);
    package Atoms is
        type Atom is private;
        type Atom_Array is array (Natural range <>) of Atom;
        type Atom_List is access Atom_Array;
        Xa_Primary : constant Atom;
        Xa_Secondary : constant Atom;
        Xa_Arc : constant Atom;
        Xa_Atom : constant Atom;
        Xa_Bitmap : constant Atom;
        Xa_Cardinal : constant Atom;
        Xa_Colormap : constant Atom;
        Xa_Cursor : constant Atom;
        Xa_Cut_Buffer_0 : constant Atom;
        Xa_Cut_Buffer_1 : constant Atom;
        Xa_Cut_Buffer_2 : constant Atom;
        Xa_Cut_Buffer_3 : constant Atom;
        Xa_Cut_Buffer_4 : constant Atom;
        Xa_Cut_Buffer_5 : constant Atom;
        Xa_Cut_Buffer_6 : constant Atom;
        Xa_Cut_Buffer_7 : constant Atom;
        Xa_Drawable : constant Atom;
        Xa_Font : constant Atom;
        Xa_Integer : constant Atom;
        Xa_Pixmap : constant Atom;
        Xa_Point : constant Atom;
        Xa_Rectangle : constant Atom;
        Xa_Resource_Manager : constant Atom;
        Xa_Rgb_Color_Map : constant Atom;
        Xa_Rgb_Best_Map : constant Atom;
        Xa_Rgb_Blue_Map : constant Atom;
        Xa_Rgb_Default_Map : constant Atom;
        Xa_Rgb_Gray_Map : constant Atom;
        Xa_Rgb_Green_Map : constant Atom;
        Xa_Rgb_Red_Map : constant Atom;
        Xa_String : constant Atom;
        Xa_Visual_Id : constant Atom;
        Xa_Window : constant Atom;
        Xa_Wm_Command : constant Atom;
        Xa_Wm_Hints : constant Atom;
        Xa_Wm_Client_Machine : constant Atom;
        Xa_Wm_Icon_Name : constant Atom;
        Xa_Wm_Icon_Size : constant Atom;
        Xa_Wm_Name : constant Atom;
        Xa_Wm_Normal_Hints : constant Atom;
        Xa_Wm_Size_Hints : constant Atom;
        Xa_Wm_Zoom_Hints : constant Atom;
        Xa_Wm_Class : constant Atom;
        Xa_Wm_Transient_Height : constant Atom;
        Xa_Min_Space : constant Atom;
        Xa_Norm_Space : constant Atom;
        Xa_Max_Space : constant Atom;
        Xa_End_Space : constant Atom;
        Xa_Superscript_X : constant Atom;
        Xa_Superscript_Y : constant Atom;
        Xa_Subscript_X : constant Atom;
        Xa_Subscript_Y : constant Atom;
        Xa_Underline_Position : constant Atom;
        Xa_Underline_Thickness : constant Atom;
        Xa_Strikeout_Ascent : constant Atom;
        Xa_Strikeout_Descent : constant Atom;
        Xa_Italic_Angle : constant Atom;
        Xa_X_Height : constant Atom;
        Xa_Quad_Width : constant Atom;
        Xa_Weight : constant Atom;
        Xa_Point_Size : constant Atom;
        Xa_Resolution : constant Atom;
        Xa_Copyright : constant Atom;
        Xa_Notice : constant Atom;
        Xa_Font_Name : constant Atom;
        Xa_Family_Name : constant Atom;
        Xa_Full_Name : constant Atom;
        Xa_Cap_Height : constant Atom;
        Xa_Last_Predefined : constant Atom;
        function Visual_Id_From_Visual (Visual_Id : in Visual) return X_Id;
        function Intern_Atom (Display_Id : in Display;
                              Atom_Name : in String;
                              Only_If_Exists : in Boolean := True) return Atom;
        function Get_Atom_Name
                    (Display_Id : in Display; Atom_Id : in Atom) return String;
    private
        type Atom is range 0 .. (2 ** 28) - 1;
        Xa_Primary : constant Atom := 1;
        Xa_Secondary : constant Atom := 2;
        Xa_Arc : constant Atom := 3;
        Xa_Atom : constant Atom := 4;
        Xa_Bitmap : constant Atom := 5;
        Xa_Cardinal : constant Atom := 6;
        Xa_Colormap : constant Atom := 7;
        Xa_Cursor : constant Atom := 8;
        Xa_Cut_Buffer_0 : constant Atom := 9;
        Xa_Cut_Buffer_1 : constant Atom := 10;
        Xa_Cut_Buffer_2 : constant Atom := 11;
        Xa_Cut_Buffer_3 : constant Atom := 12;
        Xa_Cut_Buffer_4 : constant Atom := 13;
        Xa_Cut_Buffer_5 : constant Atom := 14;
        Xa_Cut_Buffer_6 : constant Atom := 15;
        Xa_Cut_Buffer_7 : constant Atom := 16;
        Xa_Drawable : constant Atom := 17;
        Xa_Font : constant Atom := 18;
        Xa_Integer : constant Atom := 19;
        Xa_Pixmap : constant Atom := 20;
        Xa_Point : constant Atom := 21;
        Xa_Rectangle : constant Atom := 22;
        Xa_Resource_Manager : constant Atom := 23;
        Xa_Rgb_Color_Map : constant Atom := 24;
        Xa_Rgb_Best_Map : constant Atom := 25;
        Xa_Rgb_Blue_Map : constant Atom := 26;
        Xa_Rgb_Default_Map : constant Atom := 27;
        Xa_Rgb_Gray_Map : constant Atom := 28;
        Xa_Rgb_Green_Map : constant Atom := 29;
        Xa_Rgb_Red_Map : constant Atom := 30;
        Xa_String : constant Atom := 31;
        Xa_Visual_Id : constant Atom := 32;
        Xa_Window : constant Atom := 33;
        Xa_Wm_Command : constant Atom := 34;
        Xa_Wm_Hints : constant Atom := 35;
        Xa_Wm_Client_Machine : constant Atom := 36;
        Xa_Wm_Icon_Name : constant Atom := 37;
        Xa_Wm_Icon_Size : constant Atom := 38;
        Xa_Wm_Name : constant Atom := 39;
        Xa_Wm_Normal_Hints : constant Atom := 40;
        Xa_Wm_Size_Hints : constant Atom := 41;
        Xa_Wm_Zoom_Hints : constant Atom := 42;
        Xa_Wm_Class : constant Atom := 67;
        Xa_Wm_Transient_Height : constant Atom := 68;
        Xa_Min_Space : constant Atom := 43;
        Xa_Norm_Space : constant Atom := 44;
        Xa_Max_Space : constant Atom := 45;
        Xa_End_Space : constant Atom := 46;
        Xa_Superscript_X : constant Atom := 47;
        Xa_Superscript_Y : constant Atom := 48;
        Xa_Subscript_X : constant Atom := 49;
        Xa_Subscript_Y : constant Atom := 50;
        Xa_Underline_Position : constant Atom := 51;
        Xa_Underline_Thickness : constant Atom := 52;
        Xa_Strikeout_Ascent : constant Atom := 53;
        Xa_Strikeout_Descent : constant Atom := 54;
        Xa_Italic_Angle : constant Atom := 55;
        Xa_X_Height : constant Atom := 56;
        Xa_Quad_Width : constant Atom := 57;
        Xa_Weight : constant Atom := 58;
        Xa_Point_Size : constant Atom := 59;
        Xa_Resolution : constant Atom := 60;
        Xa_Copyright : constant Atom := 61;
        Xa_Notice : constant Atom := 62;
        Xa_Font_Name : constant Atom := 63;
        Xa_Family_Name : constant Atom := 64;
        Xa_Full_Name : constant Atom := 65;
        Xa_Cap_Height : constant Atom := 66;
        Xa_Last_Predefined : constant Atom := Xa_Wm_Transient_Height;
    end Atoms;
    package Fonts is
        type Font is private;
        type Font_Direction is (Left_To_Right, Right_To_Left);
        type Character_Record is
            record
                Left_Bearing : Pixels;
                Right_Bearing : Pixels;
                Width : Pixels;
                Ascent : Pixels;
                Descent : Pixels;
                Attributes : Pixels;
            end record;
        type Character_Array is array (Natural range <>) of Character_Record;
        type Character_List is access Character_Array;
        type Font_Property_Record is
            record
                Name : Atoms.Atom;
                Card_32 : X_Long_Integer;
            end record;
        type Font_Property_Array is
           array (Natural range <>) of Font_Property_Record;
        type Font_Property_List is access Font_Property_Array;
        Null_Font_Id : constant Font;
        type Font_Record is
            record
                Ext_Data : System.Address;
                Font_Id : Font;
                Direction : Font_Direction;
                First_Char : X_Character;
                Last_Char : X_Character;
                First_Row : X_Character;
                Last_Row : X_Character;
                All_Exist : Boolean;
                Default_Char : X_Character;
                Properties : Font_Property_List;
                Min_Bounds : Character_Record;
                Max_Bounds : Character_Record;
                Per_Char : Character_List;
                Ascent : Pixels;
                Descent : Pixels;
            end record;
        type Font_Record_Pointer is access Font_Record;
        type Font_Record_Array is array (Natural range <>) of Font_Record;
        type Font_Record_List is access Font_Record_Array;
        type Character_2b is
            record
                Byte_1 : Byte;
                Byte_2 : Byte;
            end record;
        type String_16 is array (Natural range <>) of Character_2b;
        type String_Pointer_16 is access String_16;
        function Load_Font (Display_Id : in Display; Font_Name : in String)
                           return Font;
        function Query_Font (Display_Id : in Display; Font_Id : in Font)
                            return Font_Record;
        procedure List_Fonts_With_Info
                     (Display_Id : in Display;
                      Pattern : in String;
                      Font_Info_List : in out Font_Record_List;
                      Names_List : in out String_List);
        procedure Free_Font_Info (Names_List : in out String_List;
                                  Font_Info_List : in out Font_Record_List);
        function Load_Query_Font
                    (Display_Id : in Display; Font_Name : in String)
                    return Font_Record;
        procedure Free_Font (Display_Id : in Display;
                             Font_Info : in out Font_Record);
        procedure Get_Font_Property (Font_Info : in Font_Record;
                                     Property : in Atoms.Atom;
                                     Value : out X_Long_Integer;
                                     Defined : out Boolean);
        procedure Unload_Font (Display_Id : in Display; Font_Id : in Font);
        procedure List_Fonts (Display_Id : in Display;
                              Pattern : in String;
                              Names : in out String_List);
        procedure Free_Font_Names (Display_Id : in Display;
                                   Directories : in out String_List);
        procedure Set_Font_Path (Display_Id : in Display;
                                 Directories : in String_List);
        function Get_Font_Path (Display_Id : in Display) return String_List;
        procedure Free_Font_Path (Directories : in out String_List);
        function Text_Width (Font_Info : in Font_Record; Text : in String)
                            return Pixels;
        function Text_Width (Font_Info : in Font_Record; Text : in String_8)
                            return Pixels;
        function Text_Width_16 (Font_Info : in Font_Record; Text : in String_16)
                               return Pixels;
        procedure Text_Extents (Font_Info : in Font_Record;
                                Text : in String;
                                Direction : out Font_Direction;
                                Ascent : out Pixels;
                                Descent : out Pixels;
                                Overall : out Character_Record);
        procedure Text_Extents (Font_Info : in Font_Record;
                                Text : in String_8;
                                Direction : out Font_Direction;
                                Ascent : out Pixels;
                                Descent : out Pixels;
                                Overall : out Character_Record);
        procedure Text_Extents_16 (Font_Info : in Font_Record;
                                   Text : in String_16;
                                   Direction : out Font_Direction;
                                   Ascent : out Pixels;
                                   Descent : out Pixels;
                                   Overall : out Character_Record);
        procedure Query_Text_Extents (Display_Id : in Display;
                                      Font_Id : in Font;
                                      Text : in String;
                                      Direction : out Font_Direction;
                                      Ascent : out Pixels;
                                      Descent : out Pixels;
                                      Overall : out Character_Record);
        procedure Query_Text_Extents (Display_Id : in Display;
                                      Font_Id : in Font;
                                      Text : in String_8;
                                      Direction : out Font_Direction;
                                      Ascent : out Pixels;
                                      Descent : out Pixels;
                                      Overall : out Character_Record);
        procedure Query_Text_Extents_16 (Display_Id : in Display;
                                         Font_Id : in Font;
                                         Text : in String_16;
                                         Direction : out Font_Direction;
                                         Ascent : out Pixels;
                                         Descent : out Pixels;
                                         Overall : out Character_Record);
    private
        type Font is range 0 .. (2 ** 28) - 1;
        Null_Font_Id : constant Font := Font (0);
    end Fonts;
    package Colors is
        type Color_Map is private;
        type Color_Map_Array is array (Natural range <>) of Color_Map;
        type Color_Map_List is access Color_Map_Array;
        Null_Color_Map : constant Color_Map;
        Copy_Colormap_From_Parent : constant Color_Map;
        type Color_Flag is array (Natural range 0 .. 2) of Boolean;
        Do_Red : constant Color_Flag := Color_Flag'(0 => True, others => False);
        Do_Green : constant Color_Flag :=
           Color_Flag'(1 => True, others => False);
        Do_Blue : constant Color_Flag :=
           Color_Flag'(2 => True, others => False);
        type Rgb_Value_Type is range 0 .. 65_535;
        Full_Color : constant Rgb_Value_Type := Rgb_Value_Type'Last;
        Half_Color : constant Rgb_Value_Type := Rgb_Value_Type'Last / 2;
        Color_Off : constant Rgb_Value_Type := 0;
        type Color_Record is
            record
                Value : X_Long_Integer := 0;  
                Red : Rgb_Value_Type := 0;  
                Green : Rgb_Value_Type := 0;
                Blue : Rgb_Value_Type := 0;
                Flags : Color_Flag;
            end record;
        type Color_Array is array (Natural range <>) of Color_Record;
        type Pixel_Array is array (Natural range <>) of Pixels;
        type Pixel_List is access Pixel_Array;
        type Color_Map_Allocator is (Allocate_None, Allocate_All);
        type Standard_Colormap_Record is
            record
                Map_Id : Colors.Color_Map;
                Red_Max : Pixels;
                Red_Mult : Pixels;
                Green_Max : Pixels;
                Green_Mult : Pixels;
                Blue_Max : Pixels;
                Blue_Mult : Pixels;
                Base_Pixel : Pixels;
            end record;
        function Create_Colormap
                    (Display_Id : in Display;
                     Window_Id : in Window;
                     Visual_Id : in Visual;
                     Allocate : in Color_Map_Allocator) return Color_Map;
        procedure Copy_Colormap_And_Free (Display_Id : in Display;
                                          Source : in out Color_Map;
                                          Target : out Color_Map);
        procedure Free_Colormap (Display_Id : in Display;
                                 Map_Id : in out Color_Map);
        procedure Set_Window_Colormap (Display_Id : in Display;
                                       Window_Id : in Window;
                                       Map_Id : in Color_Map);
        procedure Allocate_Color (Display_Id : in Display;
                                  Map_Id : in Color_Map;
                                  Definition : in out Color_Record;
                                  Success : out Boolean);
        procedure Allocate_Named_Color (Display_Id : in Display;
                                        Map_Id : in Color_Map;
                                        Color_Name : in String;
                                        Screen_Def : out Color_Record;
                                        Exact_Def : out Color_Record;
                                        Success : out Boolean);
        procedure Lookup_Color (Display_Id : in Display;
                                Map_Id : in Color_Map;
                                Color_Name : in String;
                                Screen_Def : out Color_Record;
                                Exact_Def : out Color_Record;
                                Success : out Boolean);
        procedure Store_Colors (Display_Id : in Display;
                                Map_Id : in Color_Map;
                                Colors : in out Color_Array);
        procedure Store_Color (Display_Id : in Display;
                               Map_Id : in Color_Map;
                               Screen_Def : in out Color_Record);
        procedure Allocate_Color_Cells (Display_Id : in Display;
                                        Map_Id : in Color_Map;
                                        Contiguous : in Boolean;
                                        Planes : in out Plane_Mask_Array;
                                        Pixel_Values : in out Pixel_Array;
                                        Success : out Boolean);
        procedure Allocate_Color_Planes (Display_Id : in Display;
                                         Map_Id : in Color_Map;
                                         Contiguous : in Boolean;
                                         Red_Shades : in Natural;
                                         Green_Shades : in Natural;
                                         Blue_Shades : in Natural;
                                         Pixel_Values : in out Pixel_List;
                                         Red_Mask : out Plane_Mask;
                                         Green_Mask : out Plane_Mask;
                                         Blue_Mask : out Plane_Mask;
                                         Success : out Boolean);
        procedure Store_Named_Color (Display_Id : in Display;
                                     Map_Id : in Color_Map;
                                     Color_Name : in String;
                                     Map_Entry : in Pixels;
                                     Flags : in Color_Flag);
        procedure Free_Colors (Display_Id : in Display;
                               Map_Id : in Color_Map;
                               Pixels_To_Free : in Pixel_Array;
                               Planes : in Plane_Mask);
        procedure Query_Color (Display_Id : in Display;
                               Map_Id : in Color_Map;
                               The_Color : in out Color_Record);
        procedure Query_Colors (Display_Id : in Display;
                                Map_Id : in Color_Map;
                                The_Colors : in out Color_Array);
        procedure Install_Colormap
                     (Display_Id : in Display; Map_Id : in Color_Map);
        procedure Uninstall_Colormap
                     (Display_Id : in Display; Map_Id : in Color_Map);
        function List_Installed_Colormaps
                    (Display_Id : in Display; Window_Id : in Window)
                    return Color_Map_List;
        procedure Parse_Color (Display_Id : in Display;
                               Map_Id : in Color_Map;
                               Color_Name : in String;
                               Screen_Def : out Color_Record;
                               Success : out Boolean);
        procedure Get_Standard_Colormap
                     (Display_Id : in Display;
                      Window_Id : in Window;
                      Property : in Atoms.Atom;
                      Cmap_Return : out Standard_Colormap_Record;
                      Success : out Boolean);
        procedure Set_Standard_Colormap (Display_Id : in Display;
                                         Window_Id : in Window;
                                         Cmap : in Standard_Colormap_Record;
                                         Property : in Atoms.Atom);
    private
        type Color_Map is range 0 .. (2 ** 28) - 1;
        for Color_Map'Size use 32;
        Null_Color_Map : constant Color_Map := Color_Map (0);
        Copy_Colormap_From_Parent : constant Color_Map := Color_Map (0);
    end Colors;
    package Graphic_Output is
        type Graphic_Context is private;
        type Image is private;
        type Resource_Gc is private;
        Image_Context : constant Image;
        Null_Graphic_Context : constant Graphic_Context;
        type Bitmap_Status_Type is (Bitmap_Success, Bitmap_Open_Failed,
                                    Bitmap_File_Invalid, Bitmap_No_Memory);
        type Gx_Function_Code is (Gx_Clear, Gx_And, Gx_And_Reverse, Gx_Copy,
                                  Gx_And_Inverted, Gx_Noop, Gx_Xor,
                                  Gx_Or, Gx_Nor, Gx_Equiv, Gx_Invert,
                                  Gx_Or_Reverse, Gx_Copy_Inverted,
                                  Gx_Or_Inverted, Gx_Nand, Gx_Set);
        type Text_Item is
            record
                Characters : String_Pointer;
                String_Delta : Pixels;
                Font_Id : Fonts.Font;
            end record;
        type Text_Item_Array is array (Natural range <>) of Text_Item;
        type Text_Item_List is access Text_Item_Array;
        type Text_Item_8 is
            record
                Characters : String_Pointer_8;
                String_Delta : Pixels;
                Font_Id : Fonts.Font;
            end record;
        type Text_Item_8_Array is array (Natural range <>) of Text_Item_8;
        type Text_Item_8_List is access Text_Item_8_Array;
        type Text_Item_16 is
            record
                Characters : Fonts.String_Pointer_16;
                String_Delta : Pixels;
                Font_Id : Fonts.Font;
            end record;
        type Text_Item_16_Array is array (Natural range <>) of Text_Item_16;
        type Text_Item_16_List is access Text_Item_16_Array;
        type Line_Style_Type is
           (Line_Solid, Line_On_Off_Dash, Line_Double_Dash);
        type Cap_Style_Type is (Cap_Not_Last, Cap_Butt,
                                Cap_Round, Cap_Projecting);
        type Join_Style_Type is (Join_Miter, Join_Round, Join_Bevel);
        type Fill_Style_Type is (Fill_Solid, Fill_Tiled,
                                 Fill_Stippled, Fill_Opaque_Stippled);
        type Fill_Rule_Type is (Even_Odd_Rule, Winding_Rule);
        type Shape_Class_Type is
           (Tile_Shape_Class, Cursor_Shape_Class, Stipple_Shape_Class);
        type Ordering_Type is (Unsorted, Y_Sorted, Yx_Sorted, Yx_Banded);
        type Arc_Mode_Type is (Arc_Chord, Arc_Pie_Slice);
        type Subwindow_Mode_Type is (Clip_By_Children, Include_Inferiors);
        type Coordinate_Mode_Type is (Origin, Previous);
        type Shape_Type is (Complex, Convex, Nonconvex);
        subtype Gc_Mask_Type is Boolean_Array (0 .. 22);
        Gc_Function : constant Gc_Mask_Type :=
           Gc_Mask_Type'(0 => True, others => False);
        Gc_Plane_Mask : constant Gc_Mask_Type :=
           Gc_Mask_Type'(1 => True, others => False);
        Gc_Foreground : constant Gc_Mask_Type :=
           Gc_Mask_Type'(2 => True, others => False);
        Gc_Background : constant Gc_Mask_Type :=
           Gc_Mask_Type'(3 => True, others => False);
        Gc_Line_Width : constant Gc_Mask_Type :=
           Gc_Mask_Type'(4 => True, others => False);
        Gc_Line_Style : constant Gc_Mask_Type :=
           Gc_Mask_Type'(5 => True, others => False);
        Gc_Cap_Style : constant Gc_Mask_Type :=
           Gc_Mask_Type'(6 => True, others => False);
        Gc_Join_Style : constant Gc_Mask_Type :=
           Gc_Mask_Type'(7 => True, others => False);
        Gc_Fill_Style : constant Gc_Mask_Type :=
           Gc_Mask_Type'(8 => True, others => False);
        Gc_Fill_Rule : constant Gc_Mask_Type :=
           Gc_Mask_Type'(9 => True, others => False);
        Gc_Tile : constant Gc_Mask_Type :=
           Gc_Mask_Type'(10 => True, others => False);
        Gc_Stipple : constant Gc_Mask_Type :=
           Gc_Mask_Type'(11 => True, others => False);
        Gc_Ts_X_Origin : constant Gc_Mask_Type :=
           Gc_Mask_Type'(12 => True, others => False);
        Gc_Ts_Y_Origin : constant Gc_Mask_Type :=
           Gc_Mask_Type'(13 => True, others => False);
        Gc_Font : constant Gc_Mask_Type :=
           Gc_Mask_Type'(14 => True, others => False);
        Gc_Subwindow_Mode : constant Gc_Mask_Type :=
           Gc_Mask_Type'(15 => True, others => False);
        Gc_Graphics_Exposure : constant Gc_Mask_Type :=
           Gc_Mask_Type'(16 => True, others => False);
        Gc_Clip_X_Origin : constant Gc_Mask_Type :=
           Gc_Mask_Type'(17 => True, others => False);
        Gc_Clip_Y_Origin : constant Gc_Mask_Type :=
           Gc_Mask_Type'(18 => True, others => False);
        Gc_Clip_Mask : constant Gc_Mask_Type :=
           Gc_Mask_Type'(19 => True, others => False);
        Cg_Dash_Offset : constant Gc_Mask_Type :=
           Gc_Mask_Type'(20 => True, others => False);
        Gc_Dash_List : constant Gc_Mask_Type :=
           Gc_Mask_Type'(21 => True, others => False);
        Gc_Arc_Mode : constant Gc_Mask_Type :=
           Gc_Mask_Type'(22 => True, others => False);
        type Gc_Value_Record is
            record
                Logical_Operation : Gx_Function_Code := Gx_Copy;
                Plane : Plane_Mask := All_Planes;
                Foreground : Pixels := 0;
                Background : Pixels := 1;
                Line_Width : Pixels := 0;
                Line_Style : Line_Style_Type := Line_Solid;
                Cap_Style : Cap_Style_Type := Cap_Butt;
                Join_Style : Join_Style_Type := Join_Miter;
                Fill_Style : Fill_Style_Type := Fill_Solid;
                Fill_Rule : Fill_Rule_Type := Even_Odd_Rule;
                Arc_Mode : Arc_Mode_Type := Arc_Pie_Slice;
                Tile : Pixmap;
                Stipple : Pixmap;
                Ts_X_Origin : Coordinate := 0;
                Ts_Y_Origin : Coordinate := 0;
                Font_Id : Fonts.Font;
                Subwindow_Mode : Subwindow_Mode_Type := Clip_By_Children;
                Graphics_Exposures : Boolean := True;
                Clip_X_Origin : Coordinate := 0;
                Clip_Y_Origin : Coordinate := 0;
                Clip_Mask : Pixmap;
                Dash_Offset : Pixels := 0;
                Dashes : X_Short_Integer := 4;
            end record;
        function Create_Gc (Display_Id : in Display;
                            Drawable_Id : in Drawable;
                            Value_Mask : in Gc_Mask_Type;
                            Values : in Gc_Value_Record) return Graphic_Context;
        procedure Copy_Gc (Display_Id : in Display;
                           Value_Mask : in Gc_Mask_Type;
                           Source : in Graphic_Context;
                           Destination : in Graphic_Context);
        procedure Change_Gc (Display_Id : in Display;
                             Gc : in Graphic_Context;
                             Value_Mask : in Gc_Mask_Type;
                             Values : in Gc_Value_Record);
        procedure Free_Gc (Display_Id : in Display;
                           Gc : in out Graphic_Context);
        procedure Set_State (Display_Id : in Display;
                             Gc : in Graphic_Context;
                             Foreground : in Pixels;
                             Background : in Pixels;
                             Gx_Function : in Gx_Function_Code;
                             Plane : in Plane_Mask);
        procedure Set_Function (Display_Id : in Display;
                                Gc : in Graphic_Context;
                                Gx_Function : in Gx_Function_Code);
        procedure Set_Plane_Mask (Display_Id : in Display;
                                  Gc : in Graphic_Context;
                                  Plane : in Plane_Mask);
        procedure Set_Foreground (Display_Id : in Display;
                                  Gc : in Graphic_Context;
                                  Foreground : in Pixels);
        procedure Set_Background (Display_Id : in Display;
                                  Gc : in Graphic_Context;
                                  Background : in Pixels);
        procedure Set_Line_Attributes (Display_Id : in Display;
                                       Gc : in Graphic_Context;
                                       Line_Width : in Pixels;
                                       Line_Style : in Line_Style_Type;
                                       Cap_Style : in Cap_Style_Type;
                                       Join_Style : in Join_Style_Type);
        procedure Set_Dashes (Display_Id : in Display;
                              Gc : in Graphic_Context;
                              Dash_Offset : in Pixels;
                              Dash_List : in Bits);  
        procedure Set_Fill_Style (Display_Id : in Display;
                                  Gc : in Graphic_Context;
                                  Fill_Style : in Fill_Style_Type);
        procedure Set_Fill_Rule (Display_Id : in Display;
                                 Gc : in Graphic_Context;
                                 Fill_Rule : in Fill_Rule_Type);
        procedure Query_Best_Size (Display_Id : in Display;
                                   Shape_Class : in Shape_Class_Type;
                                   Which_Screen : in Drawable;
                                   Width : in out Pixels;
                                   Height : in out Pixels);
        procedure Query_Best_Tile (Display_Id : in Display;
                                   Which_Screen : in Drawable;
                                   Width : in out Pixels;
                                   Height : in out Pixels);
        procedure Query_Best_Stipple (Display_Id : in Display;
                                      Which_Screen : in Drawable;
                                      Width : in out Pixels;
                                      Height : in out Pixels);
        procedure Set_Tile (Display_Id : in Display;
                            Gc : in Graphic_Context;
                            Tile : in Pixmap);
        procedure Set_Stipple (Display_Id : in Display;
                               Gc : in Graphic_Context;
                               Stipple : in Pixmap);
        procedure Set_Ts_Origin (Display_Id : in Display;
                                 Gc : in Graphic_Context;
                                 Origin : in Point);
        procedure Set_Font (Display_Id : in Display;
                            Gc : in Graphic_Context;
                            Font_Id : in Fonts.Font);
        procedure Set_Clip_Origin (Display_Id : in Display;
                                   Gc : in Graphic_Context;
                                   Origin : in Point);
        procedure Set_Clip_Mask (Display_Id : in Display;
                                 Gc : in Graphic_Context;
                                 Clip_Mask : in Pixmap);
        procedure Set_Clip_Rectangle (Display_Id : in Display;
                                      Gc : in Graphic_Context;
                                      Origin : in Point;
                                      Rectangles : in Rectangle_Array;
                                      Ordering : in Ordering_Type);
        procedure Set_Arc_Mode (Display_Id : in Display;
                                Gc : in Graphic_Context;
                                Arc_Mode : in Arc_Mode_Type);
        procedure Set_Subwindow_Mode (Display_Id : in Display;
                                      Gc : in Graphic_Context;
                                      Subwindow_Mode : in Subwindow_Mode_Type);
        procedure Set_Graphics_Exposures (Display_Id : in Display;
                                          Gc : in Graphic_Context;
                                          Graphics_Exposures : in Boolean);
        procedure Clear_Area (Display_Id : in Display;
                              Window_Id : in Window;
                              Bounds : in Rectangle;
                              Exposures : in Boolean);
        procedure Clear_Window (Display_Id : in Display; Window_Id : in Window);
        procedure Copy_Area (Display_Id : in Display;
                             Source : in Drawable;
                             Destination : in Drawable;
                             Gc : in Graphic_Context;
                             Source_Area : in Rectangle;
                             Dest_Origin : in Point);
        procedure Copy_Plane (Display_Id : in Display;
                              Source : in Drawable;
                              Destination : in Drawable;
                              Gc : in Graphic_Context;
                              Source_Area : in Rectangle;
                              Dest_Origin : in Point;
                              Plane : in Plane_Mask);
        procedure Draw_Point (Display_Id : in Display;
                              Drawable_Id : in Drawable;
                              Gc : in Graphic_Context;
                              Xy : in Point);
        procedure Draw_Points (Display_Id : in Display;
                               Drawable_Id : in Drawable;
                               Gc : in Graphic_Context;
                               Points : in Point_Array;
                               Coordinate_Mode : in Coordinate_Mode_Type);
        procedure Draw_Line (Display_Id : in Display;
                             Drawable_Id : in Drawable;
                             Gc : in Graphic_Context;
                             Point_1 : in Point;
                             Point_2 : in Point);
        procedure Draw_Lines (Display_Id : in Display;
                              Drawable_Id : in Drawable;
                              Gc : in Graphic_Context;
                              Points : in Point_Array;
                              Coordinate_Mode : in Coordinate_Mode_Type);
        procedure Draw_Segments (Display_Id : in Display;
                                 Drawable_Id : in Drawable;
                                 Gc : in Graphic_Context;
                                 Segments : in Segment_Array);
        procedure Draw_Rectangle (Display_Id : in Display;
                                  Drawable_Id : in Drawable;
                                  Gc : in Graphic_Context;
                                  Bounds : in Rectangle);
        procedure Draw_Rectangles (Display_Id : in Display;
                                   Drawable_Id : in Drawable;
                                   Gc : in Graphic_Context;
                                   Bounds : in Rectangle_Array);
        procedure Draw_Arc (Display_Id : in Display;
                            Drawable_Id : in Drawable;
                            Gc : in Graphic_Context;
                            Bounds : in Arc);
        procedure Draw_Arcs (Display_Id : in Display;
                             Drawable_Id : in Drawable;
                             Gc : in Graphic_Context;
                             Bounds : in Arc_Array);
        procedure Fill_Rectangle (Display_Id : in Display;
                                  Drawable_Id : in Drawable;
                                  Gc : in Graphic_Context;
                                  Bounds : in Rectangle);
        procedure Fill_Rectangles (Display_Id : in Display;
                                   Drawable_Id : in Drawable;
                                   Gc : in Graphic_Context;
                                   Rectangles : in Rectangle_Array);
        procedure Fill_Polygon (Display_Id : in Display;
                                Drawable_Id : in Drawable;
                                Gc : in Graphic_Context;
                                Points : in Point_Array;
                                Shape : in Shape_Type;
                                Coordinate_Mode : in Coordinate_Mode_Type);
        procedure Fill_Arc (Display_Id : in Display;
                            Drawable_Id : in Drawable;
                            Gc : in Graphic_Context;
                            Bounds : in Rectangle;
                            Angle_1 : in Angle;
                            Angle_2 : in Angle);
        procedure Fill_Arcs (Display_Id : in Display;
                             Drawable_Id : in Drawable;
                             Gc : in Graphic_Context;
                             Arcs : in Arc_Array);
        procedure Draw_Text (Display_Id : in Display;
                             Drawable_Id : in Drawable;
                             Gc : in Graphic_Context;
                             Baseline : in Point;
                             Text_Items : in Text_Item_Array);
        procedure Draw_Text (Display_Id : in Display;
                             Drawable_Id : in Drawable;
                             Gc : in Graphic_Context;
                             Baseline : in Point;
                             Text_Items : in Text_Item_8_Array);
        procedure Draw_Text_16 (Display_Id : in Display;
                                Drawable_Id : in Drawable;
                                Gc : in Graphic_Context;
                                Baseline : in Point;
                                Text_Items : in Text_Item_16_Array);
        procedure Draw_String (Display_Id : in Display;
                               Drawable_Id : in Drawable;
                               Gc : in Graphic_Context;
                               Baseline : in Point;
                               Text : in String);
        procedure Draw_String (Display_Id : in Display;
                               Drawable_Id : in Drawable;
                               Gc : in Graphic_Context;
                               Baseline : in Point;
                               Text : in String_8);
        procedure Draw_String_16 (Display_Id : in Display;
                                  Drawable_Id : in Drawable;
                                  Gc : in Graphic_Context;
                                  Baseline : in Point;
                                  Text : in Fonts.String_16);
        procedure Draw_Image_String (Display_Id : in Display;
                                     Drawable_Id : in Drawable;
                                     Gc : in Graphic_Context;
                                     Baseline : in Point;
                                     Text : in String);
        procedure Draw_Image_String (Display_Id : in Display;
                                     Drawable_Id : in Drawable;
                                     Gc : in Graphic_Context;
                                     Baseline : in Point;
                                     Text : in String_8);
        procedure Draw_Image_String_16 (Display_Id : in Display;
                                        Drawable_Id : in Drawable;
                                        Gc : in Graphic_Context;
                                        Baseline : in Point;
                                        Text : in Fonts.String_16);
        procedure Put_Image (Display_Id : in Display;
                             Drawable_Id : in Drawable;
                             Gc : in Graphic_Context;
                             X_Image : in Image;
                             Source_Xy : in Point;
                             Destination : in Rectangle);
        function Get_Image (Display_Id : in Display;
                            Drawable_Id : in Drawable;
                            Source : in Rectangle;
                            Planes : in Plane_Mask;
                            Format : in Pixmap_Format) return Image;
        function Get_Subimage (Display_Id : in Display;
                               Drawable_Id : in Drawable;
                               Source : in Rectangle;
                               Planes : in Plane_Mask;
                               Format : in Pixmap_Format;
                               Dest_Origin : in Point;
                               Destination : in Image) return Image;
        function Create_Image (Display_Id : in Display;
                               Visual_Id : in Visual;
                               Depth : in Depth_Type;
                               Format : in Pixmap_Format;
                               Offset : in Pixels;
                               Data : in Bits;  
                               Width : in Pixels;
                               Height : in Pixels;
                               Scanline_Pad : in Pixels;
                               Scanline_Length : in Pixels) return Image;
        function Get_Pixel (X_Image : in Image; Xy : in Point) return Pixels;
        procedure Put_Pixel
                     (X_Image : in Image; Xy : in Point; Pixel : in Pixels);
        function Sub_Image
                    (X_Image : in Image; Bounds : in Rectangle) return Image;
        procedure Add_Pixel (X_Image : in Image; Value : in Pixels);
        procedure Destroy_Image (X_Image : in out Image);
        procedure Read_Bitmap_File (Display_Id : in Display;
                                    Drawable_Id : in Drawable;
                                    Filename : in String;
                                    Width : out Pixels;
                                    Height : out Pixels;
                                    Hot_Spot : out Point;
                                    Bitmap : out Pixmap;
                                    Status : out Bitmap_Status_Type);
        function Write_Bitmap_File
                    (Display_Id : in Display;
                     Filename : in String;
                     Bitmap : in Pixmap;
                     Width : in Pixels;
                     Height : in Pixels;
                     Hot_Spot : in Point) return Bitmap_Status_Type;
        function Create_Bitmap_From_Data (Display_Id : in Display;
                                          Drawable_Id : in Drawable;
                                          Data : in Bits;  
                                          Width : in Pixels;
                                          Height : in Pixels) return Pixmap;
        function Create_Pixmap_From_Bitmap_Data
                    (Display_Id : in Display;
                     Drawable_Id : in Drawable;
                     Data : in Bits;  
                     Width : in Pixels;
                     Height : in Pixels;
                     Foreground : in Pixels;
                     Background : in Pixels;
                     Depth : in Depth_Type) return Pixmap;
        function Resource_Gc_From_Graphic_Context
                    (Gc : in Graphic_Context) return Resource_Gc;
    private
        type Gc_Record;
        type Graphic_Context is access Gc_Record;
        Null_Graphic_Context : constant Graphic_Context := null;
        type Image_Record;
        type Image is access Image_Record;
        Image_Context : constant Image := null;
        type Resource_Gc is range 0 .. (2 ** 28) - 1;
    end Graphic_Output;
    package Cursors is
        type Cursor is private;
        Null_Cursor : constant Cursor;
        subtype Cursor_Shape is X_Character;
        X_Cursor : constant Cursor_Shape := 0;
        Arrow : constant Cursor_Shape := 2;
        Based_Arrow_Down : constant Cursor_Shape := 4;
        Based_Arrow_Up : constant Cursor_Shape := 6;
        Boat : constant Cursor_Shape := 8;
        Bogosity : constant Cursor_Shape := 10;
        Bottom_Left_Corner : constant Cursor_Shape := 12;
        Bottom_Right_Corner : constant Cursor_Shape := 14;
        Bottom_Side : constant Cursor_Shape := 16;
        Bottom_Tee : constant Cursor_Shape := 18;
        Box_Spiral : constant Cursor_Shape := 20;
        Center_Ptr : constant Cursor_Shape := 22;
        Circle : constant Cursor_Shape := 24;
        Clock : constant Cursor_Shape := 26;
        Coffee_Mug : constant Cursor_Shape := 28;
        Cross : constant Cursor_Shape := 30;
        Cross_Reverse : constant Cursor_Shape := 32;
        Crosshair : constant Cursor_Shape := 34;
        Diamond_Cross : constant Cursor_Shape := 36;
        Dot : constant Cursor_Shape := 38;
        Dot_Box_Mask : constant Cursor_Shape := 40;
        Double_Arrow : constant Cursor_Shape := 42;
        Draft_Large : constant Cursor_Shape := 44;
        Draft_Small : constant Cursor_Shape := 46;
        Draped_Box : constant Cursor_Shape := 48;
        Exchange : constant Cursor_Shape := 50;
        Fleur : constant Cursor_Shape := 52;
        Gobbler : constant Cursor_Shape := 54;
        Gumby : constant Cursor_Shape := 56;
        Hand : constant Cursor_Shape := 58;
        Handl_Mask : constant Cursor_Shape := 60;
        Heart : constant Cursor_Shape := 62;
        Icon : constant Cursor_Shape := 64;
        Iron_Cross : constant Cursor_Shape := 66;
        Left_Ptr : constant Cursor_Shape := 68;
        Left_Side : constant Cursor_Shape := 70;
        Left_Tee : constant Cursor_Shape := 72;
        Leftbutton : constant Cursor_Shape := 74;
        Ll_Angle : constant Cursor_Shape := 76;
        Lr_Angle : constant Cursor_Shape := 78;
        Man : constant Cursor_Shape := 80;
        Middlebutton : constant Cursor_Shape := 82;
        Mouse : constant Cursor_Shape := 84;
        Pencil : constant Cursor_Shape := 86;
        Pirate : constant Cursor_Shape := 88;
        Plus : constant Cursor_Shape := 90;
        Question_Arrow : constant Cursor_Shape := 92;
        Right_Ptr : constant Cursor_Shape := 94;
        Right_Side : constant Cursor_Shape := 96;
        Right_Tee : constant Cursor_Shape := 98;
        Rightbutton : constant Cursor_Shape := 100;
        Rtl_Logo : constant Cursor_Shape := 102;
        Sailboat : constant Cursor_Shape := 104;
        Sb_Down_Arrow : constant Cursor_Shape := 106;
        Sb_H_Double_Arrow : constant Cursor_Shape := 108;
        Sb_Left_Arrow : constant Cursor_Shape := 110;
        Sb_Right_Arrow : constant Cursor_Shape := 112;
        Sb_Up_Arrow : constant Cursor_Shape := 114;
        Sb_V_Double_Arrow : constant Cursor_Shape := 116;
        Shuttle : constant Cursor_Shape := 118;
        Sizing : constant Cursor_Shape := 120;
        Spider : constant Cursor_Shape := 122;
        Spraycan : constant Cursor_Shape := 124;
        Star : constant Cursor_Shape := 126;
        Target : constant Cursor_Shape := 128;
        Tcross : constant Cursor_Shape := 130;
        Top_Left_Arrow : constant Cursor_Shape := 132;
        Top_Left_Corner : constant Cursor_Shape := 134;
        Top_Right_Corner : constant Cursor_Shape := 136;
        Top_Side : constant Cursor_Shape := 138;
        Top_Tee : constant Cursor_Shape := 140;
        Trek : constant Cursor_Shape := 142;
        Ul_Angle : constant Cursor_Shape := 144;
        Umbrella : constant Cursor_Shape := 146;
        Ur_Angle : constant Cursor_Shape := 148;
        Watch : constant Cursor_Shape := 150;
        Xterm : constant Cursor_Shape := 152;
        Num_Glyphs : constant Cursor_Shape := 154;
        function Create_Font_Cursor
                    (Display_Id : in Display; Shape : in Cursor_Shape)
                    return Cursor;
        function Create_Pixmap_Cursor (Display_Id : in Display;
                                       Source : in Pixmap;
                                       Mask : in Pixmap;
                                       Foreground : in Colors.Color_Record;
                                       Background : in Colors.Color_Record;
                                       Hot_Spot : in Point) return Cursor;
        function Create_Glyph_Cursor
                    (Display_Id : in Display;
                     Source_Font : in Fonts.Font;
                     Mask_Font : in Fonts.Font;
                     Source_Glyph : in X_Character;
                     Mask_Glyph : in X_Character;
                     Foreground : in Colors.Color_Record;
                     Background : in Colors.Color_Record) return Cursor;
        procedure Recolor_Cursor (Display_Id : in Display;
                                  Cursor_Id : in Cursor;
                                  Foreground : in Colors.Color_Record;
                                  Background : in Colors.Color_Record);
        procedure Free_Cursor (Display_Id : in Display;
                               Cursor_Id : in out Cursor);
        procedure Query_Best_Cursor (Display_Id : in Display;
                                     Drawable_Id : in Drawable;
                                     Width : in out Pixels;
                                     Height : in out Pixels);
        procedure Define_Cursor (Display_Id : in Display;
                                 Window_Id : in Window;
                                 Cursor_Id : in Cursor);
        procedure Undefine_Cursor
                     (Display_Id : in Display; Window_Id : in Window);
    private
        type Cursor is range 0 .. (2 ** 28) - 1;
        Null_Cursor : constant Cursor := Cursor (0);
    end Cursors;
    package Cut_And_Paste is
        procedure Store_Buffer (Display_Id : in Display;
                                Data : in Bytes;
                                Number_Of_Bytes : in Positive;
                                To_Buffer : in Natural := 0);
        function Fetch_Buffer
                    (Display_Id : in Display; From_Buffer : in Natural := 0)
                    return Bytes;
        procedure Rotate_Buffers (Display_Id : in Display; By : in Integer);
    end Cut_And_Paste;
    package Regions is
        type Region is private;
        Null_Region : constant Region;
        function Polygon_Region
                    (Points : in Point_Array;
                     Rule : in Graphic_Output.Fill_Rule_Type) return Region;
        procedure Clip_Box (Region_Id : in Region; Bounds : in out Rectangle);
        function Create_Region return Region;
        procedure Set_Region (Display_Id : in Display;
                              Gc : in Graphic_Output.Graphic_Context;
                              Region_Id : in Region);
        procedure Destroy_Region (Region_Id : in out Region);
        procedure Offset_Region (Region_Id : in Region; Delta_Xy : in Point);
        procedure Shrink_Region (Region_Id : in Region; Delta_Xy : in Point);
        procedure Intersect_Region (Source_A : in Region;
                                    Source_B : in Region;
                                    Destination : in Region);
        procedure Union_Region (Source_A : in Region;
                                Source_B : in Region;
                                Destination : in Region);
        procedure Union_Rectangle_With_Region (Source_A : in Region;
                                               Source_B : in Region;
                                               Destination : in Region);
        procedure Subtract_Region (Source_A : in Region;
                                   Source_B : in Region;
                                   Destination : in Region);
        procedure Xor_Region (Source_A : in Region;
                              Source_B : in Region;
                              Destination : in Region);
        function Empty_Region (Region_Id : in Region) return Boolean;
        function Equal_Region (Region_1, Region_2 : in Region) return Boolean;
        function Point_In_Region
                    (Region_Id : in Region; Xy : in Point) return Boolean;
        function Rectangle_In_Region
                    (Region_Id : in Region; Bounds : in Rectangle)
                    return Boolean;
    private
        type Region is range 0 .. (2 ** 28) - 1;
        Null_Region : constant Region := Region (0);
    end Regions;
    package Keyboard is
        type Keycode is range 8 .. 255;
        type Keycode_Array is array (Natural range <>) of Keycode;
        type Key_Sym is range 0 .. (2 ** 28) - 1;
        type Key_Sym_Array is array (Natural range <>) of Key_Sym;
        type Key_Sym_List is access Key_Sym_Array;
        type Keyboard_Encoding_Array is
           array (Keycode range <>) of Key_Sym_List;
        type Key_Vector_Mask_Type is
           array (Keycode range Keycode'First .. Keycode'Last) of Boolean;
        type Milliseconds_Type is range -1 .. 5_000;
        type Bell_Volume_Type is range -100 .. 100;
        type Percent_Type is range -1 .. 100;
        type Hertz_Type is range -1 .. 1000;
        type Led_Mode_Type is (Led_Mode_Off, Led_Mode_On);
        type Led_Type is range 1 .. 32;
        subtype Led_Mask_Type is Boolean_Array (0 .. 31);
        type Auto_Repeat_Mode_Type is
           (Auto_Repeat_Off, Auto_Repeat_On, Auto_Repeat_Default);
        type Keyboard_Control_Record is
            record
                Key_Click_Percent : Percent_Type;
                Bell_Volume : Bell_Volume_Type;
                Bell_Pitch : Hertz_Type;
                Bell_Duration : Milliseconds_Type;
                Led : Led_Type;
                Led_Mode : Led_Mode_Type;
                Key : Keycode;
                Auto_Repeat_Mode : Auto_Repeat_Mode_Type;
            end record;
        subtype Keyboard_Control_Mask is Boolean_Array (0 .. 7);
        Key_Click_Percent_Mask : constant Keyboard_Control_Mask :=
           Keyboard_Control_Mask'(0 => True, others => False);
        Bell_Volume_Mask : constant Keyboard_Control_Mask :=
           Keyboard_Control_Mask'(1 => True, others => False);
        Bell_Pitch_Mask : constant Keyboard_Control_Mask :=
           Keyboard_Control_Mask'(2 => True, others => False);
        Bell_Duration_Mask : constant Keyboard_Control_Mask :=
           Keyboard_Control_Mask'(3 => True, others => False);
        Led_Mask : constant Keyboard_Control_Mask :=
           Keyboard_Control_Mask'(4 => True, others => False);
        Led_Mode_Mask : constant Keyboard_Control_Mask :=
           Keyboard_Control_Mask'(5 => True, others => False);
        Keycode_Mask : constant Keyboard_Control_Mask :=
           Keyboard_Control_Mask'(6 => True, others => False);
        Auto_Repeat_Mode_Mask : constant Keyboard_Control_Mask :=
           Keyboard_Control_Mask'(7 => True, others => False);
        type Keyboard_State_Record is
            record
                Key_Click_Percent : Percent_Type;
                Bell_Volume : Bell_Volume_Type;
                Bell_Pitch : Hertz_Type;
                Bell_Duration : Milliseconds_Type;
                Led_Mask : Led_Mask_Type;
                Global_Auto_Repeat : Auto_Repeat_Mode_Type;
                Auto_Repeats : Key_Vector_Mask_Type;
            end record;
        type Modifier_Type is (Lock, Shift, Control, Mod_1,
                               Mod_2, Mod_3, Mod_4, Mod_5);
        type Modifier_Key_Record (Max_Keys_Per_Mod : Natural) is
            record
                Modifier_Map : Keycode_Array (0 .. Max_Keys_Per_Mod);
            end record;
        type Modifier_Keymap is access Modifier_Key_Record;
        procedure Display_Keycodes (Display_Id : in Display;
                                    Min_Keycodes : out Keycode;
                                    Max_Keycodes : out Keycode);
        procedure Rebind_Keysym (Display_Id : in X_Windows.Display;
                                 The_Symbol : in Key_Sym;
                                 Modifiers : in Key_Sym_List;
                                 Text : in String);
        function String_To_Keysym (Name : in String) return Key_Sym;
        function Keysym_To_String (The_Symbol : in Key_Sym) return String;
        procedure Keycode_To_Keysym (Display_Id : in Display;
                                     Key_Code : in Keycode;
                                     Key : out Keycode;
                                     The_Symbol : out Key_Sym);
        function Keysym_To_Keycode
                    (Display_Id : in Display; The_Symbol : in Key_Sym)
                    return Keycode;
        procedure Change_Keyboard_Control
                     (Display_Id : in Display;
                      Value_Mask : in Keyboard_Control_Mask;
                      Values : in Keyboard_Control_Record);
        function Get_Keyboard_Control
                    (Display_Id : in Display) return Keyboard_State_Record;
        procedure Auto_Repeat_On (Display_Id : in Display);
        procedure Auto_Repeat_Off (Display_Id : in Display);
        procedure Bell (Display_Id : in Display; Volume : in Bell_Volume_Type);
        function Query_Keymap (Display_Id : in Display)
                              return Keyboard.Key_Vector_Mask_Type;
        procedure Get_Keyboard_Mapping (Display_Id : in Display;
                                        Syms : in out Keyboard_Encoding_Array);
        procedure Change_Keyboard_Mapping (Display_Id : in Display;
                                           Syms : in Keyboard_Encoding_Array);
        function Set_Modifier_Mapping
                    (Display_Id : in Display; Modifiers : in Modifier_Keymap)
                    return Boolean;
        procedure Insert_Modifier_Map_Entry (Map : in out Modifier_Keymap;
                                             Key : in Keycode;
                                             Modifier : in Modifier_Type);
        procedure Delete_Modifier_Map_Entry (Map : in out Modifier_Keymap;
                                             Key : in Keycode;
                                             Modifier : in Modifier_Type);
        function Get_Modifier_Mapping
                    (Display_Id : in Display) return Modifier_Keymap;
        function Is_Keypad_Key (Sym : in Key_Sym) return Boolean;
        function Is_Cursor_Key (Sym : in Key_Sym) return Boolean;
        function Is_Pf_Key (Sym : in Key_Sym) return Boolean;
        function Is_Function_Key (Sym : in Key_Sym) return Boolean;
        function Is_Misc_Function_Key (Sym : in Key_Sym) return Boolean;
        function Is_Modifier_Key (Sym : in Key_Sym) return Boolean;
        pragma Inline (Is_Keypad_Key, Is_Cursor_Key, Is_Pf_Key,
                       Is_Function_Key, Is_Misc_Function_Key, Is_Modifier_Key);
    end Keyboard;
    package Events is
        type Event_Queue_Mode_Type is
           (Queued_Already, Queued_After_Flush, Queued_After_Reading);
        type Event_Type is (Unused_Event_1, Unused_Event_2, Key_Press,
                            Key_Release, Button_Press, Button_Release,
                            Motion_Notify, Enter_Notify, Leave_Notify,
                            Focus_In, Focus_Out, Keymap_Notify, Expose,
                            Graphics_Expose, No_Expose, Visibility_Notify,
                            Create_Notify, Destroy_Notify, Unmap_Notify,
                            Map_Notify, Map_Request, Reparent_Notify,
                            Configure_Notify, Configure_Request, Gravity_Notify,
                            Resize_Request, Circulate_Notify, Circulate_Request,
                            Property_Notify, Selection_Clear, Selection_Request,
                            Selection_Notify, Colormap_Notify,
                            Client_Message, Mapping_Notify, Last_Event);
        subtype Event_Mask_Type is Boolean_Array (0 .. 31);
        No_Event_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(others => False);
        Key_Press_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(0 => True, others => False);
        Key_Release_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(1 => True, others => False);
        Button_Press_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(2 => True, others => False);
        Button_Release_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(3 => True, others => False);
        Enter_Window_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(4 => True, others => False);
        Leave_Window_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(5 => True, others => False);
        Pointer_Motion_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(6 => True, others => False);
        Pointer_Motion_Hint_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(7 => True, others => False);
        Button_1_Motion_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(8 => True, others => False);
        Button_2_Motion_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(9 => True, others => False);
        Button_3_Motion_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(10 => True, others => False);
        Button_4_Motion_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(11 => True, others => False);
        Button_5_Motion_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(12 => True, others => False);
        Button_Motion_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(13 => True, others => False);
        Keymap_State_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(14 => True, others => False);
        Exposure_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(15 => True, others => False);
        Visibility_Change_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(16 => True, others => False);
        Structure_Change_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(17 => True, others => False);
        Resize_Redirect_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(18 => True, others => False);
        Substructure_Notify_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(19 => True, others => False);
        Substructure_Redirect_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(20 => True, others => False);
        Focus_Change_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(21 => True, others => False);
        Property_Change_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(22 => True, others => False);
        Colormap_Change_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(23 => True, others => False);
        Owner_Grab_Button_Mask : constant Event_Mask_Type :=
           Event_Mask_Type'(24 => True, others => False);
        subtype Key_And_Button_Mask is Boolean_Array (0 .. 15);
        Shift_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(0 => True, others => False);
        Lock_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(1 => True, others => False);
        Control_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(2 => True, others => False);
        Mod_1_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(3 => True, others => False);
        Mod_2_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(4 => True, others => False);       Mod_3_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(5 => True, others => False);
        Mod_4_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(6 => True, others => False);
        Mod_5_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(7 => True, others => False);
        Button_1_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(8 => True, others => False);
        Button_2_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(9 => True, others => False);
        Button_3_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(10 => True, others => False);
        Button_4_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(11 => True, others => False);
        Button_5_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(12 => True, others => False);
        Any_Modifier_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(15 => True, others => False);
        Any_Button_Mask : constant Key_And_Button_Mask :=
           Key_And_Button_Mask'(others => False);
        type Button_Name_Type is (Any_Button, Button_1, Button_2,
                                  Button_3, Button_4, Button_5);
        type Notify_Mode_Type is (Notify_Normal, Notify_Grab,
                                  Notify_Ungrab, Notify_While_Grabbed);
        Notify_Hint : constant Notify_Mode_Type := Notify_Grab;
        type Notify_Detail_Type is (Notify_Ancestor, Notify_Virtual,
                                    Notify_Inferior, Notify_Nonlinear,
                                    Notify_Nonlinear_Virtual, Notify_Pointer,
                                    Notify_Pointer_Root, Notify_Detail_None);
        type Mapping_Request_Type is
           (Mapping_Modifier, Mapping_Keyboard, Mapping_Pointer);
        type Colormap_State_Type is (Uninstalled, Installed);
        type Property_State_Type is (New_Value, Delete);
        type Placement_Type is (Place_On_Top, Place_On_Bottom);
        subtype Configure_Request_Mask_Type is Boolean_Array (0 .. 8);
        type Visibility_Type is (Visibility_Unobscured,
                                 Visibility_Partially_Obscured,
                                 Visibility_Full_Obscured);
        type Graphic_Expose_Code_Type is range 0 .. (2 ** 16 - 1);
        X_Copy_Area : constant Graphic_Expose_Code_Type := 62;
        X_Copy_Plane : constant Graphic_Expose_Code_Type := 63;
        type Event_Record (Kind : Event_Type := Enter_Notify);
        type Event is access Event_Record;
        type Any_Event_Record is
            record
                Window_Id : Window;
            end record;
        type Any_Event is access Any_Event_Record;
        type Key_Event_Record is
            record
                Window_Id : Window;
                Root : Window;
                Subwindow : Window;
                Event_Time : Time;
                X : Coordinate;
                Y : Coordinate;
                X_Root : Coordinate;
                Y_Root : Coordinate;
                State : Key_And_Button_Mask;
                Key_Code : Keyboard.Keycode;
                Same_Screen : Boolean;
            end record;
        type Key_Event is access Key_Event_Record;
        type Button_Event_Record is
            record
                Window_Id : Window;
                Root : Window;
                Subwindow : Window;
                Event_Time : Time;
                X : Coordinate;
                Y : Coordinate;
                X_Root : Coordinate;
                Y_Root : Coordinate;
                State : Key_And_Button_Mask;
                Button : Button_Name_Type;
                Same_Screen : Boolean;
            end record;
        type Button_Event is access Button_Event_Record;
        type Motion_Event_Record is
            record
                Window_Id : Window;
                Root : Window;
                Subwindow : Window;
                Event_Time : Time;
                X : Coordinate;
                Y : Coordinate;
                X_Root : Coordinate;
                Y_Root : Coordinate;
                State : Key_And_Button_Mask;
                Is_Hint : Notify_Mode_Type;
                Same_Screen : Boolean;
            end record;
        type Motion_Event is access Motion_Event_Record;
        type Crossing_Event_Record is
            record
                Window_Id : Window;
                Root : Window;
                Subwindow : Window;
                Event_Time : Time;
                X : Coordinate;
                Y : Coordinate;
                X_Root : Coordinate;
                Y_Root : Coordinate;
                Mode : Notify_Mode_Type;
                Detail : Notify_Detail_Type;
                Same_Screen : Boolean;
                Focus : Boolean;
                State : Key_And_Button_Mask;
            end record;
        type Crossing_Event is access Crossing_Event_Record;
        type Focus_Change_Event_Record is
            record
                Window_Id : Window;
                Mode : Notify_Mode_Type;
                Detail : Notify_Detail_Type;
            end record;
        type Focus_Change_Event is access Focus_Change_Event_Record;
        type Keymap_Event_Record is
            record
                Window_Id : Window;
                Key_Vector : Keyboard.Key_Vector_Mask_Type;
            end record;
        type Keymap_Event is access Keymap_Event_Record;
        type Expose_Event_Record is
            record
                Window_Id : Window;
                X : Coordinate;
                Y : Coordinate;
                Width : Pixels;
                Height : Pixels;
                Count : Natural;
            end record;
        type Expose_Event is access Expose_Event_Record;
        type Graphics_Expose_Event_Record is
            record
                D : Drawable;
                X : Coordinate;
                Y : Coordinate;
                Width : Pixels;
                Height : Pixels;
                Count : Natural;
                Major_Code : Graphic_Expose_Code_Type;
                Minor_Code : Graphic_Expose_Code_Type;
            end record;
        type Graphics_Expose_Event is access Graphics_Expose_Event_Record;
        type No_Expose_Event_Record is
            record
                D : Drawable;
                Major_Code : Graphic_Expose_Code_Type;
                Minor_Code : Graphic_Expose_Code_Type;
            end record;
        type No_Expose_Event is access No_Expose_Event_Record;
        type Visibility_Event_Record is
            record
                Window_Id : Window;
                State : Visibility_Type;
            end record;
        type Visibility_Event is access Visibility_Event_Record;
        type Create_Window_Event_Record is
            record
                Parent : Window;
                Window_Id : Window;
                X : Coordinate;
                Y : Coordinate;
                Width : Pixels;
                Height : Pixels;
                Border_Width : Pixels;
                Override_Redirect : Boolean;
            end record;
        type Create_Window_Event is access Create_Window_Event_Record;
        type Destroy_Window_Event_Record is
            record
                Event_Window : Window;
                Window_Id : Window;
            end record;
        type Destroy_Window_Event is access Destroy_Window_Event_Record;
        type Unmap_Event_Record is
            record
                Event_Window : Window;
                Window_Id : Window;
                From_Configure : Boolean;
            end record;
        type Unmap_Event is access Unmap_Event_Record;
        type Map_Event_Record is
            record
                Event_Window : Window;
                Window_Id : Window;
                Override_Redirect : Boolean;
            end record;
        type Map_Event is access Map_Event_Record;
        type Map_Request_Event_Record is
            record
                Parent : Window;
                Window_Id : Window;
            end record;
        type Map_Request_Event is access Map_Request_Event_Record;
        type Reparent_Event_Record is
            record
                Event_Window : Window;
                Window_Id : Window;
                Parent : Window;
                X : Coordinate;
                Y : Coordinate;
                Override_Redirect : Boolean;
            end record;
        type Reparent_Event is access Reparent_Event_Record;
        type Resize_Request_Event_Record is
            record
                Window_Id : Window;
                Width : Pixels;
                Height : Pixels;
            end record;
        type Resize_Request_Event is access Resize_Request_Event_Record;
        type Gravity_Event_Record is
            record
                Event_Window : Window;
                Window_Id : Window;
                X : Coordinate;
                Y : Coordinate;
            end record;
        type Gravity_Event is access Gravity_Event_Record;
        type Configure_Event_Record is
            record
                Event_Window : Window;
                Window_Id : Window;
                X : Coordinate;
                Y : Coordinate;
                Width : Pixels;
                Height : Pixels;
                Border_Width : Pixels;
                Above : Window;
                Override_Redirect : Boolean;
            end record;
        type Configure_Event is access Configure_Event_Record;
        type Configure_Request_Event_Record is
            record
                Parent : Window;
                Window_Id : Window;
                X : Coordinate;
                Y : Coordinate;
                Width : Pixels;
                Height : Pixels;
                Border_Width : Pixels;
                Above : Window;
                Detail : Stack_Mode_Type;
                Value_Mask : Configure_Request_Mask_Type;
            end record;
        type Configure_Request_Event is access Configure_Request_Event_Record;
        type Circulate_Event_Record is
            record
                Parent : Window;
                Window_Id : Window;
                Place : Placement_Type;
            end record;
        type Circulate_Event is access Circulate_Event_Record;
        type Circulate_Request_Event_Record is
            record
                Parent : Window;
                Window_Id : Window;
                Place : Placement_Type;
            end record;
        type Circulate_Request_Event is access Circulate_Request_Event_Record;
        type Property_Event_Record is
            record
                Window_Id : Window;
                Atom_Id : Atoms.Atom;
                Time_Stamp : Time;
                State : Property_State_Type;
            end record;
        type Property_Event is access Property_Event_Record;
        type Selection_Clear_Event_Record is
            record
                Owner : Window;
                Selection : Atoms.Atom;
                Time_Stamp : Time;
            end record;
        type Selection_Clear_Event is access Selection_Clear_Event_Record;
        type Selection_Request_Event_Record is
            record
                Owner : Window;
                Requestor : Window;
                Selection : Atoms.Atom;
                Target : Atoms.Atom;
                Property : Atoms.Atom;
                Time_Stamp : Time;
            end record;
        type Selection_Request_Event is access Selection_Request_Event_Record;
        type Selection_Event_Record is
            record
                Requestor : Window;
                Selection : Atoms.Atom;
                Target : Atoms.Atom;
                Property : Atoms.Atom;
                Time_Stamp : Time;
            end record;
        type Selection_Event is access Selection_Event_Record;
        type Colormap_Event_Record is
            record
                Window_Id : Window;
                Colormap : Colors.Color_Map;
                New_Map : Boolean;
                State : Colormap_State_Type;
            end record;
        type Colormap_Event is access Colormap_Event_Record;
        type Client_Message_Event_Record is
            record
                Window_Id : Window;
                Message_Type : Atoms.Atom;
                Format : Property_Format_Type;
                Data : Long_Array (1 .. 5);
            end record;
        type Client_Message_Event is access Client_Message_Event_Record;
        type Mapping_Event_Record is
            record
                Window_Id : Window;
                Request : Mapping_Request_Type;
                First_Keycode : Keyboard.Keycode;
                Count : Keyboard.Keycode;
            end record;
        type Mapping_Event is access Mapping_Event_Record;
        type Event_Record (Kind : Event_Type := Enter_Notify) is
            record
                Serial : X_Long_Integer;
                Send_Event : Boolean;
                Display_Id : Display;
                case Kind is
                    when Button_Press | Button_Release =>
                        Button : Button_Event_Record;
                    when Circulate_Notify =>
                        Circulate : Circulate_Event_Record;
                    when Circulate_Request =>
                        Circulate_Reqst : Circulate_Request_Event_Record;
                    when Client_Message =>
                        Client : Client_Message_Event_Record;
                    when Colormap_Notify =>
                        Colormap : Colormap_Event_Record;
                    when Configure_Notify =>
                        Configure : Configure_Event_Record;
                    when Configure_Request =>
                        Configure_Reqst : Configure_Request_Event_Record;
                    when Create_Notify =>
                        Create_Window : Create_Window_Event_Record;
                    when Destroy_Notify =>
                        Destroy_Window : Destroy_Window_Event_Record;
                    when Enter_Notify | Leave_Notify =>
                        Crossing : Crossing_Event_Record;
                    when Expose =>
                        Expose_Notify : Expose_Event_Record;
                    when Focus_In | Focus_Out =>
                        Focus : Focus_Change_Event_Record;
                    when Graphics_Expose =>
                        Graphics : Graphics_Expose_Event_Record;
                    when Gravity_Notify =>
                        Gravity : Gravity_Event_Record;
                    when Key_Press | Key_Release =>
                        Key : Key_Event_Record;
                    when Keymap_Notify =>
                        Keymap : Keymap_Event_Record;
                    when Map_Notify | Mapping_Notify =>
                        Map : Map_Event_Record;
                    when Map_Request =>
                        Map_Reqst : Map_Request_Event_Record;
                    when Motion_Notify =>
                        Motion : Motion_Event_Record;
                    when No_Expose =>
                        Noexpose : No_Expose_Event_Record;
                    when Property_Notify =>
                        Property : Property_Event_Record;
                    when Reparent_Notify =>
                        Reparent : Reparent_Event_Record;
                    when Resize_Request =>
                        Resize_Reqst : Resize_Request_Event_Record;
                    when Selection_Clear =>
                        Selection_Clr : Selection_Clear_Event_Record;
                    when Selection_Notify =>
                        Selection : Selection_Event_Record;
                    when Selection_Request =>
                        Selection_Reqst : Selection_Request_Event_Record;
                    when Unmap_Notify =>
                        Unmap : Unmap_Event_Record;
                    when Visibility_Notify =>
                        Visibility : Visibility_Event_Record;
                    when others =>
                        Any : Any_Event_Record;
                end case;
            end record;
        type Time_Coord_Record is
            record
                X, Y : Coordinate;
                Timestamp : Time;
            end record;
        type Time_Coord_Array is array (Natural range <>) of Time_Coord_Record;
        type Time_Coord_List is access Time_Coord_Array;
        type Compose_Status_Record is
            record
                Compose_Pointer : String_Pointer;
                Chars_Matched : X_Long_Integer;
            end record;
        function Display_Motion_Buffer_Size
                    (Display_Id : in Display) return X_Long_Integer;
        procedure Select_Input (Display_Id : in Display;
                                Window_Id : in Window;
                                Mask : in Event_Mask_Type);
        procedure Flush (Display_Id : in Display);
        procedure Sync (Display_Id : in Display; Discard : in Boolean := False);
        function Events_Queued
                    (Display_Id : in Display; Mode : in Event_Queue_Mode_Type)
                    return Natural;
        function Pending (Display_Id : in Display) return Natural;
        procedure Next_Event (Display_Id : in Display;
                              The_Event : in out Event);
        procedure Free_Event (The_Event : in out Event);       procedure Peek_Event (Display_Id : in Display;
                              The_Event : in out Event);
        procedure Put_Back_Event
                     (Display_Id : in Display; The_Event : in Event);
        procedure Window_Event (Display_Id : in Display;
                                Window_Id : in Window;
                                Mask : in Event_Mask_Type;
                                The_Event : in out Event);
        procedure Check_Window_Event (Display_Id : in Display;
                                      Window_Id : in Window;
                                      Mask : in Event_Mask_Type;
                                      The_Event : in out Event;
                                      Event_Found : in out Boolean);
        procedure Check_Typed_Event (Display_Id : in Display;
                                     Event_Kind : in Event_Type;
                                     Event_Return : in out Event;
                                     Event_Found : in out Boolean);
        procedure Check_Typed_Window_Event (Display_Id : in Display;
                                            Window_Id : in Window;
                                            Event_Kind : in Event_Type;
                                            Event_Return : in out Event;
                                            Event_Found : in out Boolean);
        procedure Mask_Event (Display_Id : in Display;
                              Mask : in Event_Mask_Type;
                              The_Event : in out Event);
        procedure Check_Mask_Event (Display_Id : in Display;
                                    Mask : in Event_Mask_Type;
                                    The_Event : in out Event;
                                    Event_Found : in out Boolean);
        function Get_Motion_Events (Display_Id : in Display;
                                    Window_Id : in Window;
                                    Start : in Time;
                                    Stop : in Time) return Time_Coord_List;
        procedure Send_Event (Display_Id : in Display;
                              Window_Id : in Window;
                              Propagate : in Boolean;
                              Mask : in Event_Mask_Type;
                              The_Event : in Event);
        function Lookup_Keysym (The_Event : in Event; Index : in Natural)
                               return Keyboard.Key_Sym;
        procedure Refresh_Keyboard_Mapping (The_Event : in Event);
        procedure Lookup_String (The_Event : in Event;
                                 Buffer : in out String_Pointer;
                                 The_Symbol : out Keyboard.Key_Sym;
                                 Status : out Compose_Status_Record);
    end Events;
    package Window_Manager is
        type Resource is private;
        type Grab_Mode is (Sync, Async);
        type Grab_Reply_Status is
           (Grab_Success, Already_Grabbed, Grab_Invalid_Time,
            Grab_Not_Viewable, Grab_Frozen);
        type Notify_Modes is (Normal, Grab, Ungrab, While_Grabbed);
        type Notify_Detail is (Ancestor, Virtual, Inferior,
                               Nonlinear, Nonlinear_Virtual,
                               Pointer, Pointer_Root, Detail_None);
        type Visibility_Notify_Type is
           (Unobscured, Partially_Obscured, Fully_Obscured);
        type Circulation_Request is (Place_On_Top, Place_On_Bottom);
        type Protocol_Family is (Internet, Decnet, Chaos);
        type Property_Notification is (New_Value, Delete);
        type Colormap_Notification is (Uninstalled, Installed);
        type Map_Status is (Success, Busy, Failed);
        type Allow_Event_Mode is (Async_Pointer, Sync_Pointer, Replay_Pointer,
                                  Async_Keyboard, Sync_Keyboard,
                                  Replay_Keyboard, Async_Both, Sync_Both);
        type Revert_Mode is
           (Revert_To_None, Revert_To_Pointer_Root, Revert_To_Parent);
        type Close_Mode is (Destroy_All, Retain_Permanent, Retain_Temporary);
        type Map_Array is array (Natural range <>) of X_Short_Integer;
        type Screen_Saver_Mode is (Active, Reset);
        type Exposure_Type is (Dont_Allow_Exposures,
                               Allow_Exposures, Default_Exposures);
        type Blanking_Type is (Dont_Prefer_Blanking,
                               Prefer_Blanking, Default_Blanking);
        type Host_Address_Record is
            record
                Family : X_Id;
                Length : X_Id;
                The_Address : System.Address;
            end record;
        type Host_Array is array (Natural range <>) of Host_Address_Record;
        type Host_List is access Host_Array;
        type Access_Control_Mode is (Enable, Disable);
        procedure Grab_Button (Display_Id : in Display;
                               Button : in Events.Button_Name_Type;
                               Modifiers : in Events.Key_And_Button_Mask;
                               Window_Id : in Window;
                               Owner_Events : in Boolean;
                               Grab_Events : in Events.Event_Mask_Type;
                               Pointer_Mode : in Grab_Mode;
                               Keyboard_Mode : in Grab_Mode;
                               Confine_To : in Window;
                               Cursor_Id : in Cursors.Cursor);
        procedure Ungrab_Button (Display_Id : in Display;
                                 Button : in Events.Button_Name_Type;
                                 Modifiers : in Events.Key_And_Button_Mask;
                                 Window_Id : in Window);
        function Grab_Pointer (Display_Id : in Display;
                               Window_Id : in Window;
                               Owner_Events : in Boolean;
                               Grab_Events : in Events.Event_Mask_Type;
                               Pointer_Mode : in Grab_Mode;
                               Keyboard_Mode : in Grab_Mode;
                               Confine_To : in Window;
                               Cursor_Id : in Cursors.Cursor;
                               Grab_Time : in Time) return Grab_Reply_Status;
        procedure Ungrab_Pointer
                     (Display_Id : in Display; Ungrab_Time : in Time);
        procedure Change_Active_Pointer_Grab
                     (Display_Id : in Display;
                      Grab_Events : in Events.Event_Mask_Type;
                      Cursor_Id : in Cursors.Cursor;
                      Grab_Time : in Time);
        function Grab_Keyboard (Display_Id : in Display;
                                Window_Id : in Window;
                                Owner_Events : in Boolean;
                                Pointer_Mode : in Grab_Mode;
                                Keyboard_Mode : in Grab_Mode;
                                Grab_Time : in Time) return Grab_Reply_Status;
        procedure Ungrab_Keyboard
                     (Display_Id : in Display; Ungrab_Time : in Time);
        procedure Grab_Key (Display_Id : in Display;
                            Key : in Keyboard.Keycode;
                            Modifiers : in Events.Key_And_Button_Mask;
                            Owner_Events : in Boolean;
                            Window_Id : in Window;
                            Pointer_Mode : in Grab_Mode;
                            Keyboard_Mode : in Grab_Mode);
        procedure Ungrab_Key (Display_Id : in Display;
                              Key : in Keyboard.Keycode;
                              Modifiers : in Events.Key_And_Button_Mask;
                              Window_Id : in Window);
        procedure Allow_Events (Display_Id : in Display;
                                Mode : in Allow_Event_Mode;
                                Event_Time : in Time);
        procedure Grab_Server (Display_Id : in Display);
        procedure Ungrab_Server (Display_Id : in Display);
        procedure Warp_Pointer (Display_Id : in Display;
                                Source : in Window;
                                Destination : in Window;
                                Source_Bounds : in Rectangle;
                                Dest_Xy : in Point);
        procedure Set_Input_Focus (Display_Id : in Display;
                                   Focus : in Window;
                                   Mode : in Revert_Mode;
                                   Grab_Time : in Time);
        procedure Get_Input_Focus (Display_Id : in Display;
                                   Focus : in out Window;
                                   Mode : in out Revert_Mode);
        procedure Change_Pointer_Control (Display_Id : in Display;
                                          Do_Accel : in Boolean;                                         Do_Threshold : in Boolean;
                                          Numerator : in Integer;
                                          Denominator : in Integer;
                                          Threshold : in Integer);
        procedure Get_Pointer_Control (Display_Id : in Display;
                                       Numerator : out Integer;
                                       Denominator : out Integer;
                                       Threshold : out Integer);
        procedure Set_Pointer_Mapping (Display_Id : in Display;
                                       Map : in Map_Array;
                                       Status : out Map_Status);
        procedure Get_Pointer_Mapping (Display_Id : in Display;
                                       Map : in out Map_Array;
                                       Status : out Map_Status);
        procedure Set_Close_Down_Mode
                     (Display_Id : in Display; Mode : in Close_Mode);
        procedure Kill_Client (Display_Id : in Display;
                               Resource_Id : in Resource);
        procedure Set_Screen_Saver (Display_Id : in Display;
                                    Time_Out : in Time;
                                    Interval : in Time;
                                    Blanking : in Blanking_Type;
                                    Exposures : in Exposure_Type);
        procedure Force_Screen_Saver (Display_Id : in Display;
                                      Mode : in Screen_Saver_Mode);
        procedure Activate_Screen_Saver (Display_Id : in Display);
        procedure Reset_Screen_Saver (Display_Id : in Display);
        procedure Get_Screen_Saver (Display_Id : in Display;
                                    Time_Out : out Time;
                                    Interval : out Time;
                                    Blanking : out Blanking_Type;
                                    Exposures : out Exposure_Type);
        procedure Add_Host (Display_Id : in Display;
                            Host : in Host_Address_Record);
        procedure Add_Hosts (Display_Id : in Display; Hosts : in Host_Array);
        procedure List_Hosts (Display_Id : in Display;
                              States : in out Boolean_Array;
                              Hosts : out Host_List);
        procedure Remove_Host (Display_Id : in Display;
                               Host : in Host_Address_Record);
        procedure Remove_Hosts (Display_Id : in Display; Hosts : in Host_Array);
        procedure Set_Access_Control (Display_Id : in Display;
                                      Mode : in Access_Control_Mode);
        procedure Enable_Access_Control (Display_Id : in Display);
        procedure Disable_Access_Control (Display_Id : in Display);
        function Get_Default (Display_Id : in Display;
                              Program : in String;
                              Option : in String) return String;
    private
        type Resource is range 0 .. (2 ** 28) - 1;
    end Window_Manager;
    function Get_Command_Line_Arguments return String_List;
    function Open_Display (Name : in String) return Display;
    procedure No_Operation (Display_Id : in Display);
    procedure Close_Display (The_Display : in Display);
    function Bitmap_Bit_Order (Display_Id : in Display) return Order_Type;
    function Bitmap_Pad (Display_Id : in Display) return Pixels;
    function Bitmap_Unit (Display_Id : in Display) return Pixels;
    function Black_Pixel (Display_Id : in Display; Screen_Id : in Screen_Number)
                         return Pixels;
    function Connection_Number (Display_Id : in Display) return X_Long_Integer;
    function Default_Colormap
                (Display_Id : in Display; Screen_Id : in Screen_Number)
                return Colors.Color_Map;
    function Default_Depth
                (Display_Id : in Display; Screen_Id : in Screen_Number)
                return Depth_Type;
    function Default_Graphic_Context
                (Display_Id : in Display; Screen_Id : in Screen_Number)
                return Graphic_Output.Graphic_Context;
    function Default_Root_Window (Display_Id : in Display) return Window;
    function Default_Screen (Display_Id : in Display) return Screen_Number;
    function Default_Visual
                (Display_Id : in Display; Screen_Id : in Screen_Number)
                return Visual;
    function Display_Cells
                (Display_Id : in Display; Screen_Id : in Screen_Number)
                return Natural;
    function Display_Height
                (Display_Id : in Display; Screen_Id : in Screen_Number)
                return Pixels;
    function Display_Height
                (Display_Id : in Display; Screen_Id : in Screen_Number)
                return Millimeters;
    function Display_Name (Name : in String) return String;
    function Display_Planes
                (Display_Id : in Display; Screen_Id : in Screen_Number)
                return Depth_Type;
    function Display_String (Display_Id : in Display) return String;
    function Display_Width
                (Display_Id : in Display; Screen_Id : in Screen_Number)
                return Pixels;
    function Display_Width
                (Display_Id : in Display; Screen_Id : in Screen_Number)
                return Millimeters;
    function Image_Byte_Order (Display_Id : in Display) return Order_Type;
    function Last_Known_Request_Processed
                (Display_Id : in Display) return X_Long_Integer;
    function Next_Request (Display_Id : in Display) return X_Long_Integer;
    function Protocol_Version (Display_Id : in Display) return Natural;
    function Protocol_Revision (Display_Id : in Display) return Natural;
    function Q_Length (Display_Id : in Display) return Natural;
    function Root_Window (Display_Id : in Display; Screen_Id : in Screen_Number)
                         return Window;
    function Screen_Count (Display_Id : in Display) return Screen_Number;
    function Server_Vendor (Display_Id : in Display) return String;
    function Vendor_Release (Display_Id : in Display) return Natural;
    function White_Pixel (Display_Id : in Display; Screen_Id : in Screen_Number)
                         return Pixels;
    function Screen_Of_Display
                (Display_Id : in Display; Screen_Num : in Screen_Number)
                return Screen;
    function Default_Screen_Of_Display (Display_Id : in Display) return Screen;
    function Display_Of_Screen (Screen_Id : in Screen) return Display;
    function Root_Window_Of_Screen (Screen_Id : in Screen) return Window;
    function Black_Pixel_Of_Screen (Screen_Id : in Screen) return Pixels;
    function White_Pixel_Of_Screen (Screen_Id : in Screen) return Pixels;
    function Default_Colormap_Of_Screen
                (Screen_Id : in Screen) return Colors.Color_Map;
    function Default_Depth_Of_Screen (Screen_Id : in Screen) return Depth_Type;
    function Default_Gc_Of_Screen (Screen_Id : in Screen)
                                  return Graphic_Output.Graphic_Context;
    function Default_Visual_Of_Screen (Screen_Id : in Screen) return Visual;
    function Width_Of_Screen (Screen_Id : in Screen) return Pixels;
    function Height_Of_Screen (Screen_Id : in Screen) return Pixels;
    function Width_Mm_Of_Screen (Screen_Id : in Screen) return Millimeters;
    function Height_Mm_Of_Screen (Screen_Id : in Screen) return Millimeters;
    function Planes_Of_Screen (Screen_Id : in Screen) return Natural;
    function Cells_Of_Screen (Screen_Id : in Screen) return Natural;
    function Min_Cmaps_Of_Screen (Screen_Id : in Screen) return Natural;
    function Max_Cmaps_Of_Screen (Screen_Id : in Screen) return Natural;
    function Does_Save_Unders (Screen_Id : in Screen) return Boolean;
    function Does_Backing_Store
                (Screen_Id : in Screen) return Backing_Store_Type;
    function Event_Mask_Of_Screen (Screen_Id : in Screen)
                                  return Events.Event_Mask_Type;
    function Min_Keycode (Display_Id : in Display) return Keyboard.Keycode;
    function Max_Keycode (Display_Id : in Display) return Keyboard.Keycode;
    pragma Inline (Bitmap_Bit_Order, Bitmap_Pad, Bitmap_Unit, Black_Pixel,
                   Connection_Number, Default_Colormap, Default_Root_Window,
                   Default_Depth, Default_Graphic_Context, Default_Screen,
                   Default_Visual, Display_Cells, Display_Height,
                   Display_Name, Display_Planes, Display_String,
                   Display_Width, Image_Byte_Order, Protocol_Version,
                   Protocol_Revision, Q_Length, Root_Window, Screen_Count,
                   Server_Vendor, White_Pixel, Screen_Of_Display,
                   Default_Screen_Of_Display, Display_Of_Screen,
                   Root_Window_Of_Screen, Black_Pixel_Of_Screen,
                   White_Pixel_Of_Screen, Default_Colormap_Of_Screen,
                   Default_Depth_Of_Screen, Default_Gc_Of_Screen,
                   Default_Visual_Of_Screen, Width_Of_Screen,
                   Height_Of_Screen, Width_Mm_Of_Screen, Height_Mm_Of_Screen,
                   Planes_Of_Screen, Cells_Of_Screen, Min_Cmaps_Of_Screen,
                   Max_Cmaps_Of_Screen, Does_Save_Unders, Does_Backing_Store,
                   Event_Mask_Of_Screen, Min_Keycode, Max_Keycode);
    type Visual_Class_Type is (Static_Gray, Gray_Scale, Static_Color,
                               Pseudo_Color, True_Color, Direct_Color);
    type Visual_Info_Record is
        record
            Visual_Record : Visual;
            Visual_Id : X_Id;
            Screen_Id : Screen_Number;
            Depth : Depth_Type;
            Class : Visual_Class_Type;
            Red_Mask : Pixels;
            Green_Mask : Pixels;
            Blue_Mask : Pixels;
            Colormap_Size : Integer;
            Bits_Per_Rgb : Pixels;
        end record;
    type Visual_Info_Array is array (Natural range <>) of Visual_Info_Record;
    type Visual_Info_List is access Visual_Info_Array;
    subtype Visual_Mask_Type is Boolean_Array (0 .. 8);
    Visual_No_Mask : constant Visual_Mask_Type :=
       Visual_Mask_Type'(others => False);
    Visual_Id_Mask : constant Visual_Mask_Type :=
       Visual_Mask_Type'(0 => True, others => False);
    Visual_Screen_Mask : constant Visual_Mask_Type :=
       Visual_Mask_Type'(1 => True, others => False);
    Visual_Depth_Mask : constant Visual_Mask_Type :=
       Visual_Mask_Type'(2 => True, others => False);
    Visual_Class_Mask : constant Visual_Mask_Type :=
       Visual_Mask_Type'(3 => True, others => False);
    Visual_Red_Mask : constant Visual_Mask_Type :=
       Visual_Mask_Type'(4 => True, others => False);
    Visual_Green_Mask : constant Visual_Mask_Type :=
       Visual_Mask_Type'(5 => True, others => False);
    Visual_Blue_Mask : constant Visual_Mask_Type :=
       Visual_Mask_Type'(6 => True, others => False);
    Visual_Colormap_Size_Mask : constant Visual_Mask_Type :=
       Visual_Mask_Type'(7 => True, others => False);
    Visual_Bits_Per_Rgb_Mask : constant Visual_Mask_Type :=
       Visual_Mask_Type'(8 => True, others => False);
    Visual_All_Mask : constant Visual_Mask_Type :=
       Visual_Mask_Type'(others => True);
    function Get_Visual_Info
                (Display_Id : in Display;
                 Info_Mask : in Visual_Mask_Type;
                 Info_Template : in Visual_Info_Record) return Visual_Info_List;
    procedure Match_Visual_Info (Display_Id : in Display;
                                 Screen_Id : in Screen;
                                 Depth_Of_Screen : in Depth_Type;
                                 Class_Of_Screen : in Visual_Class_Type;
                                 Visual_Info : out Visual_Info_Record;
                                 Success : out Boolean);
    type Window_Array is array (Natural range <>) of Window;
    type Window_List is access Window_Array;
    type Window_Class is (Copy_Class_From_Parent, Input_Output, Input_Only);
    type Direction_Type is (Raise_Lowest, Lower_Highest);
    type Property_Mode is (Replace, Prepend, Append);
    type Change_Mode is (Insert, Delete);
    type Gravity_Type is (Forget_Gravity, Northwest_Gravity, North_Gravity,
                          Northeast_Gravity, West_Gravity, Center_Gravity,
                          East_Gravity, Southwest_Gravity, South_Gravity,
                          Southeast_Gravity, Static_Gravity);
    Unmap_Gravity : constant Gravity_Type := Forget_Gravity;
    type Map_State_Type is (Is_Unmapped, Is_Unviewable, Is_Viewable);
    subtype Geometry_Mask_Type is Boolean_Array (0 .. 6);
    X_Value : constant Geometry_Mask_Type :=
       Geometry_Mask_Type'(0 => True, others => False);
    Y_Value : constant Geometry_Mask_Type :=
       Geometry_Mask_Type'(1 => True, others => False);
    Width_Value : constant Geometry_Mask_Type :=
       Geometry_Mask_Type'(2 => True, others => False);
    Height_Value : constant Geometry_Mask_Type :=
       Geometry_Mask_Type'(3 => True, others => False);
    All_Values : constant Geometry_Mask_Type :=
       Geometry_Mask_Type'(4 => True, others => False);
    X_Negative : constant Geometry_Mask_Type :=
       Geometry_Mask_Type'(5 => True, others => False);
    Y_Negative : constant Geometry_Mask_Type :=
       Geometry_Mask_Type'(6 => True, others => False);
    type Set_Window_Attributes_Record is
        record
            Background_Pixmap : Pixmap;
            Background_Pixel : Pixels := 0;
            Border_Pixmap : Pixmap;
            Border_Pixel : Pixels := 1;
            Bit_Gravity : Gravity_Type := Forget_Gravity;
            Window_Gravity : Gravity_Type := Northwest_Gravity;
            Backing_Store : Backing_Store_Type := Not_Useful;
            Backing_Planes : Plane_Mask := All_Planes;
            Backing_Pixel : Pixels := 0;
            Save_Under : Boolean := False;
            Event_Mask : Events.Event_Mask_Type :=
               Events.Event_Mask_Type'(others => False);
            Do_Not_Propagate : Events.Event_Mask_Type :=
               Events.Event_Mask_Type'(others => False);
            Override_Redirect : Boolean := False;
            Current_Color_Map : Colors.Color_Map;
            Current_Cursor : Cursors.Cursor;
        end record;
    type Window_Attributes_Record is
        record
            X : Coordinate;
            Y : Coordinate;
            Width : Pixels;
            Height : Pixels;
            Border_Width : Pixels;
            Depth : Depth_Type;
            Visuals : Visual;
            Root : Window;
            Class : Window_Class;
            Bit_Gravity : Gravity_Type;
            Window_Gravity : Gravity_Type;
            Backing_Store : Backing_Store_Type;
            Backing_Planes : Plane_Mask;
            Backing_Pixel : Pixels;
            Save_Under : Boolean;
            Colormap : Colors.Color_Map;
            Map_Installed : Boolean;
            Map_State : Map_State_Type;
            All_Event_Masks : Events.Event_Mask_Type;
            Your_Event_Mask : Events.Event_Mask_Type;
            Do_Not_Propagate : Events.Event_Mask_Type;
            Override_Redirect : Boolean;
            Screen_Id : Screen;
        end record;
    subtype Wa_Mask_Type is Boolean_Array (0 .. 14);
    Wa_Background_Pixmap : constant Wa_Mask_Type :=
       Wa_Mask_Type'(0 => True, others => False);
    Wa_Background_Pixel : constant Wa_Mask_Type :=
       Wa_Mask_Type'(1 => True, others => False);
    Wa_Border_Pixmap : constant Wa_Mask_Type :=
       Wa_Mask_Type'(2 => True, others => False);
    Wa_Border_Pixel : constant Wa_Mask_Type :=
       Wa_Mask_Type'(3 => True, others => False);
    Wa_Bit_Gravity : constant Wa_Mask_Type :=
       Wa_Mask_Type'(4 => True, others => False);
    Wa_Win_Gravity : constant Wa_Mask_Type :=
       Wa_Mask_Type'(5 => True, others => False);
    Wa_Backing_Store : constant Wa_Mask_Type :=
       Wa_Mask_Type'(6 => True, others => False);
    Wa_Backing_Planes : constant Wa_Mask_Type :=
       Wa_Mask_Type'(7 => True, others => False);
    Wa_Backing_Pixel : constant Wa_Mask_Type :=
       Wa_Mask_Type'(8 => True, others => False);
    Wa_Override_Redirect : constant Wa_Mask_Type :=
       Wa_Mask_Type'(9 => True, others => False);
    Wa_Save_Under : constant Wa_Mask_Type :=
       Wa_Mask_Type'(10 => True, others => False);
    Wa_Event_Mask : constant Wa_Mask_Type :=
       Wa_Mask_Type'(11 => True, others => False);
    Wa_Dont_Propagate : constant Wa_Mask_Type :=
       Wa_Mask_Type'(12 => True, others => False);
    Wa_Colormap : constant Wa_Mask_Type :=
       Wa_Mask_Type'(13 => True, others => False);
    Wa_Cursor : constant Wa_Mask_Type :=
       Wa_Mask_Type'(14 => True, others => False);
    subtype Cw_Mask_Type is Boolean_Array (0 .. 31);  
    Cw_X : constant Cw_Mask_Type := Cw_Mask_Type'(0 => True, others => False);
    Cw_Y : constant Cw_Mask_Type := Cw_Mask_Type'(1 => True, others => False);
    Cw_Width : constant Cw_Mask_Type :=
       Cw_Mask_Type'(2 => True, others => False);
    Cw_Height : constant Cw_Mask_Type :=
       Cw_Mask_Type'(3 => True, others => False);
    Cw_Border_Width : constant Cw_Mask_Type :=
       Cw_Mask_Type'(4 => True, others => False);
    Cw_Sibling : constant Cw_Mask_Type :=
       Cw_Mask_Type'(5 => True, others => False);
    Cw_Stack_Mode : constant Cw_Mask_Type :=
       Cw_Mask_Type'(6 => True, others => False);
    type Window_Changes_Record is
        record
            Bounds : Rectangle;
            Border_Width : Pixels;
            Sibling : Window;
            Stack_Mode : Stack_Mode_Type;
        end record;
    subtype Size_Hint_Mask_Type is Boolean_Array (0 .. 7);
    User_Specified_Position : constant Size_Hint_Mask_Type :=
       Size_Hint_Mask_Type'(0 => True, others => False);
    User_Specified_Size : constant Size_Hint_Mask_Type :=
       Size_Hint_Mask_Type'(1 => True, others => False);
    Program_Specified_Position : constant Size_Hint_Mask_Type :=
       Size_Hint_Mask_Type'(2 => True, others => False);
    Program_Specified_Size : constant Size_Hint_Mask_Type :=
       Size_Hint_Mask_Type'(3 => True, others => False);
    Program_Specified_Min_Size : constant Size_Hint_Mask_Type :=
       Size_Hint_Mask_Type'(4 => True, others => False);
    Program_Specified_Max_Size : constant Size_Hint_Mask_Type :=
       Size_Hint_Mask_Type'(5 => True, others => False);
    Program_Specified_Resize_Inc : constant Size_Hint_Mask_Type :=
       Size_Hint_Mask_Type'(6 => True, others => False);
    Program_Specified_Aspect : constant Size_Hint_Mask_Type :=
       Size_Hint_Mask_Type'(7 => True, others => False);
    Program_Specified_All_Hints : constant Size_Hint_Mask_Type :=
       (Program_Specified_Position or Program_Specified_Size or
        Program_Specified_Min_Size or Program_Specified_Max_Size or
        Program_Specified_Resize_Inc or Program_Specified_Aspect);
    type Size_Hint_Record is
        record
            Flags : Size_Hint_Mask_Type;
            Bounds : Rectangle;
            Min_Width : Pixels;
            Min_Height : Pixels;
            Max_Width : Pixels;
            Max_Height : Pixels;
            Width_Inc : Pixels;
            Height_Inc : Pixels;
            Min_Aspect : Point;
            Max_Aspect : Point;
        end record;
    procedure Set_Standard_Properties (Display_Id : in Display;
                                       Window_Id : in Window;
                                       W_Name : in String;
                                       Icon_Name : in String;
                                       Icon : in Pixmap;
                                       Command : in String_List;
                                       Hints : in Size_Hint_Record);
    procedure Store_Name (Display_Id : in Display;
                          Window_Id : in Window;
                          Name : in String);
    function Fetch_Name
                (Display_Id : in Display; Window_Id : in Window) return String;
    procedure Set_Icon_Name (Display_Id : in Display;
                             Window_Id : in Window;
                             Name : in String);
    function Get_Icon_Name
                (Display_Id : in Display; Window_Id : in Window) return String;
    procedure Set_Command (Display_Id : in Display;
                           Window_Id : in Window;
                           Command : in String_List);
    type Initial_State_Type is (Dont_Care_State, Normal_State, Zoom_State,
                                Iconic_State, Inactive_State);
    subtype Wm_Hint_Mask_Type is Boolean_Array (0 .. 6);
    Input_Hint : constant Wm_Hint_Mask_Type :=
       Wm_Hint_Mask_Type'(0 => True, others => False);
    Initial_State_Hint : constant Wm_Hint_Mask_Type :=
       Wm_Hint_Mask_Type'(1 => True, others => False);
    Icon_Pixmap_Hint : constant Wm_Hint_Mask_Type :=
       Wm_Hint_Mask_Type'(2 => True, others => False);
    Icon_Window_Hint : constant Wm_Hint_Mask_Type :=
       Wm_Hint_Mask_Type'(3 => True, others => False);
    Icon_Position_Hint : constant Wm_Hint_Mask_Type :=
       Wm_Hint_Mask_Type'(4 => True, others => False);
    Icon_Mask_Hint : constant Wm_Hint_Mask_Type :=
       Wm_Hint_Mask_Type'(5 => True, others => False);
    Window_Group_Hint : constant Wm_Hint_Mask_Type :=
       Wm_Hint_Mask_Type'(6 => True, others => False);
    All_Hints : constant Wm_Hint_Mask_Type :=
       (Input_Hint or Icon_Pixmap_Hint or Icon_Window_Hint or
        Icon_Position_Hint or Icon_Mask_Hint);
    type Wm_Hint_Record is
        record
            Flags : Wm_Hint_Mask_Type;
            Input : Boolean;
            Initial_State : Initial_State_Type;
            Icon_Pixmap : Pixmap;
            Icon_Window : Window;
            Icon_Position : Point;
            Icon_Mask : Pixmap;
            Window_Group : X_Id;
        end record;
    type Wm_Class_Hint_Record is
        record
            Res_Name : String_Pointer;
            Res_Class : String_Pointer;
        end record;
    type Icon_Size_Record is
        record
            Min_Width : Pixels;
            Min_Height : Pixels;
            Max_Width : Pixels;
            Max_Height : Pixels;
            Width_Inc : Pixels;
            Height_Inc : Pixels;
        end record;
    type Icon_Size_Array is array (Natural range <>) of Icon_Size_Record;
    type Icon_Size_List is access Icon_Size_Array;
    function Resource_Manager_String
                (Display_Id : in Display) return String_Pointer;
    procedure Set_Wm_Hints (Display_Id : in Display;
                            Window_Id : in Window;
                            Hints : in Wm_Hint_Record);
    function Get_Wm_Hints (Display_Id : in Display; Window_Id : in Window)
                          return Wm_Hint_Record;
    procedure Set_Normal_Hints (Display_Id : in Display;
                                Window_Id : in Window;
                                Hints : in Size_Hint_Record);
    procedure Get_Normal_Hints (Display_Id : in Display;
                                Window_Id : in Window;
                                Hints : in out Size_Hint_Record;
                                Hints_Found : out Boolean);
    procedure Set_Zoom_Hints (Display_Id : in Display;
                              Window_Id : in Window;
                              Hints : in Size_Hint_Record);
    procedure Get_Zoom_Hints (Display_Id : in Display;
                              Window_Id : in Window;
                              Hints : in out Size_Hint_Record;
                              Hints_Found : out Boolean);
    procedure Set_Size_Hints (Display_Id : in Display;
                              Window_Id : in Window;
                              Hints : in Size_Hint_Record;
                              Property : in Atoms.Atom);
    procedure Get_Size_Hints (Display_Id : in Display;
                              Window_Id : in Window;
                              Property : in Atoms.Atom;
                              Hints : in out Size_Hint_Record;
                              Hints_Found : out Boolean);
    procedure Set_Icon_Sizes (Display_Id : in Display;
                              Window_Id : in Window;
                              Size_List : in Icon_Size_List);
    function Get_Icon_Sizes (Display_Id : in Display; Window_Id : in Window)
                            return Icon_Size_List;
    procedure Set_Class_Hint (Display_Id : in Display;
                              Window_Id : in Window;
                              Class_Hints : in Wm_Class_Hint_Record);
    procedure Get_Class_Hint (Display_Id : in Display;
                              Window_Id : in Window;
                              Class_Hints_Return : in out Wm_Class_Hint_Record;
                              Success : out Boolean);
    procedure Set_Transient_For_Hint (Display_Id : in Display;
                                      Window_Id : in Window;
                                      Prop_Window : in Window);
    procedure Get_Transient_For_Hint (Display_Id : in Display;
                                      Window_Id : in Window;
                                      Prop_Window_Return : in out Window;
                                      Success : out Boolean);
    function Create_Pixmap (Display_Id : in Display;
                            Drawable_Id : in Drawable;
                            Width : in Pixels;
                            Height : in Pixels;
                            Depth : in Depth_Type) return Pixmap;
    procedure Free_Pixmap (Display_Id : in Display; Pixmap_Id : in out Pixmap);
    function Create_Window
                (Display_Id : in Display;
                 Parent : in Window;
                 Bounds : in Rectangle;
                 Border_Width : in Pixels;
                 Depth : in Depth_Type;
                 Class : in Window_Class;
                 Visuals : in Visual;
                 Value_Mask : in Wa_Mask_Type;
                 Attributes : in Set_Window_Attributes_Record) return Window;
    function Create_Simple_Window (Display_Id : in Display;
                                   Parent : in Window;
                                   Bounds : in Rectangle;
                                   Border_Width : in Pixels;
                                   Border : in Pixels;
                                   Background : in Pixels) return Window;
    procedure Destroy_Window (Display_Id : in Display; Window_Id : in Window);
    procedure Destroy_Subwindows
                 (Display_Id : in Display; Window_Id : in Window);
    procedure Map_Window (Display_Id : in Display; Window_Id : in Window);
    procedure Map_Raised (Display_Id : in Display; Window_Id : in Window);
    procedure Map_Subwindows (Display_Id : in Display; Window_Id : in Window);
    procedure Unmap_Window (Display_Id : in Display; Window_Id : in Window);
    procedure Unmap_Subwindows (Display_Id : in Display; Window_Id : in Window);
    procedure Configure_Window (Display_Id : in Display;
                                Window_Id : in Window;
                                Value_Mask : in Cw_Mask_Type;
                                Changes : in Window_Changes_Record);
    procedure Move_Window (Display_Id : in Display;
                           Window_Id : in Window;
                           Xy : in Point);
    procedure Resize_Window (Display_Id : in Display;
                             Window_Id : in Window;
                             Width : in Pixels;
                             Height : in Pixels);
    procedure Move_Resize_Window (Display_Id : in Display;
                                  Window_Id : in Window;
                                  Bounds : in Rectangle);
    procedure Set_Window_Border_Width (Display_Id : in Display;
                                       Window_Id : in Window;
                                       Width : in Pixels);
    procedure Raise_Window (Display_Id : in Display; Window_Id : in Window);
    procedure Lower_Window (Display_Id : in Display; Window_Id : in Window);
    procedure Circulate_Subwindows (Display_Id : in Display;
                                    Window_Id : in Window;
                                    Direction : in Direction_Type);
    procedure Circulate_Subwindows_Up
                 (Display_Id : in Display; Window_Id : in Window);
    procedure Circulate_Subwindows_Down
                 (Display_Id : in Display; Window_Id : in Window);
    procedure Restack_Windows (Display_Id : in Display;
                               Windows : in Window_List);
    procedure Change_Window_Attributes
                 (Display_Id : in Display;
                  Window_Id : in Window;
                  Value_Mask : in Wa_Mask_Type;
                  Attributes : in Set_Window_Attributes_Record);
    procedure Set_Window_Background (Display_Id : in Display;
                                     Window_Id : in Window;
                                     Background : in Pixels);
    procedure Set_Window_Background_Pixmap (Display_Id : in Display;
                                            Window_Id : in Window;
                                            Tile : in Pixmap);
    procedure Set_Window_Border (Display_Id : in Display;
                                 Window_Id : in Window;
                                 Border : in Pixels);
    procedure Set_Window_Border_Pixmap (Display_Id : in Display;
                                        Window_Id : in Window;
                                        Tile : in Pixmap);
    procedure Translate_Coordinates (Display_Id : in Display;
                                     Source : in Window;
                                     Destination : in Window;
                                     From : in Point;
                                     To : out Point;
                                     Child : in out Window;
                                     Same_Screen : out Boolean);
    procedure Query_Tree (Display_Id : in Display;
                          Window_Id : in Window;
                          Root : in out Window;
                          Parent : in out Window;
                          Children : in out Window_List;
                          Status : out Boolean);
    procedure Get_Window_Attributes
                 (Display_Id : in Display;
                  Window_Id : in Window;
                  Attributes : in out Window_Attributes_Record;
                  Status : out Boolean);
    procedure Get_Geometry (Display_Id : in Display;
                            Drawable_Id : in Drawable;
                            Root : in out Window;
                            Bounds : out Rectangle;
                            Border_Width : out Pixels;
                            Depths : out Depth_Type;
                            Status : out Boolean);
    procedure Parse_Geometry (Parse_String : in String;
                              Geometry : out Rectangle;
                              Values_Found : out Geometry_Mask_Type);
    procedure Geometry (Display_Id : in Display;
                        Screen_Id : in Screen;
                        Position : in String;
                        Default : in String;
                        Border_Width : in Pixels;
                        Font_Height : in Pixels;
                        Font_Width : in Pixels;
                        Xy_Padding : in Point;
                        Geometry : out Rectangle;
                        Values_Found : out Geometry_Mask_Type);
    procedure Query_Pointer (Display_Id : in Display;
                             Window_Id : in Window;
                             Root : in out Window;
                             Child : in out Window;
                             Root_Xy : out Point;
                             Window_Xy : out Point;
                             Keys_And_Buttons : out Events.Key_And_Button_Mask;
                             Same_Screen : out Boolean);
    procedure Get_Window_Property (Display_Id : in Display;
                                   Window_Id : in Window;
                                   Property : in Atoms.Atom;
                                   Long_Offset : in X_Long_Integer;
                                   Long_Length : in X_Long_Integer;
                                   Delete : in Boolean;
                                   Req_Type : in Atoms.Atom;
                                   Actual_Type : out Atoms.Atom;
                                   Actual_Form : out X_Long_Integer;
                                   Bytes_After : out X_Long_Integer;
                                   Data : out Bytes);
    function List_Properties (Display_Id : in Display; Window_Id : in Window)
                             return Atoms.Atom_List;
    procedure Change_Property (Display_Id : in Display;
                               Window_Id : in Window;
                               Property : in Atoms.Atom;
                               Kind : in Atoms.Atom;
                               Format : in Property_Format_Type;
                               Mode : in Property_Mode;
                               Data : in Bytes;
                               N_Items : in Natural);
    procedure Rotate_Window_Properties (Display_Id : in Display;
                                        Window_Id : in Window;
                                        Properties : in Atoms.Atom_List;
                                        N_Positions : in Natural);
    procedure Delete_Property (Display_Id : in Display;
                               Window_Id : in Window;
                               Property : in Atoms.Atom);
    procedure Set_Selection_Owner (Display_Id : in Display;
                                   Selection : in Atoms.Atom;
                                   Owner : in Window;
                                   Time_Stamp : in Time);
    function Get_Selection_Owner
                (Display_Id : in Display; Selection : in Atoms.Atom)
                return Window;
    procedure Convert_Selection (Display_Id : in Display;
                                 Selection : in Atoms.Atom;
                                 Target : in Atoms.Atom;
                                 Property : in Atoms.Atom;
                                 Requestor : in Window;
                                 Time_Stamp : in Time);
    procedure Reparent_Window (Display_Id : in Display;
                               Window_Id : in Window;
                               Parent : in Window;
                               Upper_Left : in Point);
    procedure Change_Save_Set (Display_Id : in Display;
                               Window_Id : in Window;
                               Mode : in Change_Mode);
    procedure Add_To_Save_Set (Display_Id : in Display; Window_Id : in Window);
    procedure Remove_From_Save_Set
                 (Display_Id : in Display; Window_Id : in Window);
    procedure Save_Context (Display_Id : in Display;
                            Window_Id : in Window;
                            The_Context : in Context;
                            Data : in System.Address);
    function Find_Context (Display_Id : in Display;
                           Window_Id : in Window;
                           The_Context : in Context) return System.Address;
    procedure Delete_Context (Display_Id : in Display;
                              Window_Id : in Window;
                              The_Context : in Context);
    function Unique_Context return Context;
    type Synchronize_Mode is (Off, On);
    procedure Synchronize (Display_Id : in Display;
                           Mode : in Synchronize_Mode := On);
    function Max_Request_Size (Display_Id : in Display) return X_Long_Integer;
private
    type Context is range 0 .. (2 ** 28) - 1;
    type Drawable is range 0 .. (2 ** 28) - 1;
    type X_Id is range 0 .. (2 ** 28) - 1;
    type Visual_Record;
    type Visual is access Visual_Record;
    type Screen_Record;
    type Screen is access Screen_Record;
    type Display_Record;
    type Display is access Display_Record;
    Null_Display : constant Display := null;
    Null_Context : constant Context := Context (0);
    Null_Drawable : constant Drawable := Drawable (0);
    Null_Window : constant Window := Null_Drawable;
    Null_Pixmap : constant Pixmap := Null_Drawable;
    Pointer_Window : constant Window := Null_Drawable;
    Input_Focus_Window : constant Window := Window (1);
    Pointer_Root_Window : constant Window := Window (1);
    None : constant Drawable := Drawable (1);
    Parent_Relative : constant Pixmap := Drawable (0);
    Copy_Drawable_From_Parent : constant Drawable := Drawable (0);
    Copy_Visual_From_Parent : constant Visual := null;
    Null_X_Id : constant X_Id := X_Id (0);
end X_Windows;

E3 Meta Data

    nblk1=87
    nid=87
    hdr6=10c
        [0x00] rec0=22 rec1=00 rec2=01 rec3=020
        [0x01] rec0=15 rec1=00 rec2=02 rec3=03a
        [0x02] rec0=15 rec1=00 rec2=03 rec3=048
        [0x03] rec0=1c rec1=00 rec2=04 rec3=01c
        [0x04] rec0=18 rec1=00 rec2=05 rec3=04e
        [0x05] rec0=19 rec1=00 rec2=06 rec3=02c
        [0x06] rec0=18 rec1=00 rec2=07 rec3=00a
        [0x07] rec0=15 rec1=00 rec2=08 rec3=04a
        [0x08] rec0=16 rec1=00 rec2=09 rec3=03a
        [0x09] rec0=15 rec1=00 rec2=0a rec3=046
        [0x0a] rec0=15 rec1=00 rec2=0b rec3=04c
        [0x0b] rec0=19 rec1=00 rec2=0c rec3=036
        [0x0c] rec0=19 rec1=00 rec2=0d rec3=012
        [0x0d] rec0=12 rec1=00 rec2=0e rec3=028
        [0x0e] rec0=0f rec1=00 rec2=0f rec3=068
        [0x0f] rec0=11 rec1=00 rec2=10 rec3=052
        [0x10] rec0=10 rec1=00 rec2=11 rec3=04c
        [0x11] rec0=12 rec1=00 rec2=12 rec3=078
        [0x12] rec0=14 rec1=00 rec2=13 rec3=006
        [0x13] rec0=16 rec1=00 rec2=14 rec3=064
        [0x14] rec0=10 rec1=00 rec2=15 rec3=026
        [0x15] rec0=10 rec1=00 rec2=16 rec3=056
        [0x16] rec0=0f rec1=00 rec2=17 rec3=010
        [0x17] rec0=10 rec1=00 rec2=18 rec3=08c
        [0x18] rec0=13 rec1=00 rec2=19 rec3=01e
        [0x19] rec0=12 rec1=00 rec2=1a rec3=08a
        [0x1a] rec0=18 rec1=00 rec2=1b rec3=016
        [0x1b] rec0=10 rec1=00 rec2=1c rec3=06a
        [0x1c] rec0=13 rec1=00 rec2=1d rec3=050
        [0x1d] rec0=13 rec1=00 rec2=1e rec3=048
        [0x1e] rec0=14 rec1=00 rec2=1f rec3=03c
        [0x1f] rec0=14 rec1=00 rec2=20 rec3=038
        [0x20] rec0=11 rec1=00 rec2=21 rec3=04a
        [0x21] rec0=10 rec1=00 rec2=22 rec3=05e
        [0x22] rec0=10 rec1=00 rec2=23 rec3=068
        [0x23] rec0=11 rec1=00 rec2=24 rec3=05e
        [0x24] rec0=11 rec1=00 rec2=25 rec3=042
        [0x25] rec0=10 rec1=00 rec2=26 rec3=038
        [0x26] rec0=11 rec1=00 rec2=27 rec3=094
        [0x27] rec0=12 rec1=00 rec2=28 rec3=00c
        [0x28] rec0=11 rec1=00 rec2=29 rec3=02e
        [0x29] rec0=11 rec1=00 rec2=2a rec3=03e
        [0x2a] rec0=11 rec1=00 rec2=2b rec3=088
        [0x2b] rec0=12 rec1=00 rec2=2c rec3=01e
        [0x2c] rec0=10 rec1=00 rec2=2d rec3=03c
        [0x2d] rec0=12 rec1=00 rec2=2e rec3=008
        [0x2e] rec0=10 rec1=00 rec2=2f rec3=072
        [0x2f] rec0=12 rec1=00 rec2=30 rec3=048
        [0x30] rec0=17 rec1=00 rec2=31 rec3=04e
        [0x31] rec0=14 rec1=00 rec2=32 rec3=02c
        [0x32] rec0=14 rec1=00 rec2=33 rec3=04e
        [0x33] rec0=14 rec1=00 rec2=34 rec3=012
        [0x34] rec0=14 rec1=00 rec2=35 rec3=028
        [0x35] rec0=11 rec1=00 rec2=36 rec3=022
        [0x36] rec0=12 rec1=00 rec2=37 rec3=038
        [0x37] rec0=14 rec1=00 rec2=38 rec3=010
        [0x38] rec0=0f rec1=00 rec2=39 rec3=06c
        [0x39] rec0=14 rec1=00 rec2=3a rec3=044
        [0x3a] rec0=15 rec1=00 rec2=3b rec3=01c
        [0x3b] rec0=11 rec1=00 rec2=3c rec3=04a
        [0x3c] rec0=14 rec1=00 rec2=3d rec3=052
        [0x3d] rec0=11 rec1=00 rec2=3e rec3=00c
        [0x3e] rec0=10 rec1=00 rec2=3f rec3=018
        [0x3f] rec0=0f rec1=00 rec2=40 rec3=020
        [0x40] rec0=0f rec1=00 rec2=41 rec3=074
        [0x41] rec0=11 rec1=00 rec2=42 rec3=02c
        [0x42] rec0=11 rec1=00 rec2=43 rec3=022
        [0x43] rec0=11 rec1=00 rec2=44 rec3=00c
        [0x44] rec0=11 rec1=00 rec2=45 rec3=002
        [0x45] rec0=10 rec1=00 rec2=46 rec3=070
        [0x46] rec0=10 rec1=00 rec2=47 rec3=02a
        [0x47] rec0=15 rec1=00 rec2=48 rec3=00c
        [0x48] rec0=1a rec1=00 rec2=49 rec3=024
        [0x49] rec0=1b rec1=00 rec2=4a rec3=02c
        [0x4a] rec0=1a rec1=00 rec2=4b rec3=04e
        [0x4b] rec0=19 rec1=00 rec2=4c rec3=04e
        [0x4c] rec0=1a rec1=00 rec2=4d rec3=01e
        [0x4d] rec0=1b rec1=00 rec2=4e rec3=02a
        [0x4e] rec0=1b rec1=00 rec2=4f rec3=018
        [0x4f] rec0=19 rec1=00 rec2=50 rec3=010
        [0x50] rec0=19 rec1=00 rec2=51 rec3=02a
        [0x51] rec0=19 rec1=00 rec2=52 rec3=02e
        [0x52] rec0=16 rec1=00 rec2=53 rec3=012
        [0x53] rec0=12 rec1=00 rec2=54 rec3=01a
        [0x54] rec0=13 rec1=00 rec2=55 rec3=066
        [0x55] rec0=15 rec1=00 rec2=56 rec3=070
        [0x56] rec0=14 rec1=00 rec2=57 rec3=002
        [0x57] rec0=10 rec1=00 rec2=58 rec3=034
        [0x58] rec0=0f rec1=00 rec2=59 rec3=05e
        [0x59] rec0=13 rec1=00 rec2=5a rec3=01e
        [0x5a] rec0=10 rec1=00 rec2=5b rec3=01c
        [0x5b] rec0=13 rec1=00 rec2=5c rec3=044
        [0x5c] rec0=10 rec1=00 rec2=5d rec3=032
        [0x5d] rec0=11 rec1=00 rec2=5e rec3=040
        [0x5e] rec0=11 rec1=00 rec2=5f rec3=018
        [0x5f] rec0=11 rec1=00 rec2=60 rec3=002
        [0x60] rec0=0f rec1=00 rec2=61 rec3=052
        [0x61] rec0=10 rec1=00 rec2=62 rec3=042
        [0x62] rec0=10 rec1=00 rec2=63 rec3=01e
        [0x63] rec0=12 rec1=00 rec2=64 rec3=048
    tail 0x21518b8e083657d905adb 0x42a00088462060003
Free Block Chain:
  0x87: 0000  00 00 0a 00 32 80 61 10 06 60 cc 20 00 ce 11 03  ┆    2 a  `      ┆