with Events.Listeners; use Events.Listeners;
with Tiles.Matrices; use Tiles.Matrices;
private with Ada.Containers.Vectors;
private with Events;
private with Tiles.Libraries;
package Widgets.Palettes.Matrices is
type Matrix_Palette is abstract new Palette and Event_Listener with private;
function Create_Matrix_Palette( view : not null access Game_Views.Game_View'Class;
id : String ) return A_Palette;
procedure Set_Library_Name( this : access Matrix_Palette; name : String );
private
use Events;
use Tiles.Libraries;
type Matrix_Rec is
record
matrix : A_Tile_Matrix := null;
row,
col,
height,
width : Natural := 0;
end record;
function "="( l, r : Matrix_Rec ) return Boolean;
package Matrix_Vectors is new Ada.Containers.Vectors( Positive, Matrix_Rec, "=" );
type Matrix_Palette is new Palette and Event_Listener with
record
lib : A_Tile_Library := null;
matrices : Matrix_Vectors.Vector;
itemCount : Integer := 0;
end record;
procedure Construct( this : access Matrix_Palette;
view : not null access Game_Views.Game_View'Class;
id : String );
procedure Delete( this : in out Matrix_Palette );
procedure Get_Item_Details( this : access Matrix_Palette;
row,
col : Natural;
bmp : out A_Bitmap;
border : out Color_Type );
function Get_Scroll_Inc_Y( this : access Matrix_Palette ) return Integer;
function Get_Item_Count( this : access Matrix_Palette ) return Natural;
procedure Handle_Event( this : access Matrix_Palette;
evt : in out A_Event;
resp : out Response_Type );
procedure Handle_Mouse_Press( this : access Matrix_Palette;
evt : not null A_Mouse_Button_Event );
end Widgets.Palettes.Matrices;