Fix multi-leg promotions
[xboard.git] / winboard / wevalgraph.c
index bca5b95..3f1f076 100644 (file)
@@ -5,6 +5,9 @@
  *\r
  * Copyright 2005 Alessandro Scotti\r
  *\r
+ * Enhancements Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015,\r
+ * 2016 Free Software Foundation, Inc.\r
+ *\r
  * ------------------------------------------------------------------------\r
  *\r
  * GNU XBoard is free software: you can redistribute it and/or modify\r
@@ -49,7 +52,7 @@ static COLORREF crBlack = RGB( 0xAD, 0x5D, 0x3D );
 \r
 static HDC hdcPB = NULL;\r
 static HBITMAP hbmPB = NULL;\r
-static HPEN pens[6]; // [HGM] put all pens in one array\r
+static HPEN pens[PEN_ANY+1]; // [HGM] put all pens in one array\r
 static HBRUSH hbrHist[3] = { NULL, NULL, NULL };\r
 \r
 Boolean EvalGraphIsUp()\r
@@ -123,11 +126,11 @@ static VOID DisplayEvalGraph( HWND hWnd, HDC hDC )
     /* Create or recreate paint box if needed */\r
     if( hbmPB == NULL || width != nWidthPB || height != nHeightPB ) {\r
         if( pens[PEN_DOTTED] == NULL ) {\r
-           pens[PEN_BLACK]     = GetStockObject(BLACK_PEN);\r
-            pens[PEN_DOTTED]    = CreatePen( PS_DOT, 0, RGB(0xA0,0xA0,0xA0) );\r
+           pens[PEN_BLACK]      = GetStockObject(BLACK_PEN);\r
+            pens[PEN_DOTTED]     = CreatePen( PS_DOT, 0, RGB(0xA0,0xA0,0xA0) );\r
             pens[PEN_BLUEDOTTED] = CreatePen( PS_DOT, 0, RGB(0x00,0x00,0xFF) );\r
-            pens[PEN_BOLD]      = CreatePen( PS_SOLID, 2, crWhite );\r
-            pens[PEN_BOLD+1]    = CreatePen( PS_SOLID, 2, crBlack );\r
+            pens[PEN_BOLDWHITE]  = CreatePen( PS_SOLID, 2, crWhite );\r
+            pens[PEN_BOLDBLACK]  = CreatePen( PS_SOLID, 2, crBlack );\r
             hbrHist[0] = CreateBrush( BS_SOLID, crWhite );\r
             hbrHist[1] = CreateBrush( BS_SOLID, crBlack );\r
             hbrHist[2] = CreateBrush( BS_SOLID, GetSysColor( COLOR_3DFACE ) ); // background\r
@@ -154,6 +157,7 @@ static VOID DisplayEvalGraph( HWND hWnd, HDC hDC )
 \r
     // back-end painting; calls back front-end primitives for lines, rectangles and text\r
     PaintEvalGraph();\r
+    SetWindowText(hWnd, MakeEvalTitle(differentialView ? T_("Blunder Graph") : T_("Evaluation Graph")));\r
 \r
     /* Copy bitmap into destination DC */\r
     BitBlt( hDC, 0, 0, nWidthPB, nHeightPB, hdcPB, 0, 0, SRCCOPY );\r
@@ -205,13 +209,20 @@ LRESULT CALLBACK EvalGraphProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM l
         EndPaint( hDlg, &stPS );\r
         break;\r
 \r
+    case WM_MOUSEWHEEL:\r
+        if((short)HIWORD(wParam) < 0) appData.zoom++;\r
+        if((short)HIWORD(wParam) > 0 && appData.zoom > 1)  appData.zoom--;\r
+        goto paint;\r
+    case WM_RBUTTONDOWN:\r
+        differentialView = !differentialView;\r
     case WM_REFRESH_GRAPH:\r
+    paint:\r
         hDC = GetDC( hDlg );\r
         DisplayEvalGraph( hDlg, hDC );\r
         ReleaseDC( hDlg, hDC );\r
         break;\r
 \r
-    case WM_LBUTTONDBLCLK:\r
+    case WM_LBUTTONDOWN:\r
         if( wParam == 0 || wParam == MK_LBUTTON ) {\r
             int index = GetMoveIndexFromPoint( LOWORD(lParam), HIWORD(lParam) );\r
 \r