1/* MS-DOS specific C utilities, interface. 2 Copyright (C) 1993, 2001, 2002, 2003, 2004, 3 2005, 2006, 2007 Free Software Foundation, Inc. 4 5This file is part of GNU Emacs. 6 7GNU Emacs is free software; you can redistribute it and/or modify 8it under the terms of the GNU General Public License as published by 9the Free Software Foundation; either version 2, or (at your option) 10any later version. 11 12GNU Emacs is distributed in the hope that it will be useful, 13but WITHOUT ANY WARRANTY; without even the implied warranty of 14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15GNU General Public License for more details. 16 17You should have received a copy of the GNU General Public License 18along with GNU Emacs; see the file COPYING. If not, write to 19the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20Boston, MA 02110-1301, USA. */ 21 22#ifndef EMACS_MSDOS_H 23#define EMACS_MSDOS_H 24 25#include <dpmi.h> 26 27int dos_ttraw (); 28int dos_ttcooked (); 29int dos_get_saved_screen (char **, int *, int *); 30int dos_set_keyboard (int, int); 31void dos_set_window_size (int *, int *); 32 33int getdefdir (int, char*); 34void unixtodos_filename (char *); 35void dostounix_filename (char *); 36char *rootrelativepath (char *); 37void init_environment (); 38void internal_terminal_init (); 39void ctrl_break_func (_go32_dpmi_registers *); 40void install_ctrl_break_check (); 41 42extern int have_mouse; 43void mouse_init (); 44void mouse_on (); 45void mouse_off (); 46void mouse_moveto (int, int); 47 48#ifndef HAVE_X_WINDOWS 49/* Dummy types. */ 50typedef int XFontStruct; 51typedef int GC; 52typedef int Pixmap; 53typedef int Display; 54typedef int Window; 55typedef int XRectangle; 56#define PIX_TYPE unsigned long 57#define XDISPLAY 58 59/* A stripped version of struct x_display_info in xterm.h, which see. */ 60struct display_info 61{ 62 /* These variables describe the range of text currently shown in its 63 mouse-face, together with the window they apply to. As long as 64 the mouse stays within this range, we need not redraw anything on 65 its account. Rows and columns are glyph matrix positions in 66 MOUSE_FACE_WINDOW. */ 67 int mouse_face_beg_row, mouse_face_beg_col; 68 int mouse_face_end_row, mouse_face_end_col; 69 int mouse_face_past_end; 70 Lisp_Object mouse_face_window; 71 int mouse_face_face_id; 72 73 /* 1 if a mouse motion event came and we didn't handle it right away because 74 gc was in progress. */ 75 int mouse_face_deferred_gc; 76 77 /* FRAME and X, Y position of mouse when last checked for 78 highlighting. X and Y can be negative or out of range for the frame. */ 79 struct frame *mouse_face_mouse_frame; 80 int mouse_face_mouse_x, mouse_face_mouse_y; 81 82 /* Nonzero means defer mouse-motion highlighting. */ 83 int mouse_face_defer; 84 85 /* Nonzero means that the mouse highlight should not be shown. */ 86 int mouse_face_hidden; 87}; 88 89typedef struct display_info Display_Info; 90 91/* This is a cut-down version of the one in xterm.h, which see. */ 92struct x_output 93{ 94 PIX_TYPE background_pixel; /* used in xfaces.c and lots of other places */ 95 PIX_TYPE foreground_pixel; /* ditto */ 96 XFontStruct *font; /* used in x-popup-menu (xmenu.c) */ 97 Window hourglass_window; /* currently unused (but maybe some day) */ 98 unsigned hourglass_p : 1; /* ditto */ 99 struct display_info display_info; /* used for drawing mouse highlight */ 100}; 101 102extern struct x_output the_only_x_display; 103 104#define FRAME_X_DISPLAY(f) ((Display *) 0) 105#define FRAME_FOREGROUND_PIXEL(f) (the_only_x_display.foreground_pixel) 106#define FRAME_BACKGROUND_PIXEL(f) (the_only_x_display.background_pixel) 107#define FRAME_FONT(f) (the_only_x_display.font) 108#define FRAME_X_DISPLAY_INFO(f) (&the_only_x_display.display_info) 109 110/* Prototypes. */ 111 112/* Forward declarations for prototypes. */ 113struct frame; 114struct window; 115 116/* Defined in xfns.c; emulated on msdos.c */ 117 118extern int have_menus_p P_ ((void)); 119extern void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object)); 120extern int x_pixel_width P_ ((struct frame *)); 121extern int x_pixel_height P_ ((struct frame *)); 122 123#define XFreeGC (void) 124#define x_destroy_bitmap(p1,p2) 125#define load_pixmap(p1,p2,p3,p4) (0) 126#define XGetGeometry(p1,p2,p3,p4,p5,p6,p7,p8,p9) 127#define DisplayWidth(p1,p2) (SELECTED_FRAME()->text_cols) 128#define DisplayHeight(p1,p2) (SELECTED_FRAME()->text_lines) 129#define XMenuSetAEQ (void) 130#define XMenuSetFreeze (void) 131#define XMenuRecompute (void) 132#define FONT_WIDTH(foo) 1 133#define XM_FAILURE -1 134#define XM_SUCCESS 1 135#define XM_NO_SELECT 2 136#define XM_IA_SELECT 3 137#define ButtonReleaseMask 0 138 139typedef struct x_menu_struct 140{ 141 int count; 142 char **text; 143 struct x_menu_struct **submenu; 144 int *panenumber; /* Also used as enable. */ 145 int allocated; 146 int panecount; 147 int width; 148 char **help_text; 149} XMenu; 150 151XMenu *XMenuCreate (Display *, Window, char *); 152int XMenuAddPane (Display *, XMenu *, char *, int); 153int XMenuAddSelection (Display *, XMenu *, int, int, char *, int, char *); 154void XMenuLocate (Display *, XMenu *, int, int, int, int, 155 int *, int *, int *, int *); 156int XMenuActivate (Display *, XMenu *, int *, int *, int, int, unsigned, 157 char **, void (*callback)(char *, int, int)); 158void XMenuDestroy (Display *, XMenu *); 159 160#endif /* not HAVE_X_WINDOWS */ 161 162#endif /* not EMACS_MSDOS_H */ 163 164/* arch-tag: ad21eeed-8fdb-4357-8007-36368a6bdbf3 165 (do not change this comment) */ 166