1. with Events.Listeners;                  use Events.Listeners; 
  2. with Tiles.Matrices;                    use Tiles.Matrices; 
  3.  
  4. private with Ada.Containers.Vectors; 
  5. private with Events; 
  6. private with Tiles.Libraries; 
  7.  
  8. package Widgets.Palettes.Matrices is 
  9.  
  10.     type Matrix_Palette is abstract new Palette and Event_Listener with private; 
  11.  
  12.     function Create_Matrix_Palette( view : not null access Game_Views.Game_View'Class; 
  13.                                     id   : String ) return A_Palette; 
  14.  
  15.     procedure Set_Library_Name( this : access Matrix_Palette; name : String ); 
  16.  
  17. private 
  18.  
  19.     use Events; 
  20.     use Tiles.Libraries; 
  21.  
  22.     ---------------------------------------------------------------------------- 
  23.  
  24.     type Matrix_Rec is 
  25.         record 
  26.             matrix : A_Tile_Matrix := null; 
  27.             row, 
  28.             col, 
  29.             height, 
  30.             width      : Natural := 0; 
  31.         end record; 
  32.  
  33.     function "="( l, r : Matrix_Rec ) return Boolean; 
  34.  
  35.     package Matrix_Vectors is new Ada.Containers.Vectors( Positive, Matrix_Rec, "=" ); 
  36.  
  37.     ---------------------------------------------------------------------------- 
  38.  
  39.     type Matrix_Palette is new Palette and Event_Listener with 
  40.         record 
  41.             lib       : A_Tile_Library := null; 
  42.             matrices  : Matrix_Vectors.Vector; 
  43.             itemCount : Integer := 0;      -- number of slots in the palette 
  44.         end record; 
  45.  
  46.     procedure Construct( this : access Matrix_Palette; 
  47.                          view : not null access Game_Views.Game_View'Class; 
  48.                          id   : String ); 
  49.  
  50.     procedure Delete( this : in out Matrix_Palette ); 
  51.  
  52.     procedure Get_Item_Details( this   : access Matrix_Palette; 
  53.                                 row, 
  54.                                 col    : Natural; 
  55.                                 bmp    : out A_Bitmap; 
  56.                                 border : out Color_Type ); 
  57.  
  58.     function Get_Scroll_Inc_Y( this : access Matrix_Palette ) return Integer; 
  59.  
  60.     function Get_Item_Count( this : access Matrix_Palette ) return Natural; 
  61.  
  62.     procedure Handle_Event( this : access Matrix_Palette; 
  63.                             evt  : in out A_Event; 
  64.                             resp : out Response_Type ); 
  65.  
  66.     procedure Handle_Mouse_Press( this : access Matrix_Palette; 
  67.                                   evt  : not null A_Mouse_Button_Event ); 
  68.  
  69. end Widgets.Palettes.Matrices;