with Window_Io;
with Bounded_String;
package Box_Display is

    type Box is private;

    function Make return Box;

    procedure Set_Size (On_Box : in out Box; Height : Natural; Width : Natural);

    procedure Set_Label (On_Box : in out Box; Label : String);

    function Height (A_Box : Box) return Natural;

    function Width (A_Box : Box) return Natural;

    function Label (On_Box : Box) return String;

    procedure Display (The_Box : Box;
                       In_Window : Window_Io.File_Type;
                       At_Line : Window_Io.Line_Number;
                       At_Column : Window_Io.Column_Number);

private
    subtype Var_String is Bounded_String.Variable_String (80);

    type Box is
        record
            Height : Natural;
            Width : Natural;
            Label : Var_String;
        end record;

end Box_Display;