{ EXTERNAL declarations, etc.,  for Personal Pascal GEM library routines. }

FUNCTION Init_Gem 
	: Short_Integer ;
	EXTERNAL ;
PROCEDURE Exit_Gem ;
	EXTERNAL ;

FUNCTION Do_Alert( alert   : Str255 ;
		   def_btn : Short_Integer )
	: Short_Integer ;
	EXTERNAL ;

{ dialog-oriented subprograms }

FUNCTION New_Dialog( n_items, x, y, w, h : Short_Integer )
	: Dialog_Ptr ;
	EXTERNAL ;
PROCEDURE Delete_Dialog( dial : Dialog_Ptr ) ;
	EXTERNAL ;
FUNCTION Add_DItem( dial          : Dialog_Ptr ; 
		    i_type, flags : Short_Integer ;
		    x, y, w, h    : Short_Integer ;
		    border, color : Short_Integer )
	: Tree_Index ;
	EXTERNAL ;
FUNCTION D_Color( border, text   : Short_Integer ;
		  text_mode      : Boolean ;
		  pattern, fill  : Short_Integer )
	: Short_Integer ;
	EXTERNAL ;
PROCEDURE Set_DText( dial : Dialog_Ptr ;
		     item : Tree_Index ;
		     s    : Str255 ;
		     font : Short_Integer ;
		     just : TE_Just ) ;
	EXTERNAL ;
PROCEDURE Set_DEdit( dial : Dialog_Ptr ;
		     item : Tree_Index ;
		     template, valid, initial : Str255 ;
		     font : Short_Integer ;
		     just : TE_Just ) ;
	EXTERNAL ;
PROCEDURE Obj_SetState( dial   : Dialog_Ptr ;
			index  : Tree_Index ;
			state  : Short_Integer ;
			redraw : boolean ) ;
	EXTERNAL ;
FUNCTION Obj_State( dial  : Dialog_Ptr ;
		    index : Tree_Index ) 
	: Short_Integer ;
	EXTERNAL ;
PROCEDURE Obj_SetFlags( dial : Dialog_Ptr ;
			index : Tree_Index ;
			flags : Short_Integer ) ;
	EXTERNAL ;
FUNCTION Obj_Flags( dial : Dialog_Ptr ;
		    index : Tree_Index ) 
	: Short_Integer ;
	EXTERNAL ;
PROCEDURE Center_Dialog( dial : Dialog_Ptr ) ;
	EXTERNAL ;
FUNCTION Do_Dialog( dial      : Dialog_Ptr ;
		    start_obj : Short_Integer )
	: Short_Integer ;
	EXTERNAL ;
PROCEDURE Get_DEdit( dial  : Dialog_Ptr ;
		     item  : Tree_Index ;
		     VAR s : Str255 ) ;
	EXTERNAL ;
FUNCTION Redo_Dialog( dial      : Dialog_Ptr ;
		      start_obj : Short_Integer )
	: Short_Integer ;
	EXTERNAL ;
PROCEDURE End_Dialog( dial : Dialog_Ptr ) ;
	EXTERNAL ;
PROCEDURE Show_Dialog( dial   : Dialog_Ptr ;
                       item   : Tree_Index ) ;
	EXTERNAL ;

{ predefined dialog routines }

FUNCTION Get_In_File( VAR path, name : Path_Name )
	: boolean ;
	EXTERNAL ;
FUNCTION Get_Out_File(	prompt : Str255 ;
			VAR name : Path_Name ) 
	: boolean ;
	EXTERNAL ;

{ menu-oriented subprograms }

FUNCTION New_Menu( n_items : Short_Integer ;
		   about   : Str255 )
	: Menu_Ptr ;
	EXTERNAL ;
PROCEDURE Delete_Menu( menu : Menu_Ptr ) ;
	EXTERNAL ;
FUNCTION Add_MTitle( menu : Menu_Ptr ;
		     item : Str255 )
	: Short_Integer ;
	EXTERNAL ;
FUNCTION Add_MItem( menu  : Menu_Ptr ;
		    title : Tree_Index ;
		    item  : Str255 )
	: Short_Integer ;
	EXTERNAL ;
