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

⟦078750259⟧ Ada Source

    Length: 16384 (0x4000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Xlbt_Font3, seg_004fb8

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 Unchecked_Deallocation;

with Xlbt_Arithmetic;  
use Xlbt_Arithmetic;  
with Xlbt_Basic3;  
use Xlbt_Basic3;  
with Xlbt_Extension4;  
use Xlbt_Extension4;  
with Xlbt_String;  
use Xlbt_String;  
with Xlbt_String16;  
use Xlbt_String16;

--/ if Record_Rep_Clauses then
--// with Xlbmt_Parameters;
--// use Xlbmt_Parameters;
--/ end if;

package Xlbt_Font3 is
------------------------------------------------------------------------------
-- X Library Font - Full Interface
--
-- Xlbt_Font2 - Types relating to X Server fonts.
--------------------------------------------------------------------------
-- Copyright 1989 - 1991 by Rational, Santa Clara, California.
-- Copyright 1985 - 1989 by the Massachusetts Institute of Technology
--
--                  All Rights Reserved.
--
-- Permission to use, copy, modify, and distribute this software and its
-- documentation for any purpose and without fee is hereby granted,
-- provided that the above copyright notice(s) appear in all copies and that
-- both that copyright notice(s) and this permission notice appear in
-- supporting documentation, and that the names of MIT or Rational not be
-- used in advertising or publicity pertaining to distribution of the software
-- without specific, written prior permission.
--
-- MIT and Rational disclaim all warranties with regard to this software,
-- including all implied warranties of merchantability and fitness, in no
-- event shall MIT or Rational be liable for any special, indirect or
-- consequential damages or any damages whatsoever resulting from loss of use,
-- data or profits, whether in an action of contract, negligence or other
-- tortious action, arising out of or in connection with the use or performance
-- of this software.
------------------------------------------------------------------------------

--\x0c
    ------------------------------------------------------------------------------
-- X_Per_Char_Flags - Font Metric Information.
------------------------------------------------------------------------------

--/ if Bit0_Sign_Bit then

    type X_Per_Char_Flags_Index is  
       (Xpcfi15, Xpcfi14, Xpcfi13, Xpcfi12, Xpcfi11, Xpcfi10, Xpcfi09, Xpcfi08,  
        Xpcfi07, Xpcfi06, Xpcfi05, Xpcfi04, Xpcfi03, Xpcfi02, Xpcfi01, Xpcfi00);

--/ else -- not Bit0_Sign_Bit
--//
--// type X_Per_Char_Flags_Index is
--//   (Xpcfi00, Xpcfi01, Xpcfi02, Xpcfi03, Xpcfi04, Xpcfi05, Xpcfi06, Xpcfi07,
--//    Xpcfi08, Xpcfi09, Xpcfi10, Xpcfi11, Xpcfi12, Xpcfi13, Xpcfi14, Xpcfi15);
--//
--/ end if;

    type X_Per_Char_Flags is array (X_Per_Char_Flags_Index) of Boolean;

--/ if Length_Clauses then
    for X_Per_Char_Flags'Size use 16;
--/ elsif Pack then
--//     pragma Pack (X_Per_Char_Flags);
--/ end if;

    None_X_Per_Char_Flags : constant X_Per_Char_Flags :=  
       (others => False);

------------------------------------------------------------------------------
-- X_Char_Struct - Font Character Structure
------------------------------------------------------------------------------

    type X_Char_Struct is  
        record  
            Lbearing   : S_Short := 0;  -- origin to left edge of raster
            Rbearing   : S_Short := 0;  -- origin to right edge of raster
            Width      : S_Short := 0;  -- advance to next char's origin
            Ascent     : S_Short := 0;  -- baseline to top edge of raster
            Descent    : S_Short := 0;  -- baseline to bottom edge of raster
            Attributes :                -- per char flags (not predefined)
               X_Per_Char_Flags  := None_X_Per_Char_Flags;  
        end record;

--/ if Length_Clauses then
    for X_Char_Struct'Size use 3 * 32;
--/ end if;

--/ if Record_Rep_Clauses then
--//     for X_Char_Struct use
--//         record
--//             Lbearing   at 0 * X_Word range X_Half0a .. X_Half0b;
--//             Rbearing   at 0 * X_Word range X_Half1a .. X_Half1b;
--//             Width      at 1 * X_Word range X_Half0a .. X_Half0b;
--//             Ascent     at 1 * X_Word range X_Half1a .. X_Half1b;
--//             Descent    at 2 * X_Word range X_Half0a .. X_Half0b;
--//             Attributes at 2 * X_Word range X_Half1a .. X_Half1b;
--//         end record;
--/ end if;

--/ if not TeleGen2_2d_Bug then
    type X_Char_Struct_Array_2d is array (U_Char range <>,  
                                          U_Char range <>) of X_Char_Struct;
--/ else
--//     type X_Char_Struct_Array_2d is array (Telegen2_2d_Bug range <>,
--//                                           U_Char range <>) of X_Char_Struct;
--/ end if;
    type X_Char_Struct_List_2d is access X_Char_Struct_Array_2d;

--/ if Pack then
--//     pragma Pack (X_Char_Struct_Array_2d);
--/ end if;
--/ if Enable_Deallocation then
    pragma Enable_Deallocation (X_Char_Struct_List_2d);
--/ end if;

    None_X_Char_Struct         : constant X_Char_Struct         :=  
       (0, 0, 0, 0, 0, None_X_Per_Char_Flags);  
    None_X_Char_Struct_List_2d : constant X_Char_Struct_List_2d := null;

    function Ci_Non_Exist_Char (Char : X_Char_Struct) return Boolean;
    ----Returns true if this character doesn't really exist in this font.

    procedure Free_X_Char_Struct_List_2d is  
       new Unchecked_Deallocation (X_Char_Struct_Array_2d,  
                                   X_Char_Struct_List_2d);

------------------------------------------------------------------------------
-- Font_Direction - used in Query_Font -- drawing direction
------------------------------------------------------------------------------

    type X_Font_Direction is (Font_Left_To_Right,  
                              Font_Right_To_Left);

--/ if Length_Clauses then
    for X_Font_Direction'Size use 8;
--/ end if;

    None_X_Font_Direction : constant X_Font_Direction :=  
       X_Font_Direction'Val (0);

------------------------------------------------------------------------------
-- X_Font_Prop - Font Properties
------------------------------------------------------------------------------

    type X_Font_Prop is  
        record  
            Name   : X_Atom := None_X_Atom;  
            Data32 : S_Long := 0;  
        end record;

--/ if Length_Clauses then
    for X_Font_Prop'Size use 2 * 32;
--/ end if;

--/ if Record_Rep_Clauses then
--//     for X_Font_Prop use
--//         record
--//             Name   at 0 * X_Word range X_Word0a .. X_Word0b;
--//             Data32 at 1 * X_Word range X_Word0a .. X_Word0b;
--//         end record;
--/ end if;

    type X_Font_Prop_Array is array (S_Natural range <>) of X_Font_Prop;  
    type X_Font_Prop_List  is access X_Font_Prop_Array;

--/ if Pack then
--//     pragma Pack (X_Font_Prop_Array);
--/ end if;
--/ if Enable_Deallocation then
    pragma Enable_Deallocation (X_Font_Prop_List);
--/ end if;

    None_X_Font_Prop      : constant X_Font_Prop      := (None_X_Atom, 0);  
    None_X_Font_Prop_List : constant X_Font_Prop_List := null;

    procedure Free_X_Font_Prop_List is  
       new Unchecked_Deallocation (X_Font_Prop_Array,  
                                   X_Font_Prop_List);

------------------------------------------------------------------------------
-- X_Font_Struct
------------------------------------------------------------------------------

    type X_Font_Struct_Rec is  
        record  
            Ext_Data :                  -- hook for extension to hang data
               X_Ext_Data := null;  
            Font_Id : X_Font;           -- Font ID for this font
            Direction :                 -- hint about direction the font is
               X_Font_Direction :=      --  painted
               None_X_Font_Direction;  
            Min_Char_Or_Byte2 : U_Short := 0;   -- first character (per_char)
            Max_Char_Or_Byte2 : U_Short := 0;   -- last character  (per_char)
            Min_Byte1 : U_Char := 0;    -- first row that exists   (per_char)
            Max_Byte1 : U_Char := 0;    -- last row that exist     (per_char)
            All_Chars_Exist :           -- flag if all characters have non-zero size
               Boolean := False;  
            Default_Char : X_Character16;--char to print for undefined character
            Properties :                -- pointer to array of additional properties
               X_Font_Prop_List := null;  
            Min_Bounds :                -- minimum bounds over all existing char
               X_Char_Struct;           --  (init by type definition)
            Max_Bounds :                -- maximum bounds over all existing char
               X_Char_Struct;           --  (init by type definition)
            Per_Char :                  -- First_Char to Last_Char information
               X_Char_Struct_List_2d := -- array (Min_Char1..Max_Char1,
               None_X_Char_Struct_List_2d;--       Min_Char2..Max_Char2)
                                          -- Only null for fonts without info.
            Ascent : S_Short := 0;      -- logical extent above baseline for
                                        --  spacing
            Descent : S_Short := 0;     -- logical extent above baseline for
                                        --  spacing
        end record;

    type X_Font_Struct       is access X_Font_Struct_Rec;  
    type X_Font_Struct_Array is array (S_Natural range <>) of X_Font_Struct;  
    type X_Font_Struct_List  is access X_Font_Struct_Array;

    None_X_Font_Struct      : constant X_Font_Struct      := null;  
    None_X_Font_Struct_List : constant X_Font_Struct_List := null;

    procedure Free_X_Font_Struct is  
       new Unchecked_Deallocation (X_Font_Struct_Rec,  
                                   X_Font_Struct);  
    procedure Free_X_Font_Struct_List (List : in out X_Font_Struct_List);

--/ if Enable_Deallocation then
    pragma Enable_Deallocation (X_Font_Struct);  
    pragma Enable_Deallocation (X_Font_Struct_List);
--/ end if;

------------------------------------------------------------------------------
-- X_Fonts_With_Info
------------------------------------------------------------------------------

    type X_Fonts_With_Info is  
        record  
            Info : X_Font_Struct_List;  
            Name : X_String_Pointer_List;  
        end record;

    procedure Free_X_Fonts_With_Info (Info : in out X_Fonts_With_Info);

end Xlbt_Font3;  

E3 Meta Data

    nblk1=f
    nid=0
    hdr6=1e
        [0x00] rec0=21 rec1=00 rec2=01 rec3=030
        [0x01] rec0=11 rec1=00 rec2=02 rec3=024
        [0x02] rec0=1c rec1=00 rec2=03 rec3=098
        [0x03] rec0=17 rec1=00 rec2=04 rec3=050
        [0x04] rec0=00 rec1=00 rec2=0f rec3=022
        [0x05] rec0=18 rec1=00 rec2=05 rec3=062
        [0x06] rec0=00 rec1=00 rec2=0e rec3=020
        [0x07] rec0=19 rec1=00 rec2=06 rec3=046
        [0x08] rec0=20 rec1=00 rec2=07 rec3=030
        [0x09] rec0=00 rec1=00 rec2=0d rec3=006
        [0x0a] rec0=14 rec1=00 rec2=0c rec3=07e
        [0x0b] rec0=00 rec1=00 rec2=08 rec3=014
        [0x0c] rec0=0e rec1=00 rec2=09 rec3=05c
        [0x0d] rec0=14 rec1=00 rec2=0a rec3=03e
        [0x0e] rec0=12 rec1=00 rec2=0b rec3=000
    tail 0x2150096a48197841ffefa 0x42a00088462063203