Animate piece explosions in drag-drop moves and in XB
[xboard.git] / frontend.h
1 /*
2  * frontend.h -- Interface exported by all XBoard front ends
3  *
4  * Copyright 1991 by Digital Equipment Corporation, Maynard,
5  * Massachusetts.
6  *
7  * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
8  * 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
9  *
10  * Enhancements Copyright 2005 Alessandro Scotti
11  *
12  * The following terms apply to Digital Equipment Corporation's copyright
13  * interest in XBoard:
14  * ------------------------------------------------------------------------
15  * All Rights Reserved
16  *
17  * Permission to use, copy, modify, and distribute this software and its
18  * documentation for any purpose and without fee is hereby granted,
19  * provided that the above copyright notice appear in all copies and that
20  * both that copyright notice and this permission notice appear in
21  * supporting documentation, and that the name of Digital not be
22  * used in advertising or publicity pertaining to distribution of the
23  * software without specific, written prior permission.
24  *
25  * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
26  * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
27  * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
28  * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
29  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
30  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
31  * SOFTWARE.
32  * ------------------------------------------------------------------------
33  *
34  * The following terms apply to the enhanced version of XBoard
35  * distributed by the Free Software Foundation:
36  * ------------------------------------------------------------------------
37  *
38  * GNU XBoard is free software: you can redistribute it and/or modify
39  * it under the terms of the GNU General Public License as published by
40  * the Free Software Foundation, either version 3 of the License, or (at
41  * your option) any later version.
42  *
43  * GNU XBoard is distributed in the hope that it will be useful, but
44  * WITHOUT ANY WARRANTY; without even the implied warranty of
45  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
46  * General Public License for more details.
47  *
48  * You should have received a copy of the GNU General Public License
49  * along with this program. If not, see http://www.gnu.org/licenses/.  *
50  *
51  *------------------------------------------------------------------------
52  ** See the file ChangeLog for a revision history.  */
53
54 #ifndef _FRONTEND
55 #define _FRONTEND
56
57 #include <stdio.h>
58
59 typedef VOIDSTAR ProcRef;
60 #define NoProc ((ProcRef) 0)
61 typedef VOIDSTAR InputSourceRef;
62
63 char *T_ P((char *s));
64 void ModeHighlight P((void));
65 void SetICSMode P((void));
66 void SetGNUMode P((void));
67 void SetNCPMode P((void));
68 void SetCmailMode P((void));
69 void SetTrainingModeOn P((void));
70 void SetTrainingModeOff P((void));
71 void SetUserThinkingEnables P((void));
72 void SetMachineThinkingEnables P((void));
73 void DisplayTitle P((String title));
74 void DisplayMessage P((String message, String extMessage));
75 void DisplayError P((String message, int error));
76 void DisplayMoveError P((String message));
77
78 /* If status == 0, we are exiting with a benign message, not an error */
79 void DisplayFatalError P((String message, int error, int status));
80
81 void DisplayInformation P((String message));
82 void DisplayNote P((String message));
83 void AskQuestion P((String title, String question, String replyPrefix,
84                     ProcRef pr));
85 void DisplayIcsInteractionTitle P((String title));
86 void DrawPosition P((int fullRedraw, Board board));
87 void ResetFrontEnd P((void));
88 void NotifyFrontendLogin P((void));
89 void CommentPopUp P((String title, String comment));
90 void CommentPopDown P((void));
91 void EditCommentPopUp P((int index, String title, String text));
92 void ErrorPopDown P((void));
93 int  EventToSquare P((int x, int limit));
94 void DrawSeekAxis P(( int x, int y, int xTo, int yTo ));
95 void DrawSeekBackground P(( int left, int top, int right, int bottom ));
96 void DrawSeekText P((char *buf, int x, int y));
97 void DrawSeekDot P((int x, int y, int color));
98
99 void RingBell P((void));
100 void PlayIcsWinSound P((void));
101 void PlayIcsLossSound P((void));
102 void PlayIcsDrawSound P((void));
103 void PlayIcsUnfinishedSound P((void));
104 void PlayAlarmSound P((void));
105 void EchoOn P((void));
106 void EchoOff P((void));
107 void Raw P((void));
108 void Colorize P((ColorClass cc, int continuation));
109
110 char *UserName P((void));
111 char *HostName P((void));
112
113 int ClockTimerRunning P((void));
114 int StopClockTimer P((void));
115 void StartClockTimer P((long millisec));
116 void DisplayWhiteClock P((long timeRemaining, int highlight));
117 void DisplayBlackClock P((long timeRemaining, int highlight));
118
119 int LoadGameTimerRunning P((void));
120 int StopLoadGameTimer P((void));
121 void StartLoadGameTimer P((long millisec));
122 void AutoSaveGame P((void));
123
124 typedef void (*DelayedEventCallback) P((void));
125 void ScheduleDelayedEvent P((DelayedEventCallback cb, long millisec));
126 DelayedEventCallback GetDelayedEvent P((void));
127 void CancelDelayedEvent P((void));
128 // [HGM] mouse: next six used by mouse handler, which was moved to backend
129 extern int fromX, fromY, toX, toY;
130 typedef enum { Press, Release } ClickType;
131 void PromotionPopUp P((void));
132 void DragPieceBegin P((int x, int y));
133 void DragPieceEnd P((int x, int y));
134 void LeftClick P((ClickType c, int x, int y));
135 int  RightClick P((ClickType c, int x, int y, int *col, int *row));
136
137 int StartChildProcess P((char *cmdLine, char *dir, ProcRef *pr));
138 void DestroyChildProcess P((ProcRef pr, int/*boolean*/ signal));
139 void InterruptChildProcess P((ProcRef pr));
140
141 int OpenTelnet P((char *host, char *port, ProcRef *pr));
142 int OpenTCP P((char *host, char *port, ProcRef *pr));
143 int OpenCommPort P((char *name, ProcRef *pr));
144 int OpenLoopback P((ProcRef *pr));
145 int OpenRcmd P((char *host, char *user, char *cmd, ProcRef *pr));
146
147 typedef void (*InputCallback) P((InputSourceRef isr, VOIDSTAR closure,
148                                  char *buf, int count, int error));
149 /* pr == NoProc means the local keyboard */
150 InputSourceRef AddInputSource P((ProcRef pr, int lineByLine,
151                                  InputCallback func, VOIDSTAR closure));
152 void RemoveInputSource P((InputSourceRef isr));
153
154 /* pr == NoProc means the local display */
155 int OutputToProcess P((ProcRef pr, char *message, int count, int *outError));
156 int OutputToProcessDelayed P((ProcRef pr, char *message, int count,
157                               int *outError, long msdelay));
158
159 void CmailSigHandlerCallBack P((InputSourceRef isr, VOIDSTAR closure,
160                                 char *buf, int count, int error));
161
162 extern ProcRef cmailPR;
163 extern int shiftKey;
164
165 /* in xgamelist.c or winboard.c */
166 void GLT_ClearList();
167 void GLT_DeSelectList();
168 void GLT_AddToList( char *name );
169 Boolean GLT_GetFromList( int index, char *name );
170
171 extern char lpUserGLT[];
172
173 /* these are in wgamelist.c */
174 void GameListPopUp P((FILE *fp, char *filename));
175 void GameListPopDown P((void));
176 void GameListHighlight P((int index));
177 void GameListDestroy P((void));
178
179 /* these are in wedittags.c */
180 void EditTagsPopUp P((char *tags));
181 void TagsPopUp P((char *tags, char *msg));
182 void TagsPopDown P((void));
183
184 void ICSInitScript P((void));
185 void StartAnalysisClock P((void));
186 void EngineOutputPopUp P((void));
187 void EgineOutputPopDown P((void));
188
189 void SetHighlights P((int fromX, int fromY, int toX, int toY));
190 void ClearHighlights P((void));
191 void SetPremoveHighlights P((int fromX, int fromY, int toX, int toY));
192 void ClearPremoveHighlights P((void));
193
194 void AnimateAtomicCapture P((Board board, int fromX, int fromY, int toX, int toY));
195 void ShutDownFrontEnd P((void));
196 void BoardToTop P((void));
197 void AnimateMove P((Board board, int fromX, int fromY, int toX, int toY));
198 void HistorySet P((char movelist[][2*MOVE_LEN], int first, int last, int current));
199 void FreezeUI P((void));
200 void ThawUI P((void));
201 extern char *programName;
202 extern int commentUp;
203
204 void GreyRevert P((Boolean grey));
205
206 typedef struct FrontEndProgramStats_TAG {
207     int which;
208     int depth;
209     unsigned long nodes;
210     int score;
211     int time;
212     char * pv;
213     char * hint;
214     int an_move_index;
215     int an_move_count;
216 } FrontEndProgramStats;
217
218 void SetProgramStats P(( FrontEndProgramStats * stats )); /* [AS] */
219
220 void EngineOutputPopUp P((void));
221 void EngineOutputPopDown P((void));
222 int  EngineOutputIsUp P((void));
223 int  EngineOutputDialogExists P((void));
224 void EvalGraphPopUp P((void));
225 void EvalGraphPopDown P((void));
226 Boolean EvalGraphIsUp P((void));
227 int  EvalGraphDialogExists P((void));
228
229 /* these are in xhistory.c  */
230 Boolean MoveHistoryIsUp P((void));
231 void HistoryPopUp P((void));
232
233 #endif