/*
* common.h -- Common definitions for X and Windows NT versions of XBoard
- * $Id: common.h,v 2.1 2003/10/27 19:21:00 mann Exp $
*
- * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
- * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
+ * Copyright 1991 by Digital Equipment Corporation, Maynard,
+ * Massachusetts.
+ *
+ * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
+ * 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ *
+ * Enhancements Copyright 2005 Alessandro Scotti
*
* The following terms apply to Digital Equipment Corporation's copyright
* interest in XBoard:
* SOFTWARE.
* ------------------------------------------------------------------------
*
- * The following terms apply to the enhanced version of XBoard distributed
- * by the Free Software Foundation:
+ * The following terms apply to the enhanced version of XBoard
+ * distributed by the Free Software Foundation:
* ------------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
+ *
+ * GNU XBoard is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * the Free Software Foundation, either version 3 of the License, or (at
+ * your option) any later version.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * GNU XBoard is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * ------------------------------------------------------------------------
- */
+ * along with this program. If not, see http://www.gnu.org/licenses/. *
+ *
+ *------------------------------------------------------------------------
+ ** See the file ChangeLog for a revision history. */
#ifndef _COMMON
#define _COMMON
outside world in ASCII. In a similar way, the different rank numbering
systems (starting at rank 0 or 1) are implemented by redefining '1'.
*/
-#define BOARD_SIZE 16 /* [HGM] for in declarations */
-#define BOARD_HEIGHT (gameInfo.boardHeight) // [HGM] made user adjustable
+#define BOARD_RANKS 11 /* [HGM] for in declarations */
+#define BOARD_FILES 16 /* [HGM] for in declarations */
+#define BOARD_HEIGHT (gameInfo.boardHeight) /* [HGM] made user adjustable */
#define BOARD_WIDTH (gameInfo.boardWidth + 2*gameInfo.holdingsWidth)
-#define BOARD_LEFT (gameInfo.holdingsWidth) // [HGM] play-board edges
+#define BOARD_LEFT (gameInfo.holdingsWidth) /* [HGM] play-board edges */
#define BOARD_RGHT (gameInfo.boardWidth + gameInfo.holdingsWidth)
-#define ONE ('1'-(BOARD_HEIGHT>9)) // [HGM] foremost board rank
-#define AAA ('a'-BOARD_LEFT) // [HGM] leftmost board file
+#define CASTLING (BOARD_RANKS-1) /* [HGM] hide in upper rank */
+#define EP_STATUS CASTLING][(BOARD_FILES-2) /* [HGM] in upper rank */
+#define HOLDINGS_SET CASTLING][(BOARD_FILES-1) /* [HGM] in upper-right corner*/
+#define ONE ('1'-(BOARD_HEIGHT>9)) /* [HGM] foremost board rank */
+#define AAA ('a'-BOARD_LEFT) /* [HGM] leftmost board file */
#define DROP_RANK -3
#define MAX_MOVES 1000
#define MSG_SIZ 512
#define FIRST_HOST "localhost"
#define SECOND_HOST "localhost"
#define TELNET_PROGRAM "telnet"
+#define DEF_BITMAP_DIR "/usr/share/games/xboard/bitmaps.xchess" /* AP: shouldn't be hardcoded directory, but better than nothing at the moment */
#define MATCH_MODE "False"
#define INIT_STRING "new\nrandom\n"
#define WHITE_STRING "white\ngo\n"
#define JAIL_SQUARE_COLOR "#808080"
#define HIGHLIGHT_SQUARE_COLOR "#FFFF00"
#define PREMOVE_HIGHLIGHT_COLOR "#FF0000"
+#define LOWTIMEWARNING_COLOR "#FF0000"
#define BELLCHAR '\007'
#define NULLCHAR '\000'
#define FEATURE_TIMEOUT 10000 /*ms*/
+#define CLOCK_FONT 0
+#define MESSAGE_FONT 1
+#define COORD_FONT 2
+#define CONSOLE_FONT 3
+#define COMMENT_FONT 4
+#define EDITTAGS_FONT 5
+#define MOVEHISTORY_FONT 6
+#define NUM_FONTS 7
+
+/* Default to no flashing (the "usual" XBoard behavior) */
+#define FLASH_COUNT 0 /* Number of times to flash */
+#define FLASH_RATE 5 /* Flashes per second */
+
+/* Default delay per character (in msec) while sending login script */
+#define MS_LOGIN_DELAY 0
+
+/* [AS] Support for background textures */
+#define BACK_TEXTURE_MODE_DISABLED 0
+#define BACK_TEXTURE_MODE_PLAIN 1
+#define BACK_TEXTURE_MODE_FULL_RANDOM 2
+
/* Zippy defaults */
#define ZIPPY_TALK FALSE
#define ZIPPY_PLAY FALSE
BlackCannon, BlackNightrider, BlackCardinal, BlackDragon, BlackGrasshopper,
BlackSilver, BlackFalcon, BlackLance, BlackCobra, BlackUnicorn, BlackKing,
EmptySquare,
+ NoRights, // [HGM] gamestate: for castling rights hidden in board[CASTLING]
ClearBoard, WhitePlay, BlackPlay, PromotePiece, DemotePiece /*for use on EditPosition menus*/
} ChessSquare;
#define SHOGI (int)EmptySquare + (int)
-typedef ChessSquare Board[BOARD_SIZE][BOARD_SIZE];
+typedef ChessSquare Board[BOARD_RANKS][BOARD_FILES];
typedef enum {
WhiteKingSideCastle = 1, WhiteQueenSideCastle,
VariantJanus,
VariantSuper,
VariantGreat,
+ VariantTwilight,
+ VariantMakruk,
VariantUnknown /* Catchall for other unknown variants */
} VariantClass;
"janus",\
"super",\
"great",\
+ "twilight",\
+ "makruk",\
"unknown" \
}
char *icsHelper;
Boolean icsInputBox;
Boolean useTelnet;
+ Boolean seekGraph;
+ Boolean autoRefresh;
char *telnetProgram;
char *gateway;
char *loadGameFile;
char *cmailGameName; /* xboard only */
Boolean alwaysPromoteToQueen;
Boolean oldSaveStyle;
+ Boolean oneClick;
Boolean quietPlay;
Boolean showThinking;
Boolean ponderNextMove;
ICS logon script (xboard only) */
Boolean colorize; /* If True, use the following colors to color text */
/* Strings for colors, as "fg, bg, bold" (strings used in xboard only) */
- char *colorShout;
+ char *colorShout; // [HGM] IMPORTANT: order must conform to ColorClass definition
char *colorSShout;
char *colorChannel1;
char *colorChannel;
char *colorSeek;
char *colorNormal;
char *soundProgram; /* sound-playing program */
- char *soundShout;
+ char *soundShout; // [HGM] IMPORTANT: order must be as in ColorClass
char *soundSShout;
char *soundChannel1;
char *soundChannel;
char *soundChallenge;
char *soundRequest;
char *soundSeek;
- char *soundMove;
+ char *soundMove; // [HGM] IMPORTANT: order must be as in SoundClass
+ char *soundBell;
+ char *soundIcsAlarm;
char *soundIcsWin;
char *soundIcsLoss;
char *soundIcsDraw;
char *soundIcsUnfinished;
- char *soundIcsAlarm;
Boolean reuseFirst;
Boolean reuseSecond;
Boolean animateDragging; /* If True, animate mouse dragging of pieces */
int fontSizeTolerance; /* xboard only */
char *initialMode;
char *variant;
+ char *chatBoxes;
int firstProtocolVersion;
int secondProtocolVersion;
Boolean showButtonBar;
Boolean highlightMoveWithArrow;
int highlightArrowColor;
Boolean useStickyWindows;
+ Boolean bgObserve; /* [HGM] bughouse */
+ Boolean dualBoard; /* [HGM] dual */
int adjudicateDrawMoves;
Boolean autoDisplayComment;
Boolean autoDisplayTags;
Boolean secondIsUCI;
Boolean firstHasOwnBookUCI;
Boolean secondHasOwnBookUCI;
+ char * adapterCommand;
char * polyglotDir;
Boolean usePolyglotBook;
char * polyglotBook;
char *zippyVariants;
int zippyMaxGames;
int zippyReplayTimeout; /*seconds*/
+ int zippyShortGame; /* [HGM] aborter */
#endif
+ Boolean lowTimeWarning; /* [HGM] low time */
+ char *lowTimeWarningColor;
char *serverMovesName;
Boolean suppressLoadMoves;
Boolean noGUI; /* [HGM] fast: suppress all display updates */
char *firstOptions; /* [HGM] options */
char *secondOptions;
+ char *fenOverride1;
+ char *fenOverride2;
+ Boolean keepAlive; /* [HGM] alive */
+ Boolean forceIllegal;/*[HGM] illegal */
+ Boolean noJoin; /* [HGM] join */
+ char *wrapContSeq; /* continuation sequence when xboard wraps text */
+ Boolean useInternalWrap; /* use internal wrapping -- noJoin usurps this if set */
+ Boolean pasteSelection; /* paste X selection instead of clipboard */
+ int nrVariations; /* [HGM] multivar */
+ Boolean dropMenu; /* [HGM] pv */
+ Boolean markers; /* [HGM] markers */
} AppData, *AppDataPtr;
/* [AS] PGN tags (for showing in the game list) */
#define GLT_TIME_CONTROL 't'
#define GLT_VARIANT 'v'
#define GLT_OUT_OF_BOOK 'a'
+#define GLT_RESULT_COMMENT 'c' /* [HGM] rescom */
#define GLT_DEFAULT_TAGS "eprd" /* Event, players, result, date */
-#define GLT_ALL_TAGS "esdoprwbtva"
+#define GLT_ALL_TAGS "esdoprwbtvac"
#define PGN_OUT_OF_BOOK "Annotator"
int holdingsWidth; /* number of files left and right of board, 0 or 2 */
} GameInfo;
+/* [AS] Search stats from chessprogram, for the played move */
+// [HGM] moved here from backend.h because it occurs in declarations of front-end functions
+typedef struct {
+ int score; /* Centipawns */
+ int depth; /* Plies */
+ int time; /* Milliseconds */
+} ChessProgramStats_Move;
+
+/* [AS] Layout management */
+typedef struct {
+ Boolean visible;
+ int x;
+ int y;
+ int width;
+ int height;
+} WindowPlacement;
+
+extern WindowPlacement wpEngineOutput;
+extern WindowPlacement wpEvalGraph;
+extern WindowPlacement wpMoveHistory;
+extern WindowPlacement wpGameList;
+extern WindowPlacement wpTags;
+
+// [HGM] chat
+#define MAX_CHAT 5
+extern int chatCount;
+extern char chatPartner[MAX_CHAT][MSG_SIZ];
+
#endif