# caracteres.ads

    --
    -- Package Caracteres
    --
    -- Ce package fournit la représentation graphique des caractères
    -- sous la forme d'une trame de points (une matrice).
    --
    package Caracteres is

       -- Ignorez cette ligne.
       pragma Elaborate_Body ;

       -- Dans la trame de chaque caractère, une case contient un pixel (un point)
       -- qui peut être éteint ou allumé.
       type T_Pixel is (Eteint, Allume) ;

       -- Tous les caractères ont la même taille (en pixels).
       Hauteur_Car : constant Integer := 13 ;
       Largeur_Car : constant Integer := 6 ;

       -- Une trame est une matrice de pixels (le dessin du caractère).
       -- Voir un exemple à la fin du fichier
       type T_Trame is array(Integer range <>, Integer range <>) of T_Pixel ;

       -- La table contient des paires (caractère, trame) :
       --   un caractère et sa trame
       type T_Paire is record
          Car   : Character ;
          Trame : T_Trame (1..Hauteur_Car, 1..Largeur_Car) ;
       end record ;

       --
       -- Définition de la table contenant les paires (caractère, trame)
       --
       Nombre_De_Caracteres : constant Integer := 91 ;

       type T_Table is array (Integer range <>) of T_Paire ;

       -- Attention, le premier caractère est un espace.
       Table : T_Table (1..Nombre_De_Caracteres) ;

       -- Initialise toutes les cases de la variable Table.
       procedure Init ;

    end Caracteres ;

       --
       -- Exemple de trame : la trame du caractère $
       --   (cette trame est plus petite que celles utilisées dans l'acteur)
       --
       -- Colonne   123456
       --
       -- Ligne 1     #
       -- Ligne 2    ####
       -- Ligne 3   # #
       -- Ligne 4   # #
       -- Ligne 5    ###
       -- Ligne 6     # #
       -- Ligne 7     # #
       -- Ligne 8   ####
       -- Ligne 9     #
       --
       --
       -- # Représente un pixel allumé
       -- Un blanc représente un pixel éteint.
       --