PROCEDURE Draw_Menu( menu : Menu_Ptr ) ;
	EXTERNAL ;
PROCEDURE Erase_Menu( menu : Menu_Ptr ) ;
	EXTERNAL ;
PROCEDURE Menu_Hilight( menu  : Menu_Ptr ;
			title : Tree_Index ) ;
	EXTERNAL ;
PROCEDURE Menu_Normal(	menu  : Menu_Ptr ;
			title : Tree_Index ) ;
	EXTERNAL ;
PROCEDURE Menu_Check( menu    : Menu_Ptr ;
		      item    : Tree_Index ;
		      checked : boolean );
	EXTERNAL ;
PROCEDURE Menu_Enable(  menu : Menu_Ptr ;
			item : Tree_Index ) ;
	EXTERNAL ;
PROCEDURE Menu_Disable( menu : Menu_Ptr ;
			item : Tree_Index ) ;
	EXTERNAL ;
PROCEDURE Menu_Text( menu : Menu_Ptr ;
		     item : Tree_Index ;
		     VAR mtext : Str255 ) ;
	EXTERNAL ;
FUNCTION Menu_Register( id : Short_Integer ;      { for desk accessories, only }
			VAR name : Str255 )
	: Short_Integer ;
	EXTERNAL ;

{ window-oriented subprograms}

FUNCTION New_Window( w_type : Short_Integer ;
		     VAR title : Window_Title ;
		     x_max, y_max, w_max, h_max : Short_Integer )
	: Short_Integer ;
	EXTERNAL ;
