FANDOM


Below is the full text to windows.c from the source code of SLASH'EM 0.0.7E7F2. To link to a particular line, write [[SLASH'EM 0.0.7E7F2/windows.c#line123]], for example.

The latest source code for vanilla NetHack is at Source code.


The NetHack General Public License applies to screenshots, source code and other content from NetHack.
1.    /*	SCCS Id: @(#)windows.c	3.4	1996/05/19	*/
2.    /* Copyright (c) D. Cohrs, 1993. */
3.    /* NetHack may be freely redistributed.  See license for details. */
4.    
5.    #include "hack.h"
6.    #ifdef TTY_GRAPHICS
7.    #include "wintty.h"
8.    #endif
9.    #ifdef X11_GRAPHICS
10.   /* cannot just blindly include winX.h without including all of X11 stuff */
11.   /* and must get the order of include files right.  Don't bother */
12.   extern struct window_procs X11_procs;
13.   extern void NDECL(win_X11_init);
14.   #endif
15.   #ifdef QT_GRAPHICS
16.   extern struct window_procs Qt_procs;
17.   #endif
18.   #ifdef GTK_GRAPHICS
19.   /*
20.    * GTK interface (By issei@guru.gr.jp)
21.    */
22.   extern struct window_procs GTK_procs;
23.   extern void NDECL(win_GTK_init);
24.   #endif
25.   #ifdef GEM_GRAPHICS
26.   #include "wingem.h"
27.   #endif
28.   #ifdef MAC
29.   extern struct window_procs mac_procs;
30.   #endif
31.   #ifdef BEOS_GRAPHICS
32.   extern struct window_procs beos_procs;
33.   extern void NDECL(be_win_init);
34.   #endif
35.   #ifdef AMIGA_INTUITION
36.   extern struct window_procs amii_procs;
37.   extern struct window_procs amiv_procs;
38.   extern void NDECL(ami_wininit_data);
39.   #endif
40.   #ifdef WIN32_GRAPHICS
41.   extern struct window_procs win32_procs;
42.   #endif
43.   #ifdef GNOME_GRAPHICS
44.   #include "winGnome.h"
45.   extern struct window_procs Gnome_procs;
46.   #endif
47.   #ifdef GL_GRAPHICS
48.   #include "winGL.h"
49.   extern struct window_procs sdlgl_hardw_procs;
50.   #endif
51.   #ifdef SDL_GRAPHICS
52.   #include "winGL.h"
53.   extern struct window_procs sdlgl_softw_procs;
54.   #endif
55.   #ifdef PROXY_GRAPHICS
56.   #include "winproxy.h"
57.   extern struct window_procs proxy_procs;
58.   extern void NDECL(win_proxy_init);
59.   #endif
60.   #ifdef MSWIN_GRAPHICS
61.   extern struct window_procs mswin_procs;
62.   #endif
63.   
64.   STATIC_DCL void FDECL(def_raw_print, (const char *s));
65.   
66.   NEARDATA struct window_procs windowprocs;
67.   
68.   static
69.   struct win_choices {
70.       struct window_procs *procs;
71.       void NDECL((*ini_routine));		/* optional (can be 0) */
72.   } winchoices[] = {
73.   #ifdef TTY_GRAPHICS
74.       { &tty_procs, win_tty_init },
75.   #endif
76.   #ifdef X11_GRAPHICS
77.       { &X11_procs, win_X11_init },
78.   #endif
79.   #ifdef QT_GRAPHICS
80.       { &Qt_procs, 0 },
81.   #endif
82.   #ifdef GTK_GRAPHICS
83.       { &GTK_procs, win_GTK_init },
84.   #endif
85.   #ifdef GEM_GRAPHICS
86.       { &Gem_procs, win_Gem_init },
87.   #endif
88.   #ifdef MAC
89.       { &mac_procs, 0 },
90.   #endif
91.   #ifdef BEOS_GRAPHICS
92.       { &beos_procs, be_win_init },
93.   #endif
94.   #ifdef AMIGA_INTUITION
95.       { &amii_procs, ami_wininit_data },		/* Old font version of the game */
96.       { &amiv_procs, ami_wininit_data },		/* Tile version of the game */
97.   #endif
98.   #ifdef WIN32_GRAPHICS
99.       { &win32_procs, 0 },
100.  #endif
101.  #ifdef GNOME_GRAPHICS
102.      { &Gnome_procs, 0 },
103.  #endif
104.  #ifdef GL_GRAPHICS
105.      { &sdlgl_hardw_procs, 0 },
106.  #endif
107.  #ifdef SDL_GRAPHICS
108.      { &sdlgl_softw_procs, 0 },
109.  #endif
110.  #ifdef PROXY_GRAPHICS
111.      { &proxy_procs, win_proxy_init },
112.  #endif
113.  #ifdef MSWIN_GRAPHICS
114.      { &mswin_procs, 0 },
115.  #endif
116.      { 0, 0 }		/* must be last */
117.  };
118.  
119.  STATIC_OVL
120.  void
121.  def_raw_print(s)
122.  const char *s;
123.  {
124.      puts(s);
125.  }
126.  
127.  static int windows_lock = FALSE;
128.  
129.  int
130.  lock_windows(flag)
131.  int flag;
132.  {
133.      int retval = windows_lock;
134.      windows_lock = flag;
135.      return retval;
136.  }
137.  
138.  void
139.  choose_windows(s)
140.  const char *s;
141.  {
142.      register int i;
143.  
144.      if (windows_lock)
145.  	return;
146.  
147.      for(i=0; winchoices[i].procs; i++)
148.  	if (!strcmpi(s, winchoices[i].procs->name)) {
149.  	    windowprocs = *winchoices[i].procs;
150.  	    if (winchoices[i].ini_routine) (*winchoices[i].ini_routine)();
151.  	    return;
152.  	}
153.  
154.      if (!windowprocs.win_raw_print)
155.  	windowprocs.win_raw_print = def_raw_print;
156.  
157.      raw_printf("Window type %s not recognized.  Choices are:", s);
158.      for(i=0; winchoices[i].procs; i++)
159.  	raw_printf("        %s", winchoices[i].procs->name);
160.  
161.      if (windowprocs.win_raw_print == def_raw_print)
162.  	terminate(EXIT_SUCCESS);
163.      wait_synch();
164.  }
165.  
166.  /*
167.   * tty_message_menu() provides a means to get feedback from the
168.   * --More-- prompt; other interfaces generally don't need that.
169.   */
170.  /*ARGSUSED*/
171.  char
172.  genl_message_menu(let, how, mesg)
173.  char let;
174.  int how;
175.  const char *mesg;
176.  {
177.  #if defined(MAC_MPW)
178.  # pragma unused ( how,let )
179.  #endif
180.      pline("%s", mesg);
181.      return 0;
182.  }
183.  
184.  /*ARGSUSED*/
185.  void
186.  genl_preference_update(pref)
187.  const char *pref;
188.  {
189.  	/* window ports are expected to provide
190.  	   their own preference update routine
191.  	   for the preference capabilities that
192.  	   they support.
193.  	   Just return in this genl one. */
194.  }
195.  /*windows.c*/

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.