1. private with Tiles.Libraries; 
  2.  
  3. package Widgets.Containers.Keen_Panels is 
  4.  
  5.     type Keen_Panel is new Container with private; 
  6.     type A_Keen_Panel is access all Keen_Panel'Class; 
  7.  
  8.     function Create_Panel( view    : not null access Game_Views.Game_View'Class; 
  9.                            id      : String; 
  10.                            libName : String ) return A_Keen_Panel; 
  11.     pragma Precondition( id'Length > 0 ); 
  12.     pragma Precondition( libName'Length > 0 ); 
  13.     pragma Postcondition( Create_Panel'Result /= null ); 
  14.  
  15. private 
  16.  
  17.     use Tiles.Libraries; 
  18.  
  19.     type Keen_Panel is new Container with 
  20.         record 
  21.             borderWidth   : Natural := 7; 
  22.             lib           : A_Tile_Library := null; 
  23.             topId         : Natural := 0; 
  24.             bottomId      : Natural := 0; 
  25.             leftId        : Natural := 0; 
  26.             rightId       : Natural := 0; 
  27.             topLeftId     : Natural := 0; 
  28.             topRightId    : Natural := 0; 
  29.             bottomLeftId  : Natural := 0; 
  30.             bottomRightId : Natural := 0; 
  31.         end record; 
  32.  
  33.     procedure Construct( this    : access Keen_Panel; 
  34.                          view    : not null access Game_Views.Game_View'Class; 
  35.                          id      : String; 
  36.                          libName : String ); 
  37.     pragma Precondition( id'Length > 0 ); 
  38.     pragma Precondition( libName'Length > 0 ); 
  39.  
  40.     procedure Delete( this : in out Keen_Panel ); 
  41.  
  42.     procedure Draw_Content( this : access Keen_Panel; dc : Drawing_Context ); 
  43.  
  44.     function Get_Min_Height( this : access Keen_Panel ) return Natural; 
  45.  
  46.     function Get_Min_Width( this : access Keen_Panel ) return Natural; 
  47.  
  48. end Widgets.Containers.Keen_Panels;