/*
 *	Declarations for the GEM stuff.
 */

/* $Id: gem.h,v 1.5 1992/11/10 02:20:20 mike Exp $ */

/* $Log: gem.h,v $
 * Revision 1.5  1992/11/10  02:20:20  mike
 * - Added some declarations.
 *
 * Revision 1.4  1992/11/08  22:55:12  mike
 * - Added struct `GEM_window' and some declarations.
 *
 * Revision 1.3  1992/10/12  22:32:22  mike
 * - Updated comments.
 *
 * Revision 1.2  1992/10/12  22:26:04  mike
 * - Discarded virtual workstation `Vw_clear'. It's job is done by
 *   `Vw_print' now.
 *
 * Revision 1.1  1992/10/02  22:31:40  mike
 * Initial revision
 *
 */

#ifndef GEM_H
#define GEM_H


#include <aesbind.h>

#include <ed.h>
#include "me2.h"

typedef struct
{
  int whandle;		/* GEM window handle				*/
  int vw_text;		/* Virtual workstation handle used for text	*/
  int wchar;		/* Character width				*/
  int hchar;		/* Character height				*/
  int font_size;	/* Font size in pt				*/
  int wkind;		/* Window elements				*/
  int wx,wy,ww,wh;	/* The working area				*/
  int fx,fy,fw,fh;	/* The maximum working area			*/
  int nlines;		/* # of lines of the complete text		*/
  int y_offset;		/* # of text line in the window's top row	*/
} GEM_window;

extern int     Phys_handle;		/* AES physical screen handle		*/
extern int     Vw_print;		/* Handle of 1st virtual workstation	*/
extern int     Vw_cursor;		/* Handle of 2nd virtual workstation	*/
extern int     Wchar;			/* From the graf_handle() call		*/
extern int     Hchar;			/* From the graf_handle() call		*/
extern int     Font_size;		/* Current font size in pt		*/
extern int     Wkind;			/* Window kind for the text window	*/
extern int     Text_window;		/* Window handle of the text window	*/
extern int     Deskx,Desky;		/* Position of the desktop working area	*/
extern int     Deskw,Deskh;		/* Size     of the desktop working area	*/
extern int     Workx,Worky;		/* Position of the window  working area	*/
extern int     Workw,Workh;		/* Size     of the window  working area	*/
extern int     Fullx,Fully;		/* Position of the max.    working area	*/
extern int     Fullw,Fullh;		/* Size     of the max.    working area	*/
extern long   *Menu_buffer;		/* Buffer to hold the menu line		*/
extern int     Menu_buffer_size;	/* # of longwords in `Menu_buffer'	*/
extern int     Cursor_x,Cursor_y;	/* Cursor position (screen coords)	*/
extern short   Clip_sem;		/* Is clipping enabled?			*/
extern char    MC2[128];		/* Complete path of MC2			*/
extern char    MC2_options[128];	/* Options for MC2			*/
extern char    MCO_pathname[NFILEN];	/* Path for *.mco file selector		*/
extern char    MUT_pathname[NFILEN];	/* Path for *.mut file selector		*/
extern int     Wait_flag;		/* Always wait after MC2		*/
extern char    Setup_filename[];	/* Name of setup file			*/
extern unsigned int TOS_version;	/* The TOS version number		*/
extern OBJECT *Menu;			/* Pointer to the menu tree		*/
extern short   Buffers_window;		/* State of the buffers window		*/
extern GEM_window Bw;			/* The buffers window			*/

extern KeyCode  events();
extern void     open_buffers_window();
extern void     close_buffers_window();
extern char    *pathfind(char *env, char *file, char *sep);
extern void     redraw_text_window();
extern void     redraw_screen();
extern int      load_setup();


#endif
