Updated copyright notice to 2012
[xboard.git] / engineoutput.c
index a21282e..83c7141 100644 (file)
@@ -5,6 +5,8 @@
  *
  * Copyright 2005 Alessandro Scotti
  *
+ * Enhancements Copyright 1995, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ *
  * ------------------------------------------------------------------------
  *
  * GNU XBoard is free software: you can redistribute it and/or modify
 #include "backend.h"
 #include "moves.h"
 #include "engineoutput.h"
+#include "gettext.h"
+
+#ifdef ENABLE_NLS
+# define  _(s) gettext (s)
+# define N_(s) gettext_noop (s)
+#else
+# define  _(s) (s)
+# define N_(s)  s
+#endif
 
 typedef struct {
     char * name;
@@ -76,20 +87,28 @@ static char header[MSG_SIZ];
 #define MAX_VAR 400
 static int scores[MAX_VAR], textEnd[MAX_VAR], curDepth[2], nrVariations[2];
 
+extern int initialRulePlies;
+
 void MakeEngineOutputTitle()
 {
        static char buf[MSG_SIZ];
        static char oldTitle[MSG_SIZ];
-       char *title = "Engine Output";
-      extern int initialRulePlies;
-       int count;
+       char title[MSG_SIZ];
+       int count, rule = 2*appData.ruleMoves;
+
+       snprintf(title, MSG_SIZ, _("Engine Output") );
+
+       if(!EngineOutputIsUp()) return;
        // figure out value of 50-move counter
        count = currentMove;
        while( (signed char)boards[count][EP_STATUS] <= EP_NONE && count > backwardMostMove ) count--;
        if( count == backwardMostMove ) count -= initialRulePlies;
-       count += 2*appData.ruleMoves - currentMove;
-       snprintf(buf, MSG_SIZ, "%s (%d ply to draw)", title, count);
-       if(count <= 40) title = buf;
+       count = currentMove - count;
+       if(!rule) rule = 100;
+       if(count >= rule - 40 && (!appData.icsActive || gameMode == IcsObserving)) {
+               snprintf(buf, MSG_SIZ, _("%s (%d reversible plies)"), title, count);
+               safeStrCpy(title, buf, MSG_SIZ);
+       }
        if(!strcmp(oldTitle, title)) return;
        safeStrCpy(oldTitle, title, MSG_SIZ);
        SetEngineOutputTitle(title);
@@ -194,7 +213,7 @@ void SetProgramStats( FrontEndProgramStats * stats ) // now directly called by b
         header[0] = NULLCHAR;
         if(gameMode == AnalyzeMode && (multi = MultiPV(&first)) >= 0) {
             snprintf(header, MSG_SIZ, "\t%s viewpoint\t\tfewer / Multi-PV setting = %d / more\n",
-                                       appData.whitePOV ? "white" : "mover", first.option[multi].value);
+                                       appData.whitePOV || appData.scoreWhite ? "white" : "mover", first.option[multi].value);
             InsertIntoMemo( which, header, 0);
         } else
         if(appData.ponderNextMove && lastLine[which][0]) {
@@ -481,7 +500,7 @@ static void UpdateControls( EngineOutputData * ed )
         }
 
         /* Score */
-        h = (gameMode == AnalyzeMode && appData.whitePOV && !WhiteOnMove(currentMove) ? -1 : 1) * ed->score;
+        h = ((gameMode == AnalyzeMode && appData.whitePOV || appData.scoreWhite) && !WhiteOnMove(currentMove) ? -1 : 1) * ed->score;
         if( h > 0 ) {
          snprintf( s_score, sizeof(s_score)/sizeof(s_score[0]), "+%.2f", h / 100.0 );
         }