changes from H.G. Muller; version 4.3.15
[xboard.git] / winboard / winboard.h
index 265791a..2aaee4a 100644 (file)
-/*\r
- * WinBoard.h -- Definitions for Windows NT front end to XBoard\r
- *\r
- * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.\r
- * Enhancements Copyright 1992-97 Free Software Foundation, Inc.\r
- *\r
- * The following terms apply to Digital Equipment Corporation's copyright\r
- * interest in XBoard:\r
- * ------------------------------------------------------------------------\r
- * All Rights Reserved\r
- *\r
- * Permission to use, copy, modify, and distribute this software and its\r
- * documentation for any purpose and without fee is hereby granted,\r
- * provided that the above copyright notice appear in all copies and that\r
- * both that copyright notice and this permission notice appear in\r
- * supporting documentation, and that the name of Digital not be\r
- * used in advertising or publicity pertaining to distribution of the\r
- * software without specific, written prior permission.\r
- *\r
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING\r
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL\r
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR\r
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,\r
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,\r
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS\r
- * SOFTWARE.\r
- * ------------------------------------------------------------------------\r
- *\r
- * The following terms apply to the enhanced version of XBoard distributed\r
- * by the Free Software Foundation:\r
- * ------------------------------------------------------------------------\r
- * This program is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
- * ------------------------------------------------------------------------\r
- */\r
-#include "resource.h"\r
-#include <dlgs.h>\r
-\r
-/* Types */\r
-typedef struct {\r
-  char faceName[LF_FACESIZE];\r
-  float pointSize;\r
-  BYTE bold, italic, underline, strikeout;\r
-} MyFontParams;\r
-\r
-typedef struct {\r
-  char *def;\r
-  MyFontParams mfp;\r
-  LOGFONT lf;\r
-  HFONT hf;\r
-} MyFont;\r
-\r
-typedef struct {\r
-    COLORREF color;\r
-    int effects;\r
-    char *name;\r
-} MyColorizeAttribs;\r
-\r
-typedef struct {\r
-  char* name;\r
-  void* data;\r
-} MySound;\r
-\r
-typedef struct {\r
-    COLORREF color;\r
-    int effects;\r
-    MySound sound;\r
-} MyTextAttribs;\r
-\r
-/* Functions */\r
-\r
-BOOL InitApplication(HINSTANCE);\r
-BOOL InitInstance(HINSTANCE, int, LPSTR);\r
-LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);\r
-LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);\r
-LRESULT CALLBACK BoardSizeDlg(HWND, UINT, WPARAM, LPARAM);\r
-LRESULT CALLBACK ButtonProc(HWND, UINT, WPARAM, LPARAM);\r
-VOID InitAppData(LPSTR);\r
-VOID InitDrawingColors(VOID);\r
-VOID InitDrawingSizes(BoardSize boardSize, int flags);\r
-VOID InitMenuChecks(VOID);\r
-VOID ICSInitScript(VOID);\r
-BOOL CenterWindow(HWND hwndChild, HWND hwndParent);\r
-VOID ResizeEditPlusButtons(HWND hDlg, HWND hText, int sizeX, int sizeY, int newSizeX, int newSizeY);\r
-VOID PromotionPopup(HWND hwnd);\r
-FILE *OpenFileDialog(HWND hWnd, char *write, char *defName, char *defExt, \r
-                    char *nameFilt, char *dlgTitle, UINT *number,\r
-                    char fileTitle[MSG_SIZ], char fileName[MSG_SIZ]);\r
-VOID InputEvent(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\r
-DWORD InputThread(LPVOID arg);\r
-DWORD NonOvlInputThread(LPVOID arg);\r
-DWORD SocketInputThread(LPVOID arg);\r
-BOOL ChangeColor(HWND hwnd, COLORREF *which);\r
-VOID ChangeBoardSize(BoardSize newSize);\r
-BOOL APIENTRY MyCreateFont(HWND hwnd, MyFont *font);\r
-VOID ErrorPopDown(VOID);\r
-VOID EnsureOnScreen(int *x, int *y);\r
-typedef char GetFunc(void *getClosure);\r
-VOID ParseArgs(GetFunc get, void *cl);\r
-HBITMAP \r
-DoLoadBitmap(HINSTANCE hinst, char *piece, int squareSize, char *suffix);\r
-COLORREF ParseColorName(char *name);\r
-void ParseAttribs(COLORREF *color, int *effects, char* argValue);\r
-VOID CreateFontInMF(MyFont *mf);\r
-VOID ChangedConsoleFont();\r
-VOID ParseFontName(char *name, MyFontParams *mfp);\r
-void InitComboStrings(HANDLE hwndCombo, char **cd);\r
-BOOLEAN MyLoadSound(MySound *ms);\r
-BOOLEAN MyPlaySound(MySound *ms);\r
-VOID ExitArgError(char *msg, char *badArg);\r
-\r
-/* Constants */\r
-\r
-#define CLOCK_FONT 0\r
-#define MESSAGE_FONT 1\r
-#define COORD_FONT 2\r
-#define CONSOLE_FONT 3\r
-#define COMMENT_FONT 4\r
-#define EDITTAGS_FONT 5\r
-#define MOVEHISTORY_FONT 6\r
-#define NUM_FONTS 7\r
-\r
-/* Positions of some menu items.  Origin is zero and separator lines count. */\r
-/* It's gross that these are needed. */\r
-#define ACTION_POS 2    /* Posn of "Action" on menu bar */\r
-#define OPTIONS_POS 4   /* Posn of "Options" on menu bar */\r
-#define ICS_POS 4       /* Posn of "ICS " on Options menu */\r
-#define SOUNDS_POS 6     /* Posn of "Sounds" on Options menu */\r
-/* end grossness */\r
-\r
-extern MyFont *font[NUM_SIZES][NUM_FONTS];\r
-\r
-#define WM_USER_Input                 (WM_USER + 4242)\r
-#define WM_USER_Mouseleave            (WM_USER + 4243)\r
-#define WM_USER_GetConsoleBackground  (WM_USER + 4244)\r
-\r
-#define CLOCK_TIMER_ID        51\r
-#define LOAD_GAME_TIMER_ID    52\r
-#define ANALYSIS_TIMER_ID     53\r
-#define MOUSE_TIMER_ID        54\r
-#define DELAYED_TIMER_ID      55\r
-\r
-#define SOLID_PIECE           0\r
-#define OUTLINE_PIECE         1\r
-#define WHITE_PIECE           2\r
-\r
-#define COPY_TMP "wbcopy.tmp"\r
-#define PASTE_TMP "wbpaste.tmp"\r
-\r
-/* [AS] Layout management */\r
-typedef struct {\r
-    Boolean visible;\r
-    int x;\r
-    int y;\r
-    int width;\r
-    int height;\r
-} WindowPlacement;\r
-\r
-VOID InitWindowPlacement( WindowPlacement * wp );\r
-\r
-VOID RestoreWindowPlacement( HWND hWnd, WindowPlacement * wp );\r
-\r
-VOID ReattachAfterMove( LPRECT lprcOldPos, int new_x, int new_y, HWND hWndChild, WindowPlacement * pwpChild );\r
+/*
+ * WinBoard.h -- Definitions for Windows NT front end to XBoard
+ *
+ * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
+ * Enhancements Copyright 1992-97 Free Software Foundation, Inc.
+ *
+ * The following terms apply to Digital Equipment Corporation's copyright
+ * interest in XBoard:
+ * ------------------------------------------------------------------------
+ * All Rights Reserved
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of Digital not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * ------------------------------------------------------------------------
+ *
+ * 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
+ * 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.
+ *
+ * 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.
+ *
+ * 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.
+ * ------------------------------------------------------------------------
+ */
+#include "resource.h"
+#include <dlgs.h>
+
+/* Types */
+typedef struct {
+  char faceName[LF_FACESIZE];
+  float pointSize;
+  BYTE bold, italic, underline, strikeout;
+} MyFontParams;
+
+typedef struct {
+  char *def;
+  MyFontParams mfp;
+  LOGFONT lf;
+  HFONT hf;
+} MyFont;
+
+typedef enum { 
+  SizeTiny, SizeTeeny, SizeDinky, SizePetite, SizeSlim, SizeSmall,
+  SizeMediocre, SizeMiddling, SizeAverage, SizeModerate, SizeMedium,
+  SizeBulky, SizeLarge, SizeBig, SizeHuge, SizeGiant, SizeColossal,
+  SizeTitanic, NUM_SIZES 
+} BoardSize;
+
+typedef struct {
+    COLORREF color;
+    int effects;
+    char *name;
+} MyColorizeAttribs;
+
+typedef struct {
+  char* name;
+  void* data;
+} MySound;
+
+typedef struct {
+    COLORREF color;
+    int effects;
+    MySound sound;
+} MyTextAttribs;
+
+/* Functions */
+
+BOOL InitApplication(HINSTANCE);
+BOOL InitInstance(HINSTANCE, int, LPSTR);
+LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
+LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);
+LRESULT CALLBACK BoardSizeDlg(HWND, UINT, WPARAM, LPARAM);
+LRESULT CALLBACK ButtonProc(HWND, UINT, WPARAM, LPARAM);
+VOID InitAppData(LPSTR);
+VOID InitDrawingColors(VOID);
+VOID InitDrawingSizes(BoardSize boardSize, int flags);
+VOID InitMenuChecks(VOID);
+VOID ICSInitScript(VOID);
+BOOL CenterWindow(HWND hwndChild, HWND hwndParent);
+VOID ResizeEditPlusButtons(HWND hDlg, HWND hText, int sizeX, int sizeY, int newSizeX, int newSizeY);
+VOID PromotionPopup(HWND hwnd);
+FILE *OpenFileDialog(HWND hWnd, char *write, char *defName, char *defExt, 
+                    char *nameFilt, char *dlgTitle, UINT *number,
+                    char fileTitle[MSG_SIZ], char fileName[MSG_SIZ]);
+VOID InputEvent(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
+DWORD InputThread(LPVOID arg);
+DWORD NonOvlInputThread(LPVOID arg);
+DWORD SocketInputThread(LPVOID arg);
+BOOL ChangeColor(HWND hwnd, COLORREF *which);
+VOID ChangeBoardSize(BoardSize newSize);
+BOOL APIENTRY MyCreateFont(HWND hwnd, MyFont *font);
+VOID ErrorPopDown(VOID);
+VOID EnsureOnScreen(int *x, int *y);
+typedef char GetFunc(void *getClosure);
+VOID ParseArgs(GetFunc get, void *cl);
+HBITMAP 
+DoLoadBitmap(HINSTANCE hinst, char *piece, int squareSize, char *suffix);
+COLORREF ParseColorName(char *name);
+void ParseAttribs(COLORREF *color, int *effects, char* argValue);
+VOID CreateFontInMF(MyFont *mf);
+VOID ChangedConsoleFont();
+VOID ParseFontName(char *name, MyFontParams *mfp);
+void InitComboStrings(HANDLE hwndCombo, char **cd);
+BOOLEAN MyLoadSound(MySound *ms);
+BOOLEAN MyPlaySound(MySound *ms);
+VOID ExitArgError(char *msg, char *badArg);
+
+/* Constants */
+
+#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
+
+/* Positions of some menu items.  Origin is zero and separator lines count. */
+/* It's gross that these are needed. */
+#define ACTION_POS 2    /* Posn of "Action" on menu bar */
+#define OPTIONS_POS 4   /* Posn of "Options" on menu bar */
+#define ICS_POS 4       /* Posn of "ICS " on Options menu */
+#define SOUNDS_POS 6     /* Posn of "Sounds" on Options menu */
+/* end grossness */
+
+extern MyFont *font[NUM_SIZES][NUM_FONTS];
+
+#define WM_USER_Input                 (WM_USER + 4242)
+#define WM_USER_Mouseleave            (WM_USER + 4243)
+#define WM_USER_GetConsoleBackground  (WM_USER + 4244)
+
+#define CLOCK_TIMER_ID        51
+#define LOAD_GAME_TIMER_ID    52
+#define ANALYSIS_TIMER_ID     53
+#define MOUSE_TIMER_ID        54
+#define DELAYED_TIMER_ID      55
+
+#define SOLID_PIECE           0
+#define OUTLINE_PIECE         1
+#define WHITE_PIECE           2
+
+#define COPY_TMP "wbcopy.tmp"
+#define PASTE_TMP "wbpaste.tmp"
+
+/* [AS] Layout management */
+typedef struct {
+    Boolean visible;
+    int x;
+    int y;
+    int width;
+    int height;
+} WindowPlacement;
+
+VOID InitWindowPlacement( WindowPlacement * wp );
+
+VOID RestoreWindowPlacement( HWND hWnd, WindowPlacement * wp );
+
+VOID ReattachAfterMove( LPRECT lprcOldPos, int new_x, int new_y, HWND hWndChild, WindowPlacement * pwpChild );