Initial checkin. I created this by combining the XBoard 4.2.6 and
[xboard.git] / frontend.h
1 /*
2  * frontend.h -- Interface exported by all XBoard front ends
3  * $Id$
4  *
5  * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
6  * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
7  *
8  * The following terms apply to Digital Equipment Corporation's copyright
9  * interest in XBoard:
10  * ------------------------------------------------------------------------
11  * All Rights Reserved
12  *
13  * Permission to use, copy, modify, and distribute this software and its
14  * documentation for any purpose and without fee is hereby granted,
15  * provided that the above copyright notice appear in all copies and that
16  * both that copyright notice and this permission notice appear in
17  * supporting documentation, and that the name of Digital not be
18  * used in advertising or publicity pertaining to distribution of the
19  * software without specific, written prior permission.
20  *
21  * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
22  * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
23  * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
24  * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
25  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
26  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
27  * SOFTWARE.
28  * ------------------------------------------------------------------------
29  *
30  * The following terms apply to the enhanced version of XBoard distributed
31  * by the Free Software Foundation:
32  * ------------------------------------------------------------------------
33  * This program is free software; you can redistribute it and/or modify
34  * it under the terms of the GNU General Public License as published by
35  * the Free Software Foundation; either version 2 of the License, or
36  * (at your option) any later version.
37  *
38  * This program is distributed in the hope that it will be useful,
39  * but WITHOUT ANY WARRANTY; without even the implied warranty of
40  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
41  * GNU General Public License for more details.
42  *
43  * You should have received a copy of the GNU General Public License
44  * along with this program; if not, write to the Free Software
45  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
46  * ------------------------------------------------------------------------
47  */
48
49 #ifndef _FRONTEND
50 #define _FRONTEND
51
52 #include <stdio.h>
53
54 typedef VOIDSTAR ProcRef;
55 #define NoProc ((ProcRef) 0)
56 typedef VOIDSTAR InputSourceRef;
57
58 void ModeHighlight P((void));
59 void SetICSMode P((void));
60 void SetGNUMode P((void));
61 void SetNCPMode P((void));
62 void SetCmailMode P((void));
63 void SetTrainingModeOn P((void));
64 void SetTrainingModeOff P((void));
65 void SetUserThinkingEnables P((void));
66 void SetMachineThinkingEnables P((void));
67 void DisplayTitle P((String title));
68 void DisplayMessage P((String message, String extMessage));
69 void DisplayError P((String message, int error));
70 void DisplayMoveError P((String message));
71
72 /* If status == 0, we are exiting with a benign message, not an error */
73 void DisplayFatalError P((String message, int error, int status));
74
75 void DisplayInformation P((String message));
76 void AskQuestion P((String title, String question, String replyPrefix,
77                     ProcRef pr));
78 void DisplayIcsInteractionTitle P((String title));
79 void DrawPosition P((int fullRedraw, Board board));
80 void ResetFrontEnd P((void));
81 void CommentPopUp P((String title, String comment));
82 void CommentPopDown P((void));
83 void EditCommentPopUp P((int index, String title, String text));
84
85 void RingBell P((void));
86 void PlayIcsWinSound P((void));
87 void PlayIcsLossSound P((void));
88 void PlayIcsDrawSound P((void));
89 void PlayIcsUnfinishedSound P((void));
90 void PlayAlarmSound P((void));
91 void EchoOn P((void));
92 void EchoOff P((void));
93 void Raw P((void));
94 void Colorize P((ColorClass cc, int continuation));
95
96 char *UserName P((void));
97 char *HostName P((void));
98
99 int ClockTimerRunning P((void));
100 int StopClockTimer P((void));
101 void StartClockTimer P((long millisec));
102 void DisplayWhiteClock P((long timeRemaining, int highlight));
103 void DisplayBlackClock P((long timeRemaining, int highlight));
104
105 int LoadGameTimerRunning P((void));
106 int StopLoadGameTimer P((void));
107 void StartLoadGameTimer P((long millisec));
108 void AutoSaveGame P((void));
109
110 typedef void (*DelayedEventCallback) P((void));
111 void ScheduleDelayedEvent P((DelayedEventCallback cb, long millisec));
112 DelayedEventCallback GetDelayedEvent P((void));
113 void CancelDelayedEvent P((void));
114
115 int StartChildProcess P((char *cmdLine, char *dir, ProcRef *pr));
116 void DestroyChildProcess P((ProcRef pr, int/*boolean*/ signal));
117 void InterruptChildProcess P((ProcRef pr));
118
119 int OpenTelnet P((char *host, char *port, ProcRef *pr));
120 int OpenTCP P((char *host, char *port, ProcRef *pr));
121 int OpenCommPort P((char *name, ProcRef *pr));
122 int OpenLoopback P((ProcRef *pr));
123 int OpenRcmd P((char *host, char *user, char *cmd, ProcRef *pr));
124
125 typedef void (*InputCallback) P((InputSourceRef isr, VOIDSTAR closure,
126                                  char *buf, int count, int error));
127 /* pr == NoProc means the local keyboard */
128 InputSourceRef AddInputSource P((ProcRef pr, int lineByLine,
129                                  InputCallback func, VOIDSTAR closure));
130 void RemoveInputSource P((InputSourceRef isr));
131
132 /* pr == NoProc means the local display */
133 int OutputToProcess P((ProcRef pr, char *message, int count, int *outError));
134 int OutputToProcessDelayed P((ProcRef pr, char *message, int count,
135                               int *outError, long msdelay));
136
137 void CmailSigHandlerCallBack P((InputSourceRef isr, VOIDSTAR closure,
138                                 char *buf, int count, int error));
139
140 extern ProcRef cmailPR;
141
142 /* these are in wgamelist.c */
143 void GameListPopUp P((FILE *fp, char *filename));
144 void GameListPopDown P((void));
145 void GameListHighlight P((int index));
146 void GameListDestroy P((void));
147
148 /* these are in wedittags.c */
149 void EditTagsPopUp P((char *tags));
150 void TagsPopUp P((char *tags, char *msg));
151 void TagsPopDown P((void));
152
153 void ICSInitScript P((void));
154 void StartAnalysisClock P((void));
155 void AnalysisPopUp P((char *title, char *label));
156 void AnalysisPopDown P((void));
157
158 void SetHighlights P((int fromX, int fromY, int toX, int toY));
159 void ClearHighlights P((void));
160 void SetPremoveHighlights P((int fromX, int fromY, int toX, int toY));
161 void ClearPremoveHighlights P((void));
162
163 void ShutDownFrontEnd P((void));
164 void BoardToTop P((void));
165 void AnimateMove P((Board board, int fromX, int fromY, int toX, int toY));
166 void HistorySet P((char movelist[][2*MOVE_LEN],
167                    int first, int last, int current));
168 void FreezeUI P((void));
169 void ThawUI P((void));
170 extern char *programName;
171
172 #endif