with Allegro.Displays; use Allegro.Displays;
with Allegro.Bitmaps; use Allegro.Bitmaps;
with Objects; use Objects;
with Processes; use Processes;
with Widgets.Containers.Windows; use Widgets.Containers.Windows;
private with Ada.Real_Time;
package Renderers is
type Renderer is new Limited_Object and Process with private;
type A_Renderer is access all Renderer'Class;
function Create_Renderer( display : A_Allegro_Display;
win : not null A_Window;
fps : Positive ) return A_Renderer;
pragma Postcondition( Create_Renderer'Result /= null );
procedure Delete( this : in out A_Renderer );
pragma Postcondition( this = null );
private
use Ada.Real_Time;
type Page_Array is array(Natural range <>) of A_Allegro_Bitmap;
type A_Page_Array is access all Page_Array;
type Renderer is new Limited_Object and Process with
record
display : A_Allegro_Display := null;
buffer : A_Allegro_Bitmap := null;
win : A_Window := null;
frameDelta : Time_Span := Time_Span_Zero;
lastFrame : Time := Time_First;
end record;
procedure Construct( this : access Renderer;
display : A_Allegro_Display;
win : not null A_Window;
fps : Positive );
procedure Delete( this : in out Renderer );
function Get_Process_Name( this : access Renderer ) return String;
procedure Tick( this : access Renderer; time : Tick_Time );
end Renderers;