(init_alloc_once): Call init_weak_hash_tables.
[bpt/emacs.git] / src / msdos.h
CommitLineData
1b94449f 1/* MS-DOS specific C utilities, interface.
0b5538bd 2 Copyright (C) 1993, 2001, 2002, 2003, 2004,
8cabe764 3 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
1b94449f
RS
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
684d6f5b 9the Free Software Foundation; either version 3, or (at your option)
1b94449f
RS
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
4fc5845f
LK
19the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20Boston, MA 02110-1301, USA. */
1b94449f 21
102f33d0
EZ
22#ifndef EMACS_MSDOS_H
23#define EMACS_MSDOS_H
87485d6f 24
1b94449f
RS
25#include <dpmi.h>
26
27int dos_ttraw ();
28int dos_ttcooked ();
8a7b1700
KS
29int dos_get_saved_screen (char **, int *, int *);
30int dos_set_keyboard (int, int);
9a4a6c03 31void dos_set_window_size (int *, int *);
8a7b1700 32
1b94449f
RS
33int getdefdir (int, char*);
34void unixtodos_filename (char *);
35void dostounix_filename (char *);
af1b066b 36char *rootrelativepath (char *);
1b94449f
RS
37void init_environment ();
38void internal_terminal_init ();
1b94449f
RS
39void ctrl_break_func (_go32_dpmi_registers *);
40void install_ctrl_break_check ();
41
42extern int have_mouse;
1b94449f
RS
43void mouse_init ();
44void mouse_on ();
45void mouse_off ();
46void mouse_moveto (int, int);
87485d6f
MW
47\f
48#ifndef HAVE_X_WINDOWS
49/* Dummy types. */
50typedef int XFontStruct;
51typedef int GC;
52typedef int Pixmap;
53typedef int Display;
54typedef int Window;
bd5197a4 55typedef int XRectangle;
06f72b3d 56#define PIX_TYPE unsigned long
87485d6f
MW
57#define XDISPLAY
58
adb9900f
EZ
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;
11690c8e
KS
84
85 /* Nonzero means that the mouse highlight should not be shown. */
86 int mouse_face_hidden;
adb9900f
EZ
87};
88
36632fc1
KS
89typedef struct display_info Display_Info;
90
87485d6f 91/* This is a cut-down version of the one in xterm.h, which see. */
26522841 92struct x_output
87485d6f 93{
2d764c78
EZ
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) */
231c4d5c
GM
97 Window hourglass_window; /* currently unused (but maybe some day) */
98 unsigned hourglass_p : 1; /* ditto */
adb9900f 99 struct display_info display_info; /* used for drawing mouse highlight */
87485d6f
MW
100};
101
26522841 102extern struct x_output the_only_x_display;
2d764c78 103
87485d6f
MW
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)
adb9900f 108#define FRAME_X_DISPLAY_INFO(f) (&the_only_x_display.display_info)
2f950292 109
bd5197a4
EZ
110/* Prototypes. */
111
112/* Forward declarations for prototypes. */
113struct frame;
114struct window;
236027c9 115
236027c9 116/* Defined in xfns.c; emulated on msdos.c */
bd5197a4 117
bd5197a4
EZ
118extern void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
119extern int x_pixel_width P_ ((struct frame *));
120extern int x_pixel_height P_ ((struct frame *));
121
87485d6f 122#define XFreeGC (void)
87485d6f
MW
123#define x_destroy_bitmap(p1,p2)
124#define load_pixmap(p1,p2,p3,p4) (0)
125#define XGetGeometry(p1,p2,p3,p4,p5,p6,p7,p8,p9)
fdbf2e9b
KS
126#define DisplayWidth(p1,p2) (SELECTED_FRAME()->text_cols)
127#define DisplayHeight(p1,p2) (SELECTED_FRAME()->text_lines)
87485d6f
MW
128#define XMenuSetAEQ (void)
129#define XMenuSetFreeze (void)
130#define XMenuRecompute (void)
131#define FONT_WIDTH(foo) 1
87485d6f
MW
132#define XM_FAILURE -1
133#define XM_SUCCESS 1
134#define XM_NO_SELECT 2
135#define XM_IA_SELECT 3
136#define ButtonReleaseMask 0
137
138typedef struct x_menu_struct
139{
140 int count;
141 char **text;
142 struct x_menu_struct **submenu;
143 int *panenumber; /* Also used as enable. */
144 int allocated;
145 int panecount;
146 int width;
9863d8ff 147 char **help_text;
87485d6f
MW
148} XMenu;
149
cbc07d0a
RS
150XMenu *XMenuCreate (Display *, Window, char *);
151int XMenuAddPane (Display *, XMenu *, char *, int);
9863d8ff 152int XMenuAddSelection (Display *, XMenu *, int, int, char *, int, char *);
cbc07d0a
RS
153void XMenuLocate (Display *, XMenu *, int, int, int, int,
154 int *, int *, int *, int *);
9863d8ff 155int XMenuActivate (Display *, XMenu *, int *, int *, int, int, unsigned,
f5c322fc 156 char **, void (*callback)(char *, int, int));
cbc07d0a
RS
157void XMenuDestroy (Display *, XMenu *);
158
87485d6f
MW
159#endif /* not HAVE_X_WINDOWS */
160
102f33d0 161#endif /* not EMACS_MSDOS_H */
ab5796a9
MB
162
163/* arch-tag: ad21eeed-8fdb-4357-8007-36368a6bdbf3
164 (do not change this comment) */