X-Git-Url: http://winboard.nl/cgi-bin?p=xboard.git;a=blobdiff_plain;f=backend.c;h=7ffbd84199037dc318bff5b448feda98816b20eb;hp=e670eaf7808d8187eda4cc37453e350cf37a6cad;hb=1f070c3ba500547459ad3df71fbdbad1e5b4b4a0;hpb=ca6061cbffe88ff5eb2332e733e0a534b89cc5e7 diff --git a/backend.c b/backend.c index e670eaf..7ffbd84 100644 --- a/backend.c +++ b/backend.c @@ -11180,9 +11180,9 @@ PositionMatches(Board b1, Board b2) int pieceList[256], quickBoard[256]; ChessSquare pieceType[256] = { EmptySquare }; -Board soughtBoard, reverseBoard; +Board soughtBoard, reverseBoard, flipBoard, rotateBoard; int counts[EmptySquare], minSought[EmptySquare], minReverse[EmptySquare], maxSought[EmptySquare], maxReverse[EmptySquare]; -Boolean epOK; +Boolean epOK, flipSearch; typedef struct { unsigned char piece, to; @@ -11323,7 +11323,10 @@ int QuickScan(Board board, Move *move) pieceList[piece] = to; cnt++; if(QuickCompare(soughtBoard, minSought, maxSought) || - appData.ignoreColors && QuickCompare(reverseBoard, minReverse, maxReverse)) { + appData.ignoreColors && QuickCompare(reverseBoard, minReverse, maxReverse) || + flipSearch && (QuickCompare(flipBoard, minSought, maxSought) || + appData.ignoreColors && QuickCompare(rotateBoard, minReverse, maxReverse)) + ) { static int lastCounts[EmptySquare+1]; int i; if(stretch) for(i=0; i= 5) { for(r=BOARD_HEIGHT/2; r