From d3b5cd9655f0129d5f31e9cdd7a320e4380c8ce7 Mon Sep 17 00:00:00 2001 From: H.G.Muller Date: Sun, 6 Nov 2022 12:35:12 +0100 Subject: [PATCH] Add image of ducky to WinBoard Duck Chess needs to display a duck for a DarkSquare. --- winboard/bitmaps/ducky33.bmp | Bin 0 -> 3354 bytes winboard/bitmaps/ducky49.bmp | Bin 0 -> 7306 bytes winboard/bitmaps/ducky72.bmp | Bin 0 -> 15606 bytes winboard/winboard.c | 12 +++++++++--- winboard/winboard.rc | 3 +++ 5 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 winboard/bitmaps/ducky33.bmp create mode 100644 winboard/bitmaps/ducky49.bmp create mode 100644 winboard/bitmaps/ducky72.bmp diff --git a/winboard/bitmaps/ducky33.bmp b/winboard/bitmaps/ducky33.bmp new file mode 100644 index 0000000000000000000000000000000000000000..28a32f7e9f3d00d10b5e34ddd17a783b560bfecd GIT binary patch literal 3354 zcmcgtX;4#F6n<_ff<_<#0!7EMRV#uEI{`sUMA=CIbG;?$-GxaVIm{;+5zUD~bxdywzzL2!alUQbsP4kV zk*eI$>b$;^jMsSy&$CWEPCxcAnbDYV@J^gx{h2Ar@HE8xHFJUDfrY!HZIW{*o8dS-|PLnDL?f9Eiti z^T%rV;{^!}yuyj4-isLsL-6nE;f?YBsG}u?(Q!U@usjX?FZz&uoO4mE}u?7oXYF7k2aV%_ig zAs#qa=;e#-Q^2W<^=jir1NJT}fPju@coRDi5~0$L^Gp=J-(iDBP?-8(Bhx`k_{puE zT5g`sn=Js1bbtV=w>b44I}j})K#qfm?zg0bHgSSc+As0PzH#-CK>3na&Cuv*FL%g* zGxji9aEk}ZvPP`lsaP4#}8Tqf{H)diGHi zF>zdksi}=NT7?qQl9mqETzMdaH{aD{2VRiaojkuhiYXlp8q8_x#i6Qc9wz_UG-)Q zbX&eoPaX%>maNtL65Pp{_94}uAK-67Ihv*3J_NtE!TR4~Cfh984{+FSG*P?OFbN@b z0in#I(rfA+!@`)EDyp+ru2$URCrY8Z>?jZ2DJn$fm=6^3gptxfIdw5@cSsipBs ztobntODY6;&f^K|L+^^N9x1u9UrXD$6!yf-9X>0##$@^Qsir*L2aou8qkGXJ~Pr0`QH zV)pV?w+04my?yYp5|u*Y7KOV^`C5o0O52hgh|tknJqcG>GK%!7+tNp)~a_i>O0lH-xVfoPy; z=kp5to~rQ`n>j{g8OHufI? literal 0 HcmV?d00001 diff --git a/winboard/bitmaps/ducky49.bmp b/winboard/bitmaps/ducky49.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2749791fa96d86ac820dc6ddfa60fcc9c6008260 GIT binary patch literal 7306 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 literal 0 HcmV?d00001 diff --git a/winboard/bitmaps/ducky72.bmp b/winboard/bitmaps/ducky72.bmp new file mode 100644 index 0000000000000000000000000000000000000000..98d9d4113ffc933534dd24d46d38ce893a32c46a GIT binary patch literal 15606 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 literal 0 HcmV?d00001 diff --git a/winboard/winboard.c b/winboard/winboard.c index 5235ca0..e7542ad 100644 --- a/winboard/winboard.c +++ b/winboard/winboard.c @@ -2342,7 +2342,7 @@ ResizeBoard(int newSizeX, int newSizeY, int flags) recurse--; } - +static HBITMAP ducky; extern Boolean twoBoards, partnerUp; // [HGM] dual VOID @@ -2769,6 +2769,7 @@ InitDrawingSizes(BoardSize boardSize, int flags) pieceBitmap[0][WhiteGnu] = DoLoadBitmap(hInst, "gnu", squareSize, "s"); pieceBitmap[1][WhiteGnu] = DoLoadBitmap(hInst, "gnu", squareSize, "o"); pieceBitmap[2][WhiteGnu] = DoLoadBitmap(hInst, "gnu", squareSize, "w"); + if(gameInfo.variant == VariantDuck) { char name[20]; sprintf(name, " ducky%d", squareSize); ducky = LoadBitmap(hInst, name); } if(gameInfo.variant == VariantShogi && BOARD_HEIGHT != 7) { /* promoted Gold representations (but not in Tori!)*/ pieceBitmap[0][WhiteCannon] = DoLoadBitmap(hInst, "wp", squareSize, "s"); @@ -3607,8 +3608,13 @@ DrawBoardOnDC(HDC hdc, Board board, HDC tmphdc) DisplayHoldingsCount(hdc, x, y, flipView, (int) board[row][column]); else if( column == BOARD_RGHT) /* right align */ DisplayHoldingsCount(hdc, x, y, !flipView, (int) board[row][column]); - else if( piece == DarkSquare) DisplayHoldingsCount(hdc, x, y, 0, 0); - else + else if( piece == DarkSquare) { + if(gameInfo.variant == VariantDuck && ducky) { + HBITMAP oldBitmap = SelectObject(tmphdc, ducky); + BitBlt( hdc, x, y, squareSize, tmphdc, 0, 0, SRCPAINT ); + SelectObject(tmphdc, oldBitmap); + } else DisplayHoldingsCount(hdc, x, y, 0, 0); + } else if (appData.monoMode) { if (piece == EmptySquare) { BitBlt(hdc, x, y, squareSize, squareSize, 0, 0, 0, diff --git a/winboard/winboard.rc b/winboard/winboard.rc index 2042dcc..91ddc7f 100644 --- a/winboard/winboard.rc +++ b/winboard/winboard.rc @@ -2131,6 +2131,9 @@ A64S BITMAP MOVEABLE PURE "bitmaps/a64s.bmp" L64S BITMAP MOVEABLE PURE "bitmaps/l64s.bmp" C64S BITMAP MOVEABLE PURE "bitmaps/c64s.bmp" CV64S BITMAP MOVEABLE PURE "bitmaps/cv64s.bmp" +DUCKY33 BITMAP MOVEABLE PURE "bitmaps/ducky33.bmp" +DUCKY49 BITMAP MOVEABLE PURE "bitmaps/ducky49.bmp" +DUCKY72 BITMAP MOVEABLE PURE "bitmaps/ducky72.bmp" SP58O BITMAP MOVEABLE PURE "shogibitmaps/sp58o.bmp" SN58O BITMAP MOVEABLE PURE "shogibitmaps/sn58o.bmp" -- 1.7.0.4