From: H.G. Muller Date: Wed, 30 Jun 2010 08:52:27 +0000 (+0200) Subject: Cut board squares out of texture bitmap more cleverly X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=98c9b08e4dcf6ac0e2e9f5fb12de3d423c97d36f;p=xboard.git Cut board squares out of texture bitmap more cleverly When the bitmap is larger than the entire board, the squares are now cut out of the center of the virtual squares from subdividing the bitmap, so that they stay centered on the grid of a Xiangqi board bitmap. If the board size exceeds that of the bitmap, the old algorithm is still used, as the centering would make the edge squares exceed the bitmap, and cause a black rim around the board. --- diff --git a/winboard/winboard.c b/winboard/winboard.c index bb78522..fa310fe 100644 --- a/winboard/winboard.c +++ b/winboard/winboard.c @@ -2655,7 +2655,13 @@ VOID RebuildTextureSquareInfo() if( (col + row) & 1 ) { /* Lite square */ if( lite_w >= squareSize && lite_h >= squareSize ) { + if( lite_w >= squareSize*BOARD_WIDTH ) + backTextureSquareInfo[row][col].x = (2*col+1)*lite_w/(2*BOARD_WIDTH) - squareSize/2; /* [HGM] cut out of center of virtual square */ + else backTextureSquareInfo[row][col].x = col * (lite_w - squareSize) / (BOARD_WIDTH-1); /* [HGM] divide by size-1 in stead of size! */ + if( lite_h >= squareSize*BOARD_HEIGHT ) + backTextureSquareInfo[row][col].y = (2*(BOARD_HEIGHT-row)-1)*lite_h/(2*BOARD_HEIGHT) - squareSize/2; + else backTextureSquareInfo[row][col].y = (BOARD_HEIGHT-1-row) * (lite_h - squareSize) / (BOARD_HEIGHT-1); backTextureSquareInfo[row][col].mode = GetBackTextureMode(liteBackTextureMode); } @@ -2663,7 +2669,13 @@ VOID RebuildTextureSquareInfo() else { /* Dark square */ if( dark_w >= squareSize && dark_h >= squareSize ) { + if( dark_w >= squareSize*BOARD_WIDTH ) + backTextureSquareInfo[row][col].x = (2*col+1) * dark_w / (2*BOARD_WIDTH) - squareSize/2; + else backTextureSquareInfo[row][col].x = col * (dark_w - squareSize) / (BOARD_WIDTH-1); + if( dark_h >= squareSize*BOARD_HEIGHT ) + backTextureSquareInfo[row][col].y = (2*(BOARD_HEIGHT-row)-1) * dark_h / (2*BOARD_HEIGHT) - squareSize/2; + else backTextureSquareInfo[row][col].y = (BOARD_HEIGHT-1-row) * (dark_h - squareSize) / (BOARD_HEIGHT-1); backTextureSquareInfo[row][col].mode = GetBackTextureMode(darkBackTextureMode); }