PROCEDURE Open_Window(  handle : Short_Integer ;
			x, y, w, h : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Close_Window( handle : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Delete_Window( handle : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Set_WSize( handle, x, y, w, h : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Set_WName( handle    : Short_Integer ;
		     VAR title : Window_Title ) ;
	EXTERNAL ;
PROCEDURE Set_WInfo( handle : Short_Integer ;
		     VAR info : Window_Title ) ;
	EXTERNAL ;
PROCEDURE Border_Rect(  wind : Short_Integer ;
			VAR x, y, w, h : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Work_Rect(  wind : Short_Integer ;
		      VAR x, y, w, h : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE First_Rect( wind : Short_Integer ;
		      VAR x, y, w, h : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Next_Rect( wind : Short_Integer ;
		      VAR x, y, w, h : Short_Integer ) ;
	EXTERNAL ;
FUNCTION Rect_Intersect( x, y, w, h : Short_Integer ;
			 VAR x1, y1, w1, h1 : Short_Integer )
	: boolean ;
	EXTERNAL ;
FUNCTION Front_Window : Short_Integer ;
	EXTERNAL ;
PROCEDURE Bring_To_Front( handle : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Set_Window( handle : Short_Integer ) ;
	EXTERNAL ;
FUNCTION Get_Window : Short_Integer ;
	EXTERNAL ;

{ window text and graphics subprograms }

PROCEDURE Set_Clip( x, y, w, h : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Draw_Mode( mode : Draw_Modes ) ;
	EXTERNAL ;
PROCEDURE Set_Color( reg : Color_Reg ;
		     red, green, blue : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Line_Color( color : Color_Reg ) ;
	EXTERNAL ;
PROCEDURE Line_Style( style : Line_Types ) ;
	EXTERNAL ;
PROCEDURE Paint_Color( color : Color_Reg ) ;
	EXTERNAL ;
PROCEDURE Paint_Style( style : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Paint_Outline( on : boolean ) ;
	EXTERNAL ;
PROCEDURE Text_Color( color : Color_Reg ) ;
	EXTERNAL ;
PROCEDURE Text_Style( style : Short_Integer ) ;
	EXTERNAL ;

PROCEDURE Move_To( x, y : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Line( x1, y1, x2, y2 : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Line_To( newx, newy : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Plot( x, y : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Paint_Rect( x, y, w, h : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Frame_Rect( x, y, w, h : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Paint_Oval( x, y, x_rad, y_rad : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Frame_Oval( x, y, x_rad, y_rad : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Paint_Round_Rect( x, y, w, h : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Frame_Round_Rect( x, y, w, h : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Paint_Arc( x, y, x_rad, y_rad : Short_Integer ;
		     beg_ang, end_ang   : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Frame_Arc( x, y, x_rad, y_rad : Short_Integer ;
		     beg_ang, end_ang   : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Draw_String( x, y : Short_Integer ;
		       s : Str255 ) ;
	EXTERNAL ;
PROCEDURE Text_Height( height : Short_Integer ) ;
	EXTERNAL ;

{ mouse-oriented subprograms }

PROCEDURE Set_MForm( VAR form : Mouse_Form ) ;
	EXTERNAL ;
PROCEDURE Set_Mouse( m_type : Mouse_Type ) ;
	EXTERNAL ;
PROCEDURE Hide_Mouse ;
	EXTERNAL ;
PROCEDURE Show_Mouse ;
	EXTERNAL ;
PROCEDURE Init_Mouse ;
	EXTERNAL ;
PROCEDURE Begin_Mouse ;
	EXTERNAL ;
PROCEDURE End_Mouse ;
	EXTERNAL ;

{ event management }

FUNCTION Get_Event(	event_mask : Short_Integer ;
			btn_mask   : Short_Integer ;
			btn_state  : Short_Integer ;
			n_clicks   : Short_Integer ;
			ticks      : Long_Integer ;
                        r1_flag    : boolean ;
				r1x, r1y, r1w, r1h : Short_Integer ;
                        r2_flag    : boolean ;
				r2x, r2y, r2w, r2h : Short_Integer ;
			VAR message : Message_Buffer ;
			VAR key     : Short_Integer ;
			VAR bstate,bcnt   : Short_Integer ;
			VAR mx, my : Short_Integer ;
			VAR kbd_state : Short_Integer  )
	: Short_Integer ;
	EXTERNAL ;
PROCEDURE Begin_Update ;
	EXTERNAL ;
PROCEDURE End_Update ;
	EXTERNAL ;

{ miscellany }

PROCEDURE Wind_Get( handle, request : Short_Integer ;
		    VAR v1, v2, v3, v4 : Short_Integer );
	EXTERNAL ;
PROCEDURE Wind_Set( handle, request : Short_Integer ;
		    v1, v2, v3, v4 : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Sys_Font_Size( VAR w_char, h_char, w_box, h_box : Short_Integer ) ;
	EXTERNAL ;
PROCEDURE Clear_Screen ;
	EXTERNAL ;

{ resource file subprograms }

FUNCTION Load_Resource( fn : Str255 ) : boolean ;
	EXTERNAL ;
PROCEDURE Find_Menu( index : Short_Integer ;
		     VAR menu : Menu_Ptr ) ;
	EXTERNAL ;
PROCEDURE Find_Dialog(  index : Short_Integer ;
			VAR dial : Dialog_Ptr ) ;
	EXTERNAL ;
PROCEDURE Find_Alert( index : Short_Integer ;
		      VAR alert : Str255 ) ;
	EXTERNAL ;
PROCEDURE Free_Resource ;
	EXTERNAL ;

{ the generic VDI and AES calls ! }

PROCEDURE VDI_Call( cmd, sub_cmd : Short_Integer ;
		    nints, npts  : Short_Integer ;
                    VAR ctrl     : Ctrl_Parms ;
                    VAR int_in   : Int_In_Parms ;
		    VAR int_out  : Int_Out_Parms ;
                    VAR pts_in   : Pts_In_Parms ;
		    VAR pts_out  : Pts_Out_Parms ;
                    translate    : boolean ) ;
	EXTERNAL ;

PROCEDURE AES_CALL( op           : Short_Integer ;
		    VAR Int_In   : Int_In_Parms;
		    VAR Int_Out  : Int_out_Parms;
		    VAR Addr_In  : Addr_In_Parms;
                    VAR Addr_Out : Addr_Out_Parms);
	EXTERNAL;

{ End of gemsubs.pas }
