|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T V
Length: 10280 (0x2828)
Types: TextFile
Names: »V«
└─⟦85b835f43⟧ Bits:30000549 8mm tape, Rational 1000, Xlib rev 6.00
└─⟦0c20f784e⟧ »DATA«
└─⟦1abbe589f⟧
└─⟦059497ac5⟧
└─⟦this⟧
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.
------------------------------------------------------------------------------
--\f
------------------------------------------------------------------------------
-- 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;