/*
 * pane.h
 *
 * [Generated from pane, 25 September 1996]
 */

#if !defined(__CC_NORCROFT) || !defined(__arm)
  #error You must use the Norcroft ARM Compiler for Sapphire programs
#endif

#pragma include_only_once
#pragma force_top_level

#ifndef __pane_h
#define __pane_h

#ifndef __sapphire_h
  #include "sapphire.h"
#endif

/*----- Overview ----------------------------------------------------------*
 *
 * Functions provided:
 *
 *  pane_add
 *  pane_remove
 *  pane_closed
 *  pane_deleted
 *  pane_swap
 *  pane_open
 *  pane_init
 */

/* --- pane_add --- *
 *
 * On entry:	R0 == window handle of parent window
 *		R1 == icon handle in parent window
 *		R2 == window handle of pane window
 *
 * On exit:	May return an error
 *
 * Use:		This call registers a pane to be associated with the given
 *		window. The pane is always opened to fit exactly within
 *		the given icon -- border widths are taken into account
 *		if there are scroll bars etc.
 *
 *		You must call pane_closed if the parent window is closed,
 *		since there is no way for pane to trap this occurence.
 */

extern routine pane_add;

/* --- pane_remove --- *
 *
 * On entry:	R0 == window handle for which pane was registered
 *		R1 == window handle of the pane window itself
 *
 * On exit:	--
 *
 * Use:		Removes the pane from the given window. This call will
 *		close the given pane, but will not actually delete it
 *		(ie. with a Wimp_DeleteWindow).
 */

extern routine pane_remove;

/* --- pane_closed --- *
 *
 * On entry:	R0 == window handle of parent
 *
 * On exit:	--
 *
 * Use:		Informs pane that a parent window has closed.
 *		All associated panes are then closed.
 */

extern routine pane_closed;

/* --- pane_deleted --- *
 *
 * On entry:	R0 == window handle of parent
 *
 * On exit:	--
 *
 * Use:		Informs pane that a parent window has been deleted.
 *		All associated panes are then closed, and there
 *		registration with the pane library module is
 *		terminated.
 */

extern routine pane_deleted;

/* --- pane_swap --- *
 *
 * On entry:	R0 == window handle of parent window
 *		R1 == icon handle within parent window
 *		R2 == window handle of new pane
 *
 * On exit:	--
 *
 * Use:		This call will replace the pane in associated with icon R1
 *		in window R0, with the pane in R2.
 *
 *		The exisiting pane is closed, and the new pane is
 *		opened in it's place. No error is generated if the existing
 *		pane does not exist; this allows the caller to delete the
 *		window before doing the swap.
 */

extern routine pane_swap;

/* --- pane_open --- *
 *
 * On entry:	R0 == window handle
 *
 * On exit:	--
 *
 * Use:		Opens all the panes associated with the given window.
 */

extern routine pane_open;

/* --- pane_init --- *
 *
 * On entry:	--
 *
 * On exit:	--
 *
 * Use:		Initialises the pane unit.
 */

extern routine pane_init;

/*----- That's all, folks -------------------------------------------------*/

#endif
