(***********************************************************************)
(*                                                                     *)
(*                             Active-DVI                              *)
(*                                                                     *)
(*                   Projet Cristal, INRIA Rocquencourt                *)
(*                                                                     *)
(*  Copyright 2002 Institut National de Recherche en Informatique et   *)
(*  en Automatique.  All rights reserved.  This file is distributed    *)
(*  under the terms of the GNU Lesser General Public License.          *)
(*                                                                     *)
(*  Jun Furuse, Didier Rémy and Pierre Weis.                           *)
(*  Contributions by Roberto Di Cosmo, Didier Le Botlan,               *)
(*  Xavier Leroy, and Alan Schmitt.                                    *)
(*                                                                     *)
(*  Based on Mldvi by Alexandre Miquel.                                *)
(***********************************************************************)

(* $Id: embed.mli,v 1.8 2003/10/23 16:49:23 weis Exp $ *)

(* Embedded applications *)
type app_mode =
   | Fake

      (* A [Fake] application is not launched. It is just used to
         reserve a given area on the screen for another application to
         display its material afterwards. *)

   | Raw

      (* A [Raw] application is launched at each invocation. It is
         never automatically killed, except at the end of show. As
         soon as launched, a [Raw] application remains visible until
         explicitly hidden. When hidden, [Raw] applications have to be
         remap manually when necessary. *)

   | Sticky

      (* A [Sticky] application is launched once and only once. It is
         not killed when a new slide is visualized. Hence, as soon as
         launched, a [Sticky] application remains visible throughout
         the show. *)

   | Persistent

      (* A [Persistent] application is not visible out of the slide
         that launched it. A [Persistent] application is launched once
         and only once and keeps running throughout the show. A
         [Persistent] application must be embeddable, since its window
         must be mapped and unmapped. *)

   | Ephemeral

      (* An [Ephemeral] is an application that is launched when the
         page it appears in is visualised. It is automatically killed
         when going to another slide. If the page becomes visible
         again, the application will be launched again as well. *)
;;

type signal = int;;

open Launch;;

val embed_app :
  app_command -> app_mode -> app_name -> int -> int -> int -> int -> unit;;
val map_embedded_app : app_name -> unit;;
val map_all_embedded_app : app_name -> unit;;
val unmap_embedded_app : app_name -> unit;;
val unmap_all_embedded_app : app_name -> unit;;
val kill_embedded_app : signal -> app_name -> unit;;
val kill_all_embedded_app : signal -> app_name -> unit;;
val kill_all_embedded_apps : unit -> unit;;
val kill_ephemeral_apps : unit -> unit;;
