* Massachusetts.\r
*\r
* Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,\r
- * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.\r
+ * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc.\r
*\r
* Enhancements Copyright 2005 Alessandro Scotti\r
*\r
Boolean chessProgram;\r
//static int boardX, boardY;\r
int minX, minY; // [HGM] placement: volatile limits on upper-left corner\r
-int squareSize, lineGap, minorSize, border;\r
+int squareSize, lineGap, minorSize;\r
static int winW, winH;\r
static RECT messageRect, whiteRect, blackRect, leftLogoRect, rightLogoRect; // [HGM] logo\r
static int logoHeight = 0;\r
\r
SizeInfo sizeInfo[] = \r
{\r
- { "tiny", 21, 0, 1, 1, 0, 0 },\r
- { "teeny", 25, 1, 1, 1, 0, 0 },\r
- { "dinky", 29, 1, 1, 1, 0, 0 },\r
- { "petite", 33, 1, 1, 1, 0, 0 },\r
- { "slim", 37, 2, 1, 0, 0, 0 },\r
- { "small", 40, 2, 1, 0, 0, 0 },\r
+ { "tiny", 21, 0, 1, 2, 0, 0 },\r
+ { "teeny", 25, 1, 1, 2, 0, 0 },\r
+ { "dinky", 29, 1, 1, 2, 0, 0 },\r
+ { "petite", 33, 1, 1, 2, 0, 0 },\r
+ { "slim", 37, 2, 1, 1, 0, 0 },\r
+ { "small", 40, 2, 1, 1, 0, 0 },\r
{ "mediocre", 45, 2, 1, 0, 0, 0 },\r
{ "middling", 49, 2, 0, 0, 0, 0 },\r
{ "average", 54, 2, 0, 0, 0, 0 },\r
WNDPROC wndproc;\r
} MyButtonDesc;\r
\r
-#define BUTTON_WIDTH (tinyLayout ? 16 : 32)\r
+#define BUTTON_WIDTH (tinyLayout == 2 ? 16 : 32)\r
#define N_BUTTONS 5\r
\r
MyButtonDesc buttonDesc[N_BUTTONS] =\r
\r
int tinyLayout = 0, smallLayout = 0;\r
#define MENU_BAR_ITEMS 9\r
-char *menuBarText[2][MENU_BAR_ITEMS+1] = {\r
+char *menuBarText[3][MENU_BAR_ITEMS+1] = {\r
{ N_("&File"), N_("&Edit"), N_("&View"), N_("&Mode"), N_("&Action"), N_("E&ngine"), N_("&Options"), N_("&Help"), NULL },\r
+ { N_("&Fil"), N_("&Ed"), N_("&Vw"), N_("&Mod"), N_("&Act"), N_("E&ng"), N_("&Opt"), N_("&Hlp"), NULL },\r
{ N_("&F"), N_("&E"), N_("&V"), N_("&M"), N_("&A"), N_("&N"), N_("&O"), N_("&H"), NULL },\r
};\r
\r
0, /* lowest message to examine */\r
0)) /* highest message to examine */\r
{\r
- HandleMessage(msg);\r
+ HandleMessage(&msg);\r
}\r
\r
\r
0, /* highest message to examine */\r
PM_REMOVE))\r
{\r
- HandleMessage(msg);\r
+ HandleMessage(&msg);\r
}\r
}\r
\r
lf->lfStrikeOut = mfp->strikeout;\r
lf->lfCharSet = mfp->charset;\r
lf->lfOutPrecision = OUT_DEFAULT_PRECIS;\r
+\r
+\r
+\r
lf->lfClipPrecision = CLIP_DEFAULT_PRECIS;\r
lf->lfQuality = DEFAULT_QUALITY;\r
lf->lfPitchAndFamily = DEFAULT_PITCH|FF_DONTCARE;\r
minorSize = 0; /* [HGM] Kludge to see if demagnified pieces need to be shifted */\r
border = appData.useBorder && appData.border[0] ? squareSize/2 : 0;\r
\r
+ // [HGM] decide on tininess based on total board width rather than square size\r
+ tinyLayout = squareSize * (BOARD_WIDTH);\r
+ tinyLayout = tinyLayout < 35*8 ? 2 : tinyLayout < 43*8 ? 1 : 0;\r
+\r
if( appData.overrideLineGap >= 0 && appData.overrideLineGap <= 5 ) {\r
lineGap = appData.overrideLineGap;\r
}\r
\r
if (tinyLayout != oldTinyLayout) {\r
long style = GetWindowLongPtr(hwndMain, GWL_STYLE);\r
- if (tinyLayout) {\r
+ if (tinyLayout == 2) {\r
style &= ~WS_SYSMENU;\r
InsertMenu(hmenu, IDM_Exit, MF_BYCOMMAND, IDM_Minimize,\r
"&Minimize\tCtrl+F4");\r
ReleaseDC(hwndMain, hdc);\r
\r
/* Compute where everything goes */\r
- if((first.programLogo || second.programLogo) && !tinyLayout) {\r
+ if((first.programLogo || second.programLogo) && tinyLayout != 2) {\r
/* [HGM] logo: if either logo is on, reserve space for it */\r
logoHeight = 2*clockSize.cy;\r
leftLogoRect.left = OUTER_MARGIN;\r
messageRect.top, BUTTON_WIDTH, messageSize.cy, hwndMain,\r
(HMENU) buttonDesc[i].id,\r
(HINSTANCE) GetWindowLongPtr(hwndMain, GWLP_HINSTANCE), NULL);\r
- if (tinyLayout) {\r
+ if (tinyLayout == 2) {\r
SendMessage(buttonDesc[i].hwnd, WM_SETFONT, \r
(WPARAM)font[boardSize][MESSAGE_FONT]->hf,\r
MAKELPARAM(FALSE, 0));\r
pieceBitmap[1][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "o");\r
pieceBitmap[2][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "w");\r
\r
- if(gameInfo.variant == VariantShogi) { /* promoted Gold represemtations */\r
+ if(gameInfo.variant == VariantShogi && BOARD_HEIGHT != 7) { /* promoted Gold representations (but not in Tori!)*/\r
pieceBitmap[0][WhiteCannon] = DoLoadBitmap(hInst, "wp", squareSize, "s");\r
pieceBitmap[1][WhiteCannon] = DoLoadBitmap(hInst, "wp", squareSize, "o");\r
pieceBitmap[2][WhiteCannon] = DoLoadBitmap(hInst, "w", squareSize, "w");\r
}\r
\r
if( appData.highlightMoveWithArrow ) {\r
+\r
DrawArrowHighlight(hdcmem);\r
}\r
\r
LRESULT CALLBACK\r
Promotion(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
+\r
char promoChar;\r
\r
switch (message) {\r
+\r
case WM_INITDIALOG: /* message: initialize dialog box */\r
/* Center the dialog over the application window */\r
CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER));\r
void\r
PromotionPopUp(char choice)\r
{\r
- promoStyle = (choice == '+');\r
+ promoStyle = (choice == '+' || IS_SHOGI(gameInfo.variant));\r
DrawPosition(TRUE, NULL);\r
PromotionPopup(hwndMain);\r
}\r
case IDM_TwoMachines:\r
TwoMachinesEvent();\r
/*\r
+\r
* refresh the tags dialog only if it's visible\r
*/\r
if (gameMode == TwoMachinesPlay && IsWindowVisible(editTagsDialog)) {\r
default: /* Passes it on if unprocessed */\r
return (DefWindowProc(hwnd, message, wParam, lParam));\r
}\r
+\r
+\r
return 0;\r
}\r
\r
\r
if (twoBoards && partnerUp) return;\r
if (appData.clockMode) {\r
- if (tinyLayout)\r
+ if (tinyLayout == 2)\r
snprintf(buf, sizeof(buf)/sizeof(buf[0]), "%c %s %s", color[0], TimeString(timeRemaining), flagFell);\r
else\r
snprintf(buf, sizeof(buf)/sizeof(buf[0]), "%s:%c%s %s", color, (logoHeight>0 ? 0 : ' '), TimeString(timeRemaining), flagFell);\r
result = DialogBoxParam( hInst, MAKEINTRESOURCE(DLG_GameListOptions), hwndMain, (DLGPROC)lpProc, (LPARAM)lpUserGLT );\r
\r
if( result == 0 ) {\r
+ char *oldTags = appData.gameListTags;\r
/* [AS] Memory leak here! */\r
appData.gameListTags = strdup( lpUserGLT ); \r
+ if(strcmp(oldTags, appData.gameListTags)) // [HGM] redo Game List when we changed something\r
+ GameListToListBox(NULL, TRUE, ".", NULL, FALSE, FALSE); // "." as filter is kludge to select all\r
}\r
\r
return result;\r
int outCount = SOCKET_ERROR;\r
ChildProc *cp = (ChildProc *) pr;\r
static OVERLAPPED ovl;\r
+\r
static int line = 0;\r
\r
if (pr == NoProc)\r