X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=common.h;h=d5adda1774dda6dda6d9bbe420255d30ed7c85ce;hb=9b57df9ec247e8a2b70640bc6d3787f9c7204595;hp=b1e13cc5ce2b0a41ad498e2664c3c6da8629491b;hpb=114d6ef08a4a3be9cee4c878163e7a7c6e7486c9;p=xboard.git diff --git a/common.h b/common.h index b1e13cc..d5adda1 100644 --- a/common.h +++ b/common.h @@ -2,10 +2,10 @@ * common.h -- Common definitions for X and Windows NT versions of XBoard * * Copyright 1991 by Digital Equipment Corporation, Maynard, - * Massachusetts. + * Massachusetts. * * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, - * 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + * 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * @@ -51,8 +51,8 @@ *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ -#ifndef _COMMON -#define _COMMON +#ifndef XB_COMMON +#define XB_COMMON /* Begin compatibility grunge */ @@ -81,7 +81,14 @@ int pclose(FILE *); #endif #else +#ifdef X11 #include +#else +typedef char Boolean; +typedef char *String; +#define True 1 +#define False 0 +#endif #endif #endif @@ -125,17 +132,20 @@ int pclose(FILE *); 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_RANKS 11 /* [HGM] for in declarations */ +#define BOARD_RANKS 17 /* [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_WIDTH (gameInfo.boardWidth + 2*gameInfo.holdingsWidth) #define BOARD_LEFT (gameInfo.holdingsWidth) /* [HGM] play-board edges */ #define BOARD_RGHT (gameInfo.boardWidth + gameInfo.holdingsWidth) #define CASTLING (BOARD_RANKS-1) /* [HGM] hide in upper rank */ +#define VIRGIN (BOARD_RANKS-2) /* [HGM] pieces not moved */ #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 VIRGIN_W 1 /* [HGM] flags in Board[VIRGIN][X] */ +#define VIRGIN_B 2 #define DROP_RANK -3 #define MAX_MOVES 1000 #define MSG_SIZ 512 @@ -215,6 +225,14 @@ int pclose(FILE *); #define ZIPPY_MAX_GAMES 0 #define ZIPPY_REPLAY_TIMEOUT 120 +typedef VOIDSTAR ProcRef; +#define NoProc ((ProcRef) 0) +typedef VOIDSTAR InputSourceRef; + +typedef void (*DelayedEventCallback) P((void)); + +typedef enum { Press, Release } ClickType; + typedef enum { BeginningOfGame, MachinePlaysWhite, MachinePlaysBlack, AnalyzeMode, AnalyzeFile, TwoMachinesPlay, @@ -227,15 +245,23 @@ typedef enum { /* [HGM] the order here is crucial for Crazyhouse & Shogi: */ /* only the first N pieces can go into the holdings, and */ /* promotions in those variants shift P-W to U-S */ - WhitePawn, WhiteKnight, WhiteBishop, WhiteRook, WhiteQueen, - WhiteFerz, WhiteAlfil, WhiteAngel, WhiteMarshall, WhiteWazir, WhiteMan, + WhitePawn, WhiteKnight, WhiteBishop, WhiteRook, WhiteQueen, + WhiteFerz, WhiteAlfil, WhiteAngel, WhiteMarshall, WhiteWazir, WhiteMan, WhiteCannon, WhiteNightrider, WhiteCardinal, WhiteDragon, WhiteGrasshopper, - WhiteSilver, WhiteFalcon, WhiteLance, WhiteCobra, WhiteUnicorn, WhiteKing, + WhiteSilver, WhiteFalcon, WhiteLance, WhiteCobra, WhiteUnicorn, WhiteLion, + WhiteTokin, WhiteDagger, WhitePCardinal, WhitePDragon, WhiteCat, + WhitePSword, WhiteMonarch, WhiteMother, WhiteNothing, WhitePRook, WhitePDagger, + WhiteDolphin, WhiteStag, WhiteHorned, WhiteEagle, WhiteSword, + WhiteCrown, WhiteHCrown, WhiteHorse, WhiteDrunk, WhitePBishop, WhiteKing, BlackPawn, BlackKnight, BlackBishop, BlackRook, BlackQueen, - BlackFerz, BlackAlfil, BlackAngel, BlackMarshall, BlackWazir, BlackMan, + BlackFerz, BlackAlfil, BlackAngel, BlackMarshall, BlackWazir, BlackMan, BlackCannon, BlackNightrider, BlackCardinal, BlackDragon, BlackGrasshopper, - BlackSilver, BlackFalcon, BlackLance, BlackCobra, BlackUnicorn, BlackKing, - EmptySquare, + BlackSilver, BlackFalcon, BlackLance, BlackCobra, BlackUnicorn, BlackLion, + BlackTokin, BlackDagger, BlackPCardinal, BlackPDragon, BlackCat, + BlackPSword, BlackMonarch, BlackMother, BlackNothing, BlackPRook, BlackPDagger, + BlackDolphin, BlackStag, BlackHorned, BlackEagle, BlackSword, + BlackCrown, BlackHCrown, BlackHorse, BlackDrunk, BlackPBishop, BlackKing, + EmptySquare, DarkSquare, NoRights, // [HGM] gamestate: for castling rights hidden in board[CASTLING] ClearBoard, WhitePlay, BlackPlay, PromotePiece, DemotePiece /*for use on EditPosition menus*/ } ChessSquare; @@ -246,6 +272,8 @@ typedef enum { #define PROMOTED (int)WhiteDragon - (int)WhiteRook + (int) #define DEMOTED (int)WhiteRook - (int)WhiteDragon + (int) #define SHOGI (int)EmptySquare + (int) +#define CHUPROMOTED ((int)WhitePDragon - (int)WhiteDragon)*(gameInfo.variant == VariantChu) + PROMOTED +#define IS_SHOGI(V) ((V) == VariantShogi || (V) == VariantChu) typedef ChessSquare Board[BOARD_RANKS][BOARD_FILES]; @@ -254,14 +282,14 @@ typedef enum { EndOfFile = 0, WhiteKingSideCastle, WhiteQueenSideCastle, WhiteKingSideCastleWild, WhiteQueenSideCastleWild, - WhiteHSideCastleFR, WhiteASideCastleFR, + WhiteHSideCastleFR, WhiteASideCastleFR, BlackKingSideCastle, BlackQueenSideCastle, BlackKingSideCastleWild, BlackQueenSideCastleWild, - BlackHSideCastleFR, BlackASideCastleFR, + BlackHSideCastleFR, BlackASideCastleFR, WhitePromotion, WhiteNonPromotion, BlackPromotion, BlackNonPromotion, WhiteCapturesEnPassant, BlackCapturesEnPassant, - WhiteDrop, BlackDrop, + WhiteDrop, BlackDrop, FirstLeg, NormalMove, AmbiguousMove, IllegalMove, ImpossibleMove, WhiteWins, BlackWins, GameIsDrawn, GameUnfinished, GNUChessGame, XBoardGame, MoveNumberOne, Open, Close, Nothing, @@ -305,12 +333,13 @@ typedef enum { Variant35, /* Temporary name for possible future ICC wild 35 */ Variant36, /* Temporary name for possible future ICC wild 36 */ VariantShogi, /* [HGM] added variants */ + VariantChu, VariantXiangqi, VariantCourier, VariantGothic, VariantCapablanca, VariantKnightmate, - VariantFairy, + VariantFairy, VariantCylinder, VariantFalcon, VariantCapaRandom, @@ -320,9 +349,11 @@ typedef enum { VariantGreat, VariantTwilight, VariantMakruk, + VariantASEAN, VariantSChess, VariantGrand, VariantSpartan, + VariantLion, VariantUnknown /* Catchall for other unknown variants */ } VariantClass; @@ -351,6 +382,7 @@ typedef enum { "wild35", \ "wild36", \ "shogi", \ + "chu", \ "xiangqi", \ "courier", \ "gothic", \ @@ -366,9 +398,11 @@ typedef enum { "great",\ "twilight",\ "makruk",\ + "asean",\ "seirawan",\ "grand",\ "spartan",\ + "lion",\ "unknown" \ } @@ -384,6 +418,8 @@ typedef struct { char *jailSquareColor; char *highlightSquareColor; char *premoveHighlightColor; + char *dialogColor; + char *buttonColor; #else int whitePieceColor; int blackPieceColor; @@ -403,13 +439,17 @@ typedef struct { Boolean firstPlaysBlack; Boolean noChessProgram; char *host[ENGINES]; - char *bitmapDirectory; + char *themeNames; + char *pieceDirectory; + char *border; char *soundDirectory; char *remoteShell; char *remoteUser; float timeDelay; char *timeControl; + Boolean trueColors; Boolean icsActive; + Boolean autoBox; char *icsHost; char *icsPort; char *icsCommPort; /* if set, use serial port instead of tcp host/port */ @@ -425,6 +465,7 @@ typedef struct { int loadGameIndex; /* game # within file */ char *saveGameFile; Boolean autoSaveGames; + Boolean onlyOwn; /* [HGM] suppress auto-saving of observed games */ char *loadPositionFile; int loadPositionIndex; /* position # within file */ char *savePositionFile; @@ -434,6 +475,8 @@ typedef struct { Boolean debugMode; Boolean clockMode; char *boardSize; + char *logoDir; + int logoSize; Boolean Iconic; char *searchTime; int searchDepth; @@ -458,18 +501,17 @@ typedef struct { Boolean ponderNextMove; Boolean periodicUpdates; Boolean autoObserve; + Boolean autoCreateLogon; Boolean autoComment; Boolean getMoveList; Boolean testLegality; - int borderXoffset; /* xboard only */ - int borderYoffset; /* xboard only */ + Boolean topLevel; /* xboard, top-level auxiliary windows */ Boolean titleInWindow; /* xboard only */ Boolean localLineEditing; /* WinBoard only */ Boolean zippyTalk; Boolean zippyPlay; int flashCount; /* Number of times to flash (xboard only) */ int flashRate; /* Flashes per second (xboard only) */ - char *pixmapDirectory; /* Path to XPM/XIM files to use (xboard only) */ int msLoginDelay; /* Delay per character (in msec) while sending ICS logon script (xboard only) */ Boolean colorize; /* If True, use the following colors to color text */ @@ -512,12 +554,12 @@ typedef struct { Boolean highlightLastMove; Boolean highlightDragging; Boolean blindfold; /* if true, no pieces are drawn */ - Boolean premove; /* true if premove feature enabled */ - Boolean premoveWhite; /* true if premoving White first move */ - char *premoveWhiteText; /* text of White premove 1 */ - Boolean premoveBlack; /* true if premoving Black first move */ - char *premoveBlackText; /* text of Black premove 1 */ - Boolean icsAlarm; /* true if sounding alarm at a certain time */ + Boolean premove; /* true if premove feature enabled */ + Boolean premoveWhite; /* true if premoving White first move */ + char *premoveWhiteText; /* text of White premove 1 */ + Boolean premoveBlack; /* true if premoving Black first move */ + char *premoveBlackText; /* text of Black premove 1 */ + Boolean icsAlarm; /* true if sounding alarm at a certain time */ int icsAlarmTime; /* time to sound alarm, in milliseconds */ Boolean autoRaiseBoard; int fontSizeTolerance; /* xboard only */ @@ -526,8 +568,9 @@ typedef struct { char *chatBoxes; int protocolVersion[ENGINES]; Boolean showButtonBar; - Boolean icsEngineAnalyze; + Boolean icsEngineAnalyze; Boolean variations; /* [HGM] enable variation-tree walking */ + Boolean autoExtend; /* [HGM] enable playing move(s) of right-clicked PV in analysis mode */ /* [AS] New properties (down to the "ZIPPY" part) */ Boolean scoreIsAbsolute[ENGINES]; /* If true, engine score is always from white side */ @@ -535,6 +578,7 @@ typedef struct { Boolean hideThinkingFromHuman; /* If true, program thinking is generated but not displayed in human/computer matches */ Boolean useBitmaps; Boolean useFont; + Boolean useBorder; char * liteBackTextureFile; /* Name of texture bitmap for lite squares */ char * darkBackTextureFile; /* Name of texture bitmap for dark squares */ int liteBackTextureMode; @@ -559,6 +603,8 @@ typedef struct { int evalHistColorWhite; int evalHistColorBlack; Boolean highlightMoveWithArrow; + Boolean tourney; + char * tourneyOptions; int highlightArrowColor; Boolean useStickyWindows; Boolean bgObserve; /* [HGM] bughouse */ @@ -621,9 +667,12 @@ typedef struct { int zippyShortGame; /* [HGM] aborter */ #endif Boolean lowTimeWarning; /* [HGM] low time */ + Boolean quitNext; char *lowTimeWarningColor; + char *serverFileName; char *serverMovesName; + char *finger; Boolean suppressLoadMoves; int serverPause; int timeOdds[ENGINES]; @@ -653,6 +702,7 @@ typedef struct { char *fenOverride[ENGINES]; char *features[ENGINES]; char *featureDefaults; + char *sysOpen; Boolean keepAlive; /* [HGM] alive */ Boolean forceIllegal;/*[HGM] illegal */ Boolean noJoin; /* [HGM] join */ @@ -664,6 +714,7 @@ typedef struct { int evalThreshold; /* [HGM] evalGraph */ Boolean dropMenu; /* [HGM] pv */ Boolean markers; /* [HGM] markers */ + Boolean autoCopyPV; Boolean pieceMenu; Boolean sweepSelect; Boolean whitePOV; @@ -761,11 +812,16 @@ extern WindowPlacement wpTags; #define MAXENGINES 2000 -// [HGM] chat +// [HGM] chat #define MAX_CHAT 5 extern int chatCount; extern char chatPartner[MAX_CHAT][MSG_SIZ]; +// Some prototypes of routines so general they should be available everywhere +/* If status == 0, we are exiting with a benign message, not an error */ +void DisplayFatalError P((String message, int error, int status)); +void DisplayError P((String message, int error)); + // [HGM] generally useful macros; there are way too many memory leaks... #define FREE(x) if(x) free(x) #define ASSIGN(x, y) if(x) free(x); x = strdup(y) @@ -807,4 +863,3 @@ extern char chatPartner[MAX_CHAT][MSG_SIZ]; #define secondOptions engOptions[1] #endif -