with GNATCOM.Dispinterface;

package MSHTML.IHTMLMediaElement_Interface is

   type IHTMLMediaElement_Type is
     new GNATCOM.Dispinterface.Dispinterface_Type with null record;

   procedure Initialize (This : in out IHTMLMediaElement_Type);

   function Pointer (This : IHTMLMediaElement_Type)
     return Pointer_To_IHTMLMediaElement;

   procedure Attach (This    : in out IHTMLMediaElement_Type;
                     Pointer : in     Pointer_To_IHTMLMediaElement);

   function Get_error
     (This : IHTMLMediaElement_Type)
     return Pointer_To_IHTMLMediaError;

   procedure Put_src
     (This : IHTMLMediaElement_Type;
      p    : GNATCOM.Types.BSTR;
      Free : Boolean := True);

   function Get_src
     (This : IHTMLMediaElement_Type)
     return GNATCOM.Types.BSTR;

   function Get_currentSrc
     (This : IHTMLMediaElement_Type)
     return GNATCOM.Types.BSTR;

   function Get_networkState
     (This : IHTMLMediaElement_Type)
     return Interfaces.C.unsigned_short;

   procedure Put_preload
     (This : IHTMLMediaElement_Type;
      p    : GNATCOM.Types.BSTR;
      Free : Boolean := True);

   function Get_preload
     (This : IHTMLMediaElement_Type)
     return GNATCOM.Types.BSTR;

   function Get_buffered
     (This : IHTMLMediaElement_Type)
     return Pointer_To_IHTMLTimeRanges;

   procedure load
     (This : IHTMLMediaElement_Type);

   function canPlayType
     (This    : IHTMLMediaElement_Type;
      utype   : GNATCOM.Types.BSTR;
      Free    : Boolean := True)
     return GNATCOM.Types.BSTR;

   function Get_seeking
     (This : IHTMLMediaElement_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_currentTime
     (This : IHTMLMediaElement_Type;
      p    : Interfaces.C.C_float);

   function Get_currentTime
     (This : IHTMLMediaElement_Type)
     return Interfaces.C.C_float;

   function Get_initialTime
     (This : IHTMLMediaElement_Type)
     return Interfaces.C.C_float;

   function Get_duration
     (This : IHTMLMediaElement_Type)
     return Interfaces.C.C_float;

   function Get_paused
     (This : IHTMLMediaElement_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_defaultPlaybackRate
     (This : IHTMLMediaElement_Type;
      p    : Interfaces.C.C_float);

   function Get_defaultPlaybackRate
     (This : IHTMLMediaElement_Type)
     return Interfaces.C.C_float;

   procedure Put_playbackRate
     (This : IHTMLMediaElement_Type;
      p    : Interfaces.C.C_float);

   function Get_playbackRate
     (This : IHTMLMediaElement_Type)
     return Interfaces.C.C_float;

   function Get_played
     (This : IHTMLMediaElement_Type)
     return Pointer_To_IHTMLTimeRanges;

   function Get_seekable
     (This : IHTMLMediaElement_Type)
     return Pointer_To_IHTMLTimeRanges;

   function Get_ended
     (This : IHTMLMediaElement_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_autoplay
     (This : IHTMLMediaElement_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_autoplay
     (This : IHTMLMediaElement_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_loop
     (This : IHTMLMediaElement_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_loop
     (This : IHTMLMediaElement_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure play
     (This : IHTMLMediaElement_Type);

   procedure pause
     (This : IHTMLMediaElement_Type);

   procedure Put_controls
     (This : IHTMLMediaElement_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_controls
     (This : IHTMLMediaElement_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_volume
     (This : IHTMLMediaElement_Type;
      p    : Interfaces.C.C_float);

   function Get_volume
     (This : IHTMLMediaElement_Type)
     return Interfaces.C.C_float;

   procedure Put_muted
     (This : IHTMLMediaElement_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_muted
     (This : IHTMLMediaElement_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_autobuffer
     (This : IHTMLMediaElement_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_autobuffer
     (This : IHTMLMediaElement_Type)
     return GNATCOM.Types.VARIANT_BOOL;

end MSHTML.IHTMLMediaElement_Interface;

