/*
 * Copyright (c) 1994 by Xerox Corporation.  All rights reserved.
 *
 * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
 * OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.
 *
 * Permission is hereby granted to use or copy this program
 * for any purpose,  provided the above notices are retained on all copies.
 * Permission to modify the code and to distribute modified code is granted,
 * provided the above notices are retained, and a notice that the code was
 * modified is included with the above copyright notice.
 */
/* Boehm, May 19, 1994 2:25 pm PDT */

/* cord.h, de_cmds.h, and windows.h should be included before this. */


# define OTHER_FLAG  0x100
# define EDIT_CMD_FLAG  0x200
# define REPEAT_FLAG  0x400

# define CHAR_CMD(i) ((i) & 0xff)

/* MENU: DE */
#define IDM_FILESAVE    (EDIT_CMD_FLAG + WRITE)
#define IDM_FILEEXIT    (OTHER_FLAG + 1)
#define IDM_HELPABOUT    (OTHER_FLAG + 2)
#define IDM_HELPCONTENTS  (OTHER_FLAG + 3)

#define IDM_EDITPDOWN    (REPEAT_FLAG + EDIT_CMD_FLAG + DOWN)
#define IDM_EDITPUP    (REPEAT_FLAG + EDIT_CMD_FLAG + UP)
#define IDM_EDITUNDO    (EDIT_CMD_FLAG + UNDO)
#define IDM_EDITLOCATE    (EDIT_CMD_FLAG + LOCATE)
#define IDM_EDITDOWN    (EDIT_CMD_FLAG + DOWN)
#define IDM_EDITUP    (EDIT_CMD_FLAG + UP)
#define IDM_EDITLEFT    (EDIT_CMD_FLAG + LEFT)
#define IDM_EDITRIGHT    (EDIT_CMD_FLAG + RIGHT)
#define IDM_EDITBS    (EDIT_CMD_FLAG + BS)
#define IDM_EDITDEL    (EDIT_CMD_FLAG + DEL)
#define IDM_EDITREPEAT    (EDIT_CMD_FLAG + REPEAT)
#define IDM_EDITTOP    (EDIT_CMD_FLAG + TOP)




/* Windows UI stuff  */

LRESULT CALLBACK WndProc (HWND hwnd, UINT message,
        UINT wParam, LONG lParam);

LRESULT CALLBACK AboutBox( HWND hDlg, UINT message,
         UINT wParam, LONG lParam );


/* Screen dimensions.  Maintained by de_win.c.  */
extern int LINES;
extern int COLS;

/* File being edited.  */
extern char * arg_file_name;

/* Current display position in file.  Maintained by de.c  */
extern int dis_line;
extern int dis_col;

/* Current cursor position in file.        */
extern int line;
extern int col;

/*
 *  Calls from de_win.c to de.c
 */
  
CORD retrieve_screen_line(int i);
      /* Get the contents of i'th screen line.  */
      /* Relies on COLS.        */

void set_position(int x, int y);
      /* Set column, row.  Upper left of window = (0,0). */

void do_command(int);
      /* Execute an editor command.      */
      /* Agument is a command character or one  */
      /* of the IDM_ commands.      */

void generic_init(void);
      /* OS independent initialization */


/*
 * Calls from de.c to de_win.c
 */
 
void move_cursor(int column, int line);
      /* Physically move the cursor on the display,  */
      /* so that it appears at      */
      /* (column, line).        */

void invalidate_line(int line);
      /* Invalidate line i on the screen.  */

void de_error(char *s);
      /* Display error message.  */