X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=evalgraph.c;h=1380276dce7a164a644e1ab9f5199db322d67dc9;hb=9bc5b6e6ca1e15a01cd9406322ad4fc93a45adc8;hp=9aa1fe7e5188755b9c3ae32bd27053b59a6f7d5e;hpb=cfe2d2d1940d9f17f3197cdcc36f4233150d3db1;p=xboard.git diff --git a/evalgraph.c b/evalgraph.c index 9aa1fe7..1380276 100644 --- a/evalgraph.c +++ b/evalgraph.c @@ -50,6 +50,7 @@ ChessProgramStats_Move * currPvInfo; int currFirst = 0; int currLast = 0; int currCurrent = -1; +int range = 1; int nWidthPB = 0; int nHeightPB = 0; @@ -84,6 +85,19 @@ static int GetPvScore( int index ) return score; } +char* MakeEvalTitle( char * title) +{ + int score = currPvInfo[ currCurrent ].score; + int depth = currPvInfo[ currCurrent ].depth; + static char buf[MSG_SIZ]; + + if( depth <=0 ) return title; + if( currCurrent & 1 ) score = -score; /* Flip score for black */ + snprintf(buf, MSG_SIZ, "%s {%s%.2f/%-2d %d}", title, score>0 ? "+" : " ", score/100., depth, (currPvInfo[currCurrent].time+50)/100); + + return buf; +} + // back-end /* For a centipawn value, this function returns the height of the corresponding @@ -93,23 +107,23 @@ static int GetPvScore( int index ) */ static int GetValueY( int value ) { - if( value < -700 ) value = -700; - if( value > +700 ) value = +700; + if( value < -range*700 ) value = -range*700; + if( value > +range*700 ) value = +range*700; - return (nHeightPB / 2) - (int)(value * (nHeightPB - 2*MarginH) / 1400.0); + return (nHeightPB / 2) - (int)(value * (nHeightPB - 2*MarginH) / (1400.*range)); } // the brush selection is made part of the DrawLine, by passing a style argument // the wrapper for doing the text output makes this back-end static void DrawAxisSegmentHoriz( int value, Boolean drawValue ) { - int y = GetValueY( value*100 ); + int y = GetValueY( range*value*100 ); if( drawValue ) { char buf[MSG_SIZ], *b = buf; if( value > 0 ) *b++ = '+'; - sprintf(b, "%d", value); + sprintf(b, "%d", range*value); DrawEvalText(buf, strlen(buf), y); } @@ -328,6 +342,8 @@ int GetMoveIndexFromPoint( int x, int y ) // init and display part split of so they can be moved to front end void PaintEvalGraph( void ) { + VariantClass v = gameInfo.variant; + range = (gameInfo.holdingsWidth && v != VariantSuper && v != VariantGreat && v != VariantSChess) ? 2 : 1; // [HGM] double range in drop games /* Draw */ DrawRectangle(0, 0, nWidthPB, nHeightPB, 2, FILLED); DrawAxis();