/* MS-DOS specific C utilities, interface.
Copyright (C) 1993, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007 Free Software Foundation, Inc.
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
-GNU Emacs is free software; you can redistribute it and/or modify
+GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA. */
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifndef EMACS_MSDOS_H
#define EMACS_MSDOS_H
#include <dpmi.h>
-int dos_ttraw ();
-int dos_ttcooked ();
+int dos_ttraw (struct tty_display_info *);
+int dos_ttcooked (void);
int dos_get_saved_screen (char **, int *, int *);
int dos_set_keyboard (int, int);
void dos_set_window_size (int *, int *);
void unixtodos_filename (char *);
void dostounix_filename (char *);
char *rootrelativepath (char *);
-void init_environment ();
-void internal_terminal_init ();
-void ctrl_break_func (_go32_dpmi_registers *);
-void install_ctrl_break_check ();
+void init_environment (int, char **, int);
+void internal_terminal_init (void);
+void initialize_msdos_display (struct terminal *);
extern int have_mouse;
-void mouse_init ();
-void mouse_on ();
-void mouse_off ();
+void mouse_init (void);
+void mouse_on (void);
+void mouse_off (void);
void mouse_moveto (int, int);
\f
#ifndef HAVE_X_WINDOWS
#define PIX_TYPE unsigned long
#define XDISPLAY
-/* A stripped version of struct x_display_info in xterm.h, which see. */
-struct display_info
-{
- /* These variables describe the range of text currently shown in its
- mouse-face, together with the window they apply to. As long as
- the mouse stays within this range, we need not redraw anything on
- its account. Rows and columns are glyph matrix positions in
- MOUSE_FACE_WINDOW. */
- int mouse_face_beg_row, mouse_face_beg_col;
- int mouse_face_end_row, mouse_face_end_col;
- int mouse_face_past_end;
- Lisp_Object mouse_face_window;
- int mouse_face_face_id;
-
- /* 1 if a mouse motion event came and we didn't handle it right away because
- gc was in progress. */
- int mouse_face_deferred_gc;
-
- /* FRAME and X, Y position of mouse when last checked for
- highlighting. X and Y can be negative or out of range for the frame. */
- struct frame *mouse_face_mouse_frame;
- int mouse_face_mouse_x, mouse_face_mouse_y;
-
- /* Nonzero means defer mouse-motion highlighting. */
- int mouse_face_defer;
-
- /* Nonzero means that the mouse highlight should not be shown. */
- int mouse_face_hidden;
-};
-
-typedef struct display_info Display_Info;
-
-/* This is a cut-down version of the one in xterm.h, which see. */
-struct x_output
-{
- PIX_TYPE background_pixel; /* used in xfaces.c and lots of other places */
- PIX_TYPE foreground_pixel; /* ditto */
- XFontStruct *font; /* used in x-popup-menu (xmenu.c) */
- Window hourglass_window; /* currently unused (but maybe some day) */
- unsigned hourglass_p : 1; /* ditto */
- struct display_info display_info; /* used for drawing mouse highlight */
-};
+typedef struct tty_display_info Display_Info;
-extern struct x_output the_only_x_display;
+extern struct tty_display_info the_only_display_info;
#define FRAME_X_DISPLAY(f) ((Display *) 0)
-#define FRAME_FOREGROUND_PIXEL(f) (the_only_x_display.foreground_pixel)
-#define FRAME_BACKGROUND_PIXEL(f) (the_only_x_display.background_pixel)
-#define FRAME_FONT(f) (the_only_x_display.font)
-#define FRAME_X_DISPLAY_INFO(f) (&the_only_x_display.display_info)
+#define FRAME_FONT(f) ((f)->output_data.tty->font)
+#define FRAME_X_DISPLAY_INFO(f) (&the_only_display_info)
/* Prototypes. */
/* Defined in xfns.c; emulated on msdos.c */
-extern void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
-extern int x_pixel_width P_ ((struct frame *));
-extern int x_pixel_height P_ ((struct frame *));
+extern void x_set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
+extern int x_pixel_width (struct frame *);
+extern int x_pixel_height (struct frame *);
#define XFreeGC (void)
#define x_destroy_bitmap(p1,p2)
-#define load_pixmap(p1,p2,p3,p4) (0)
#define XGetGeometry(p1,p2,p3,p4,p5,p6,p7,p8,p9)
#define DisplayWidth(p1,p2) (SELECTED_FRAME()->text_cols)
#define DisplayHeight(p1,p2) (SELECTED_FRAME()->text_lines)