with
     openGL.surface_Profile,
     openGL.Display;

--  private
--  with
--       Glx;

limited
with
     openGL.Context;


package openGL.Surface
--
--  Models an openGL surface.
--
is

   type Item  is tagged private;
   type Items is array (Positive range <>) of aliased Item;

   type View  is access all Item'class;
   type Views is array (Positive range <>) of View;


   procedure define (Self : in out Item;   surface_Profile : in openGL.surface_Profile.item'Class;
                                           Display         : in openGL.Display.Item;
                                           Window_Id       : in Natural);


   --  Operations
   --
   procedure swap_Buffers (Self : in Item);



private

   type Item is tagged
      record
--           glx_Surface :        glx.GLXDrawable;
         Context     : access openGL.Context.item'Class;
         Display     :        openGL.Display.item;
      end record;

end openGL.Surface;
