From: Arun Persaud Date: Sat, 11 Oct 2014 17:53:46 +0000 (-0700) Subject: Merge branch 'master' into v4.8.x X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=b52820a1e05e0bd5a7388561666d1703135870d0;hp=8ae201d2bc9ad8c4781ed9cd52f8ef097b31063c;p=xboard.git Merge branch 'master' into v4.8.x --- diff --git a/backend.c b/backend.c index b248d03..8c5ac40 100644 --- a/backend.c +++ b/backend.c @@ -1201,6 +1201,11 @@ InitBackEnd1 () DisplayFatalError(buf, 0, 2); return; + case VariantNormal: /* definitely works! */ + if(strcmp(appData.variant, "normal") && appData.chessProgram) { // [HGM] hope this is an engine-defined variant + safeStrCpy(engineVariant, appData.variant, MSG_SIZ); + return; + } case VariantXiangqi: /* [HGM] repetition rules not implemented */ case VariantFairy: /* [HGM] TestLegality definitely off! */ case VariantGothic: /* [HGM] should work */ @@ -1213,7 +1218,6 @@ InitBackEnd1 () case VariantFalcon: /* [HGM] untested */ case VariantCrazyhouse: /* holdings not shown, ([HGM] fixed that!) offboard interposition not understood */ - case VariantNormal: /* definitely works! */ case VariantWildCastle: /* pieces not automatically shuffled */ case VariantNoCastle: /* pieces not automatically shuffled */ case VariantFischeRandom: /* [HGM] works and shuffles pieces */ @@ -5324,6 +5328,7 @@ UploadGameEvent () } int killX = -1, killY = -1; // [HGM] lion: used for passing e.p. capture square to MakeMove +int legNr = 1; void CoordsToComputerAlgebraic (int rf, int ff, int rt, int ft, char promoChar, char move[7]) @@ -6103,7 +6108,7 @@ InitPosition (int redraw) case VariantFalcon: pieces = FalconArray; gameInfo.boardWidth = 10; - SetCharTable(pieceToChar, "PNBRQ.............FKpnbrq.............fk"); + SetCharTable(pieceToChar, "PNBRQ............FKpnbrq............fk"); break; case VariantXiangqi: pieces = XiangqiArray; @@ -7259,7 +7264,7 @@ Mark (Board board, int flags, ChessMove kind, int rf, int ff, int rt, int ft, VO { typedef char Markers[BOARD_RANKS][BOARD_FILES]; Markers *m = (Markers *) closure; - if(rf == fromY && ff == fromX && (killX < 0 && !(rt == rf && ft == ff) || abs(ft-killX) < 2 && abs(rt-killY) < 2)) + if(rf == fromY && ff == fromX && (killX < 0 ? !(rt == rf && ft == ff) && legNr & 1 : rt == killY && ft == killX || legNr & 2)) (*m)[rt][ft] = 1 + (board[rt][ft] != EmptySquare || kind == WhiteCapturesEnPassant || kind == BlackCapturesEnPassant) + 3*(kind == FirstLeg && killX < 0), legal[rt][ft] = 1; @@ -8873,7 +8878,6 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h s = 8 + strlen(buf), buf[s-9] = NULLCHAR, SetCharTable(pieceToChar, buf); ASSIGN(appData.pieceToCharTable, buf); } - if(startedFromSetupPosition) return; dummy = sscanf(message+s, "%dx%d+%d_%s", &w, &h, &hand, varName); if(dummy >= 3) { while(message[s] && message[s++] != ' '); @@ -8883,8 +8887,10 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h if(dummy == 4) gameInfo.variant = StringToVariant(varName); // parent variant InitPosition(1); // calls InitDrawingSizes to let new parameters take effect if(*buf) SetCharTable(pieceToChar, buf); // do again, for it was spoiled by InitPosition + startedFromSetupPosition = FALSE; } } + if(startedFromSetupPosition) return; ParseFEN(boards[0], &dummy, message+s, FALSE); DrawPosition(TRUE, boards[0]); startedFromSetupPosition = TRUE; @@ -8893,13 +8899,15 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h if(sscanf(message, "piece %s %s", buf2, buf1) == 2) { ChessSquare piece = WhitePawn; char *p=buf2; + if(*p == '+') piece = CHUPROMOTED WhitePawn, p++; + piece += CharToPiece(*p) - WhitePawn; if(cps != &first || appData.testLegality && *engineVariant == NULLCHAR + /* always accept definition of */ && piece != WhiteFalcon && piece != BlackFalcon + /* wild-card pieces. */ && piece != WhiteCobra && piece != BlackCobra /* For variants we don't have */ && gameInfo.variant != VariantBerolina /* correct rules for, we cannot */ && gameInfo.variant != VariantCylinder /* enforce legality on our own! */ && gameInfo.variant != VariantUnknown && gameInfo.variant != VariantFairy ) return; - if(*p == '+') piece = CHUPROMOTED WhitePawn, p++; - piece += CharToPiece(*p) - WhitePawn; if(piece < EmptySquare) { pieceDefs = TRUE; ASSIGN(pieceDesc[piece], buf1); @@ -15520,6 +15528,7 @@ ForwardInner (int target) seekGraphUp = FALSE; MarkTargetSquares(1); + fromX = fromY = killX = killY = -1; // [HGM] abort any move entry in progress if (gameMode == PlayFromGameFile && !pausing) PauseEvent(); @@ -15638,6 +15647,7 @@ BackwardInner (int target) if (gameMode == EditPosition) return; seekGraphUp = FALSE; MarkTargetSquares(1); + fromX = fromY = killX = killY = -1; // [HGM] abort any move entry in progress if (currentMove <= backwardMostMove) { ClearHighlights(); DrawPosition(full_redraw, boards[currentMove]); @@ -17817,8 +17827,17 @@ PositionToFEN (int move, char *overrideCastling, int moveCounts) while(*p++ = *q++); if(q != overrideCastling+1) p[-1] = ' '; else --p; } else { if(nrCastlingRights) { + int handW=0, handB=0; + if(gameInfo.variant == VariantSChess) { // for S-Chess, all virgin backrank pieces must be listed + for(i=0; i=BOARD_LEFT; i--) + if(boards[move][VIRGIN][i] & VIRGIN_W) *p++ = i + AAA + 'A' - 'a'; + } else { /* [HGM] write directly from rights */ if(boards[move][CASTLING][2] != NoRights && boards[move][CASTLING][0] != NoRights ) @@ -17826,12 +17845,18 @@ PositionToFEN (int move, char *overrideCastling, int moveCounts) if(boards[move][CASTLING][2] != NoRights && boards[move][CASTLING][1] != NoRights ) *p++ = boards[move][CASTLING][1] + AAA + 'A' - 'a'; + } + if(handB) { + for(i=BOARD_RGHT-1; i>=BOARD_LEFT; i--) + if(boards[move][VIRGIN][i] & VIRGIN_B) *p++ = i + AAA; + } else { if(boards[move][CASTLING][5] != NoRights && boards[move][CASTLING][3] != NoRights ) *p++ = boards[move][CASTLING][3] + AAA; if(boards[move][CASTLING][5] != NoRights && boards[move][CASTLING][4] != NoRights ) *p++ = boards[move][CASTLING][4] + AAA; + } } else { /* [HGM] write true castling rights */ @@ -17841,8 +17866,7 @@ PositionToFEN (int move, char *overrideCastling, int moveCounts) boards[move][CASTLING][2] != NoRights ) k = 1, *p++ = 'K'; q = (boards[move][CASTLING][1] == BOARD_LEFT && boards[move][CASTLING][2] != NoRights ); - if(gameInfo.variant == VariantSChess) { // for S-Chess, indicate all vrgin backrank pieces - for(i=j=0; i=BOARD_LEFT+q && j; i--) if((boards[move][0][i] != WhiteKing || k+q == 0) && boards[move][VIRGIN][i] & VIRGIN_W) *p++ = i + AAA + 'A' - 'a'; @@ -17853,8 +17877,7 @@ PositionToFEN (int move, char *overrideCastling, int moveCounts) boards[move][CASTLING][5] != NoRights ) k = 1, *p++ = 'k'; q = (boards[move][CASTLING][4] == BOARD_LEFT && boards[move][CASTLING][5] != NoRights ); - if(gameInfo.variant == VariantSChess) { - for(i=j=0; i=BOARD_LEFT+q && j; i--) if((boards[move][BOARD_HEIGHT-1][i] != BlackKing || k+q == 0) && boards[move][VIRGIN][i] & VIRGIN_B) *p++ = i + AAA; diff --git a/dialogs.c b/dialogs.c index e02bc17..d65e4a6 100644 --- a/dialogs.c +++ b/dialogs.c @@ -494,6 +494,18 @@ static Option variantDescriptors[] = { { VariantChu, SAME_ROW, 135, NULL, (void*) &Pick, "#BFFFBF", NULL, Button, N_("chu shogi (12x12)")}, //{ -1, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_(" ")}, // dummy, to have good alignment // optional buttons for engine-defined variants +{ 0, NO_OK, 0, NULL, NULL, "", NULL, EndMark , "" }, +{ 0, SAME_ROW, 0, NULL, NULL, NULL, NULL, Skip, ""}, +{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, +{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, +{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, +{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, +{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, +{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, +{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, +{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, +{ VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, +{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, { VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, { VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, { VariantUnknown, 0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL }, @@ -550,11 +562,13 @@ NewVariantProc () { static int start; int i, last; - char buf[MSG_SIZ]; ranksTmp = filesTmp = sizeTmp = -1; // prefer defaults over actual settings if(appData.noChessProgram) sprintf(warning, _("Only bughouse is not available in viewer mode.")); else sprintf(warning, _("All variants not supported by the first engine\n(currently %s) are disabled."), first.tidy); - if(!start) while(variantDescriptors[start].type != Skip) start++; // locate first spare + if(!start) { + while(variantDescriptors[start].type != EndMark) start++; // locate spares + start += 2; // conditional EndMark and Break + } last = -1; for(i=0; variantDescriptors[start+i].type != EndMark; i++) { // create buttons for engine-defined variants char *v = EngineDefinedVariant(&first, i); @@ -569,9 +583,11 @@ NewVariantProc () variantDescriptors[start+last+1].type = Button; variantDescriptors[start+last+1].value = Skip; } - safeStrCpy(buf, engineVariant, MSG_SIZ); *engineVariant = NULLCHAR; // yeghh... + variantDescriptors[start-2].type = (last < 0 ? EndMark : Skip); + variantDescriptors[start-1].type = (last < 6 ? Skip : Break); + safeStrCpy(engineVariant+100, engineVariant, 100); *engineVariant = NULLCHAR; // yeghh... GenericPopUp(variantDescriptors, _("New Variant"), TransientDlg, BoardWindow, MODAL, 0); - safeStrCpy(engineVariant, buf, MSG_SIZ); // must temporarily clear to avoid enabling all variant buttons + safeStrCpy(engineVariant, engineVariant+100, MSG_SIZ); // must temporarily clear to avoid enabling all variant buttons } //------------------------------------------- Common Engine Options ------------------------------------- @@ -2397,7 +2413,8 @@ DisplayLogos (Option *w1, Option *w2) { void *whiteLogo = first.programLogo, *blackLogo = second.programLogo; if(appData.autoLogo) { - + if(appData.noChessProgram) whiteLogo = blackLogo = NULL; + if(appData.icsActive) whiteLogo = blackLogo = second.programLogo; switch(gameMode) { // pick logos based on game mode case IcsObserving: whiteLogo = second.programLogo; // ICS logo diff --git a/gtk/xboard.c b/gtk/xboard.c index 78fa0f6..81fc8d6 100644 --- a/gtk/xboard.c +++ b/gtk/xboard.c @@ -176,12 +176,15 @@ extern char *getenv(); // redefine some defaults # undef ICS_LOGON # undef DATADIR +# undef LOCALEDIR # undef SETTINGS_FILE # define ICS_LOGON "Library/Preferences/XboardICS.conf" # define DATADIR dataDir +# define LOCALEDIR localeDir # define SETTINGS_FILE masterSettings # define SYNC_MENUBAR gtkosx_application_sync_menubar(theApp) char dataDir[MSG_SIZ]; // for expanding ~~ + char localeDir[MSG_SIZ]; char masterSettings[MSG_SIZ]; #else # define SLASH '/' @@ -223,6 +226,7 @@ void DisplayMove P((int moveNumber)); void update_ics_width P(()); int CopyMemoProc P(()); static gboolean EventProc P((GtkWidget *widget, GdkEvent *event, gpointer g)); +static int FindLogo P((char *place, char *name, char *buf)); #ifdef TODO_GTK #if ENABLE_NLS @@ -639,7 +643,12 @@ void ResizeBoardWindow (int w, int h, int inhibit) { GtkAllocation a; + int bw; // if(clockKludge) return; // ignore as long as clock does not have final height + gtk_widget_get_allocation(optList[W_BOARD].handle, &a); + bw = a.width; + gtk_widget_get_allocation(shellWidget, &a); + marginW = a.width - bw; gtk_widget_get_allocation(optList[W_WHITE].handle, &a); w += marginW + 1; // [HGM] not sure why the +1 is (sometimes) needed... h += marginH + a.height + 1; @@ -868,6 +877,10 @@ main (int argc, char **argv) #ifdef __APPLE__ { // prepare to catch OX OpenFile signal, which will tell us the clicked file char *path = gtkosx_application_get_bundle_path(); +#ifdef ENABLE_NLS + char *res_path = gtkosx_application_get_resource_path(); + snprintf(localeDir, MSG_SIZ, "%s/share/locale", res_path); // redefine locale dir for OSX bundle +#endif theApp = g_object_new(GTKOSX_TYPE_APPLICATION, NULL); strncpy(dataDir, path, MSG_SIZ); snprintf(masterSettings, MSG_SIZ, "%s/Contents/Resources/etc/xboard.conf", path); @@ -1099,6 +1112,7 @@ main (int argc, char **argv) layoutName = "normalLayout"; } + if(appData.logoSize) appData.logoSize = boardWidth/4-3; wpMain.width = -1; // prevent popup sizes window optList = BoardPopUp(squareSize, lineGap, (void*) #ifdef TODO_GTK @@ -1179,7 +1193,7 @@ main (int argc, char **argv) gtk_widget_get_allocation(optList[W_WHITE].handle, &a); clockKludge = hc = a.height; gtk_widget_get_allocation(boardWidget, &a); - marginW = w - boardWidth; // [HGM] needed to set new shellWidget size when we resize board +// marginW = w - boardWidth; // [HGM] needed to set new shellWidget size when we resize board marginH = h - a.height - hc; // subtract current clock height, so it can be added back dynamically } @@ -1188,8 +1202,10 @@ main (int argc, char **argv) if(appData.logoSize) { // locate and read user logo - char buf[MSG_SIZ]; - snprintf(buf, MSG_SIZ, "%s/%s.png", appData.logoDir, UserName()); + char buf[MSG_SIZ], name[MSG_SIZ]; + snprintf(name, MSG_SIZ, "/home/%s", UserName()); + if(!FindLogo(name, ".logo", buf)) + FindLogo(appData.logoDir, name + 6, buf); ASSIGN(userLogo, buf); } @@ -2228,24 +2244,33 @@ FrameDelay (int time) #endif +static int +FindLogo (char *place, char *name, char *buf) +{ // check if file exists in given place + FILE *f; + if(!place) return 0; + snprintf(buf, MSG_SIZ, "%s/%s.png", place, name); + if(*place && strcmp(place, ".") && (f = fopen(buf, "r")) ) { + fclose(f); + return 1; + } + return 0; +} + static void LoadLogo (ChessProgramState *cps, int n, Boolean ics) { char buf[MSG_SIZ], *logoName = buf; - FILE *f; if(appData.logo[n][0]) { logoName = appData.logo[n]; } else if(appData.autoLogo) { if(ics) { // [HGM] logo: in ICS mode second can be used for ICS sprintf(buf, "%s/%s.png", appData.logoDir, appData.icsHost); - } else { // engine; look in engine-dir (if any) first - snprintf(buf, MSG_SIZ, "%s/logo.png", appData.directory[n]); - if(appData.directory[n] && appData.directory[n][0] - && strcmp(appData.directory[n], ".") && (f = fopen(buf, "r")) ) - fclose(f); - else // no engine dir or no logo.png in it: look in logo dir - if(appData.logoDir && appData.logoDir[0]) - sprintf(buf, "%s/%s.png", appData.logoDir, cps->tidy); + } else { // engine; cascade + if(!FindLogo(appData.logoDir, cps->tidy, buf) && // first try user log folder + !FindLogo(appData.directory[n], "logo", buf) && // then engine directory + !FindLogo("/usr/local/share/games/plugins/logos", cps->tidy, buf) ) // then system folders + FindLogo("/usr/share/games/plugins/logos", cps->tidy, buf); } } if(logoName[0]) diff --git a/gtk/xoptions.c b/gtk/xoptions.c index cd78c9f..5c35c8e 100644 --- a/gtk/xoptions.c +++ b/gtk/xoptions.c @@ -1445,10 +1445,14 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); /* set button color on new variant dialog */ if(option[i].textValue) { + static char *b = "Bold"; gdk_color_parse( option[i].textValue, &color ); gtk_widget_modify_bg ( GTK_WIDGET(button), GTK_STATE_NORMAL, &color ); gtk_widget_set_sensitive(button, option[i].value >= 0 && (appData.noChessProgram || strstr(first.variants, VariantName(option[i].value)))); + if(engineVariant[100] ? !strcmp(engineVariant+100, option[i].name) : + gameInfo.variant ? option[i].value == gameInfo.variant : !strcmp(option[i].name, "Normal")) + SetWidgetFont(gtk_bin_get_child(GTK_BIN(button)), &b); } Pack(hbox, table, button, left, left+1, top, 0); diff --git a/moves.c b/moves.c index 5af3c47..aca97b5 100644 --- a/moves.c +++ b/moves.c @@ -218,6 +218,15 @@ CollectPieceDescriptors () } // [HGM] gen: configurable move generation from Betza notation sent by engine. +// Some notes about two-leg moves: GenPseudoLegal() works in two modes, depending on whether a 'kill- +// square has been set: without one is generates all moves, and a global int legNr flags in bits 0 and 1 +// if the move has 1 or 2 legs. Only the marking of squares makes use of this info, by only marking +// target squares of leg 1 (rejecting null move). A dummy move with MoveType 'FirstLeg' to the relay square +// is generated, so a cyan marker can be put there, and other functions can ignore such a move. When the +// user selects this square, it becomes the kill-square. Once a kill-square is set, only 2-leg moves are +// generated that use that square as relay, plus 1-leg moves, so the 1-leg move that goes to the kill-square +// can be marked during 2nd-leg entry to terminate the move there. For judging the pseudo-legality of the +// 2nd leg, the from-square has to be considered empty, although the moving piece is still on it. Boolean pieceDefs; @@ -226,9 +235,14 @@ char symmetry[] = "FBNW.FFW.NKN.NW.QR....W..N"; char xStep[] = "2110.130.102.10.00....0..2"; char yStep[] = "2132.133.313.20.11....1..3"; char dirType[] = "01000104000200000260050000"; +char upgrade[] = "AFCD.BGH.JQL.NO.KW....R..Z"; +char rotate[] = "DRCA.WHG.JKL.NO.QB....F..Z"; + // alphabet "a b c d e f g h i j k l m n o p q r s t u v w x y z " int dirs1[] = { 0,0x3C,0,0,0,0xC3,0,0, 0,0,0,0xF0,0,0,0,0,0,0x0F,0 ,0,0,0 ,0,0,0,0 }; int dirs2[] = { 0,0x18,0,0,0,0x81,0,0xFF,0,0,0,0x60,0,0,0,0,0,0x06,0x66,0,0,0x99,0,0,0,0 }; +int dirs3[] = { 0,0x38,0,0,0,0x83,0,0xFF,0,0,0,0xE0,0,0,0,0,0,0x0E,0xEE,0,0,0xBB,0,0,0,0 }; +int dirs4[] = { 0,0x10,0,0,0,0x01,0,0xFF,0,0,0,0x40,0,0,0,0,0,0x04,0x44,0,0,0x11,0,0,0,0 }; int rot[][4] = { // rotation matrices for each direction { 1, 0, 0, 1 }, @@ -242,20 +256,30 @@ int rot[][4] = { // rotation matrices for each direction }; void -MovesFromString (Board board, int flags, int f, int r, char *desc, MoveCallback cb, VOIDSTAR cl) +OK (Board board, int flags, ChessMove kind, int rf, int ff, int rt, int ft, VOIDSTAR cl) +{ + (*(int*)cl)++; +} + +void +MovesFromString (Board board, int flags, int f, int r, int tx, int ty, int angle, char *desc, MoveCallback cb, VOIDSTAR cl) { - char *p = desc; + char buf[80], *p = desc, *atom = NULL; int mine, his, dir, bit, occup, i; if(flags & F_WHITE_ON_MOVE) his = 2, mine = 1; else his = 1, mine = 2; while(*p) { // more moves to go - int expo = 1, dx, dy, x, y, mode, dirSet, retry=0, initial=0, jump=1; + int expo = 1, dx, dy, x, y, mode, dirSet, ds2, retry=0, initial=0, jump=1, skip = 0, all = 0; + char *cont = NULL; if(*p == 'i') initial = 1, desc = ++p; while(islower(*p)) p++; // skip prefixes if(!isupper(*p)) return; // syntax error: no atom + dx = xStep[*p-'A'] - '0';// step vector of atom + dy = yStep[*p-'A'] - '0'; dirSet = 0; // build direction set based on atom symmetry switch(symmetry[*p-'A']) { case 'B': expo = 0; // bishop, slide - case 'F': // diagonal atom (degenerate 4-fold) + case 'F': all = 0xAA; // diagonal atom (degenerate 4-fold) + if(tx >= 0) goto king; // continuation legs specified in K/Q system! while(islower(*desc) && (i = dirType[*desc-'a']) != '0') { int b = dirs1[*desc-'a']; // use wide version if( islower(desc[1]) && @@ -265,14 +289,20 @@ MovesFromString (Board board, int flags, int f, int r, char *desc, MoveCallback } else desc++; dirSet |= b; } - dirSet &= 0x99; if(!dirSet) dirSet = 0x99; + dirSet &= 0xAA; if(!dirSet) dirSet = 0xAA; break; case 'R': expo = 0; // rook, slide - case 'W': // orthogonal atom (non-deg 4-fold) + case 'W': all = 0x55; // orthogonal atom (non-deg 4-fold) + if(tx >= 0) goto king; // continuation legs specified in K/Q system! while(islower(*desc) && (dirType[*desc-'a'] & ~4) != '0') dirSet |= dirs2[*desc++-'a']; dirSet &= 0x55; if(!dirSet) dirSet = 0x55; + dirSet = (dirSet << angle | dirSet >> 8-angle) & 255; // re-orient direction system break; - case 'N': // oblique atom (degenerate 8-fold) + case 'N': all = 0xFF; // oblique atom (degenerate 8-fold) + if(tx >= 0) goto king; // continuation legs specified in K/Q system! + if(*desc == 'h') { // chiral direction sets 'hr' and 'hl' + dirSet = (desc[1] == 'r' ? 0x55 : 0xAA); desc += 2; + } else while(islower(*desc) && (i = dirType[*desc-'a']) != '0') { int b = dirs2[*desc-'a']; // when alone, use narrow version if(desc[1] == 'h') b = dirs1[*desc-'a'], desc += 2; // dirs1 is wide version @@ -286,26 +316,42 @@ MovesFromString (Board board, int flags, int f, int r, char *desc, MoveCallback if(!dirSet) dirSet = 0xFF; break; case 'Q': expo = 0; // queen, slide - case 'K': // non-deg (pseudo) 8-fold - dirSet=0x55; // start with orthogonal moves - retry = 1; // and schedule the diagonal moves for later + case 'K': all = 0xFF; // non-deg (pseudo) 8-fold + king: + while(islower(*desc) && (i = dirType[*desc-'a']) != '0') { + int b = dirs4[*desc-'a']; // when alone, use narrow version + if(desc[1] == *desc) desc++; // doubling forces alone + else if(islower(desc[1]) && i < '4' + && ((i | dirType[desc[1]-'a']) & 3) == 3) { // combinable (perpendicular dim or same) + b = dirs3[*desc-'a'] & dirs3[desc[1]-'a']; // intersect wide & perp wide + desc += 2; + } else desc++; + dirSet |= b; + } + if(!dirSet) dirSet = (tx < 0 ? 0xFF // default is all directions, but in continuation leg + : all == 0xFF ? 0xEF : 0x45); // omits backward, and for 4-fold atoms also diags + dirSet = (dirSet << angle | dirSet >> 8-angle) & 255; // re-orient direction system + ds2 = dirSet & 0xAA; // extract diagonal directions + if(dirSet &= 0x55) // start with orthogonal moves, if present + retry = 1, dx = 0; // and schedule the diagonal moves for later + else dx = dy, dirSet = ds2; // if no orthogonal directions, do diagonal immediately break; // should not have direction indicators default: return; // syntax error: invalid atom } - if(mine == 2) dirSet = dirSet >> 4 | dirSet << 4 & 255; // invert black moves + if(mine == 2 && tx < 0) dirSet = dirSet >> 4 | dirSet << 4 & 255; // invert black moves mode = 0; // build mode mask - if(*desc == 'm') mode |= 4, desc++; - if(*desc == 'c') mode |= his, desc++; - if(*desc == 'd') mode |= mine, desc++; - if(*desc == 'e') mode |= 8, desc++; - if(!mode) mode = his + 4;// no mode spec, use default = mc - if(*desc == 'p') mode |= 32, desc++; - if(*desc == 'g') mode |= 64, desc++; - if(*desc == 'o') mode |= 128, desc++; - if(*desc == 'n') jump = 0, desc++; - while(*desc == 'j') jump++, desc++; - dx = xStep[*p-'A'] - '0'; // step vector of atom - dy = yStep[*p-'A'] - '0'; + if(*desc == 'm') mode |= 4, desc++; // move to empty + if(*desc == 'c') mode |= his, desc++; // capture foe + if(*desc == 'd') mode |= mine, desc++; // destroy (capture friend) + if(*desc == 'e') mode |= 8, desc++; // e.p. capture last mover + if(*desc == 't') mode |= 16, desc++; // exclude enemies as hop platform ('test') + if(*desc == 'p') mode |= 32, desc++; // hop over occupied + if(*desc == 'g') mode |= 64, desc++; // hop and toggle range + if(*desc == 'o') mode |= 128, desc++; // wrap around cylinder board + if(*desc == 'y') mode |= 512, desc++; // toggle range on empty square + if(*desc == 'n') jump = 0, desc++; // non-jumping + while(*desc == 'j') jump++, desc++; // must jump (on B,R,Q: skip first square) + if(*desc == 'a') cont = ++desc; // move again after doing what preceded it if(isdigit(*++p)) expo = atoi(p++); // read exponent if(expo > 9) p++; // allow double-digit desc = p; // this is start of next move @@ -313,30 +359,72 @@ MovesFromString (Board board, int flags, int f, int r, char *desc, MoveCallback r == 0 && board[TOUCHED_W] & 1< 1 && dx == 0 && dy == 0) { // castling indicated by O + number - mode |= 16; dy = 1; + mode |= 1024; dy = 1; } + if(!cont) { + if(!(mode & 15)) mode |= his + 4; // no mode spec, use default = mc + } else { + strncpy(buf, cont, 80); cont = buf; // copy next leg(s), so we can modify + atom = buf; while(islower(*atom)) atom++; // skip to atom + if(mode & 32) mode ^= 256 + 32; // in non-final legs 'p' means 'pass through' + if(mode & 64 + 512) { + mode |= 256; // and 'g' too, but converts leaper <-> slider + if(mode & 512) mode ^= 0x304; // and 'y' is m-like 'g' + *atom = upgrade[*atom-'A']; // replace atom, BRQ <-> FWK + atom[1] = atom[2] = '\0'; // make sure any old range is stripped off + if(expo == 1) atom[1] = '0'; // turn other leapers into riders + } + if(!(mode & 0x30F)) mode |= 4; // and default of this leg = m + } + if(dy == 1) skip = jump - 1, jump = 1; // on W & F atoms 'j' = skip first square do { for(dir=0, bit=1; dir<8; dir++, bit += bit) { // loop over directions - int i = expo, hop = mode, vx, vy; + int i = expo, j = skip, hop = mode, vx, vy, loop = 0; if(!(bit & dirSet)) continue; // does not move in this direction + if(dy != 1) j = 0; // vx = dx*rot[dir][0] + dy*rot[dir][1]; // rotate step vector vy = dx*rot[dir][2] + dy*rot[dir][3]; - x = f; y = r; // start square - do { + if(tx < 0) x = f, y = r; // start square + else x = tx, y = ty; // from previous to-square if continuation + do { // traverse ray x += vx; y += vy; // step to next square if(y < 0 || y >= BOARD_HEIGHT) break; // vertically off-board: always done - if(x < BOARD_LEFT) { if(mode & 128) x += BOARD_RGHT - BOARD_LEFT; else break; } - if(x >= BOARD_RGHT) { if(mode & 128) x -= BOARD_RGHT - BOARD_LEFT; else break; } + if(x < BOARD_LEFT) { if(mode & 128) x += BOARD_RGHT - BOARD_LEFT, loop++; else break; } + if(x >= BOARD_RGHT) { if(mode & 128) x -= BOARD_RGHT - BOARD_LEFT, loop++; else break; } + if(j) { j--; continue; } // skip irrespective of occupation if(!jump && board[y - vy + vy/2][x - vx + vx/2] != EmptySquare) break; // blocked if(jump > 1 && board[y - vy + vy/2][x - vx + vx/2] == EmptySquare) break; // no hop - if(board[y][x] < BlackPawn) occup = 1; else - if(board[y][x] < EmptySquare) occup = 2; else + if(x == f && y == r && !loop) occup = 4; else // start square counts as empty (if not around cylinder!) + if(board[y][x] < BlackPawn) occup = 0x101; else + if(board[y][x] < EmptySquare) occup = 0x102; else occup = 4; + if(cont) { // non-final leg + if(mode&16 && his&occup) occup &= 3;// suppress hopping foe in t-mode + if(occup & mode) { // valid intermediate square, do continuation + char origAtom = *atom; + if(!(bit & all)) *atom = rotate[*atom - 'A']; // orth-diag interconversion to make direction valid + if(occup & mode & 0x104) // no side effects, merge legs to one move + MovesFromString(board, flags, f, r, x, y, dir, cont, cb, cl); + if(occup & mode & 3 && (killX < 0 || killX == x && killY == y)) { // destructive first leg + int cnt = 0; + MovesFromString(board, flags, f, r, x, y, dir, cont, &OK, &cnt); // count possible continuations + if(cnt) { // and if there are + if(killX < 0) cb(board, flags, FirstLeg, r, f, y, x, cl); // then generate their first leg + legNr <<= 1; + MovesFromString(board, flags, f, r, x, y, dir, cont, cb, cl); + legNr >>= 1; + } + } + *atom = origAtom; // undo any interconversion + } + if(occup != 4) break; // occupied squares always terminate the leg + continue; + } if(hop & 32+64) { if(occup != 4) { if(hop & 64 && i != 1) i = 2; hop &= 31; } continue; } // hopper if(mode & 8 && y == board[EP_RANK] && occup == 4 && board[EP_FILE] == x) { // to e.p. square cb(board, flags, mine == 1 ? WhiteCapturesEnPassant : BlackCapturesEnPassant, r, f, y, x, cl); } - if(mode & 16) { // castling + if(mode & 1024) { // castling i = 2; // kludge to elongate move indefinitely if(occup == 4) continue; // skip empty squares if(x == BOARD_LEFT && board[y][x] == initialPosition[y][x]) // reached initial corner piece @@ -345,12 +433,14 @@ MovesFromString (Board board, int flags, int f, int r, char *desc, MoveCallback cb(board, flags, mine == 1 ? WhiteKingSideCastle : BlackKingSideCastle, r, f, y, f + expo, cl); break; } - if(occup & mode) cb(board, flags, NormalMove, r, f, y, x, cl); // allowed, generate + if(mode & 16 && (board[y][x] == WhiteKing || board[y][x] == BlackKing)) break; // tame piece, cannot capture royal + if(occup & mode) cb(board, flags, NormalMove, r, f, y, x, cl); // allowed, generate if(occup != 4) break; // not valid transit square } while(--i); } - dx = dy = 1; dirSet = 0x99; // prepare for diagonal moves of K,Q - } while(retry--); // and start doing them + dx = dy; dirSet = ds2; // prepare for diagonal moves of K,Q + } while(retry-- && ds2); // and start doing them + if(tx >= 0) break; // don't do other atoms in continuation legs } } // next atom @@ -455,12 +545,18 @@ Sting (Board board, int flags, int rf, int ff, int dy, int dx, MoveCallback call { // Lion-like move of Horned Falcon and Souring Eagle int ft = ff + dx, rt = rf + dy; if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) return; + legNr += 2; if (!SameColor(board[rf][ff], board[rt][ft])) callback(board, flags, board[rt][ft] != EmptySquare ? FirstLeg : NormalMove, rf, ff, rt, ft, closure); + legNr -= 2; ft += dx; rt += dy; if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) return; + legNr += 2; if (!SameColor(board[rf][ff], board[rt][ft])) callback(board, flags, NormalMove, rf, ff, rt, ft, closure); + if (!SameColor(board[rf][ff], board[rf+dy][ff+dx])) + callback(board, flags, NormalMove, rf, ff, rf, ff, closure); + legNr -= 2; } void @@ -584,7 +680,7 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, piece = (ChessSquare) ( DEMOTED piece ); if(filter != EmptySquare && piece != filter) continue; if(pieceDefs && pieceDesc[piece]) { // [HGM] gen: use engine-defined moves - MovesFromString(board, flags, ff, rf, pieceDesc[piece], callback, closure); + MovesFromString(board, flags, ff, rf, -1, -1, 0, pieceDesc[piece], callback, closure); continue; } if(IS_SHOGI(gameInfo.variant)) @@ -1090,8 +1186,10 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, for(rt = rf - 2; rt <= rf + 2; rt++) for(ft = ff - 2; ft <= ff + 2; ft++) { if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) continue; if (!(ff == ft && rf == rt) && SameColor(board[rf][ff], board[rt][ft])) continue; + i = (killX >= 0 && (rt-killY)*(rt-killY) + (killX-ft)*(killX-ft) < 3); legNr += 2*i; callback(board, flags, (rt-rf)*(rt-rf) + (ff-ft)*(ff-ft) < 3 && board[rt][ft] != EmptySquare ? FirstLeg : NormalMove, rf, ff, rt, ft, closure); + legNr -= 2*i; } break; @@ -1512,6 +1610,7 @@ CheckTest (Board board, int flags, int rf, int ff, int rt, int ft, int enPassant CheckTestClosure cl; ChessSquare king = flags & F_WHITE_ON_MOVE ? WhiteKing : BlackKing; ChessSquare captured = EmptySquare, ep=0, trampled=0; + int saveKill = killX; /* Suppress warnings on uninitialized variables */ if(gameInfo.variant == VariantXiangqi) @@ -1534,11 +1633,11 @@ CheckTest (Board board, int flags, int rf, int ff, int rt, int ft, int enPassant board[rf][ft] = EmptySquare; } else { captured = board[rt][ft]; - if(killX >= 0) { trampled = board[killY][killX]; board[killY][killX] = EmptySquare; } + if(killX >= 0) { trampled = board[killY][killX]; board[killY][killX] = EmptySquare; killX = -1; } } if(rf == DROP_RANK) board[rt][ft] = ff; else { // [HGM] drop board[rt][ft] = board[rf][ff]; - board[rf][ff] = EmptySquare; + if(rf != rt || ff != ft) board[rf][ff] = EmptySquare; } ep = board[EP_STATUS]; if( captured == WhiteLion || captured == BlackLion ) { // [HGM] lion: Chu Lion-capture rules @@ -1582,7 +1681,7 @@ CheckTest (Board board, int flags, int rf, int ff, int rt, int ft, int enPassant board[rf][ft] = captured; board[rt][ft] = EmptySquare; } else { - if(killX >= 0) board[killY][killX] = trampled; + if(saveKill >= 0) board[killY][killX] = trampled, killX = saveKill; board[rt][ft] = captured; } board[EP_STATUS] = ep; @@ -1663,7 +1762,7 @@ LegalityTest (Board board, int flags, int rf, int ff, int rt, int ft, int promoC /* [HGM] Cobra and Falcon are wildcard pieces; consider all their moves legal */ /* (perhaps we should disallow moves that obviously leave us in check?) */ if((piece == WhiteFalcon || piece == BlackFalcon || - piece == WhiteCobra || piece == BlackCobra) && gameInfo.variant != VariantChu) + piece == WhiteCobra || piece == BlackCobra) && gameInfo.variant != VariantChu && !pieceDesc[piece]) return CheckTest(board, flags, rf, ff, rt, ft, FALSE) ? IllegalMove : NormalMove; cl.rf = rf; diff --git a/moves.h b/moves.h index c08544e..6be5299 100644 --- a/moves.h +++ b/moves.h @@ -178,4 +178,4 @@ ChessMove CoordsToAlgebraic P((Board board, int flags, int rf, int ff, int rt, int ft, int promoChar, char out[MOVE_LEN])); -extern int quickFlag, killX, killY; +extern int quickFlag, killX, killY, legNr; diff --git a/themes/shogi/BlackAdvisor.svg b/themes/shogi/BlackAdvisor.svg index d901182..1843653 100644 --- a/themes/shogi/BlackAdvisor.svg +++ b/themes/shogi/BlackAdvisor.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3703" version="1.1" - width="128" - height="128" - id="svg2" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackAdvisor.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + inkscape:current-layer="g3713" /> + id="g3713"> - - - - - - - - - - - + id="g3039"> + id="path3717" + d="m 193.50633,412.36873 c -32.44652,-11.80084 -59.38801,-21.85041 -59.86998,-22.33238 -0.48196,-0.48196 -13.65317,-75.94981 -29.26934,-167.70632 L 75.973971,55.5 76.236986,38.5 76.5,21.5 254.89422,21.247246 c 138.63089,-0.196416 178.71993,0.01756 179.85548,0.95999 1.21853,1.011283 1.37731,4.209548 0.95582,19.252754 -0.49094,17.521974 -1.25178,22.773539 -26.49522,182.87975 -14.29438,90.66185 -26.37689,165.22208 -26.85004,165.6894 -1.53317,1.51428 -124.74436,43.97369 -127.343,43.88326 -1.38449,-0.0482 -29.06441,-9.74283 -61.51093,-21.54367 z" + style="fill:#d3bc5f" /> + transform="matrix(-1.0066378,0,0,-1.0066378,-16.987894,373.40945)" + id="g3160"> - - - - - - - - - - - - + sodipodi:nodetypes="csssssscsssscssssssscsccsscssssssssssscsssssssssssssssssscssssssscsssssscscssssssssssssssssssssssscsssscscsssssccsssssssssssssssssssssssssscssccssssssssss" /> + diff --git a/themes/shogi/BlackBishop.svg b/themes/shogi/BlackBishop.svg index 951cfe2..1388c5e 100644 --- a/themes/shogi/BlackBishop.svg +++ b/themes/shogi/BlackBishop.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="128" - height="128" id="svg2" - inkscape:version="0.48.3.1 r9886" + version="1.1" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackBishop.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + id="g3058"> + - - - - - - + transform="matrix(-1.0248367,0,0,-1.0248367,947.91463,499.28528)" + id="g3419"> - - - - - - - - - - - - - - + sodipodi:nodetypes="sssscsscsscssssssscssssssccccsssssssssccssssssssssssssssssssssssssssssssssssssssscssssccssssssssssscs" /> + diff --git a/themes/shogi/BlackCrownedBishop.svg b/themes/shogi/BlackCrownedBishop.svg index bf680b0..418720c 100644 --- a/themes/shogi/BlackCrownedBishop.svg +++ b/themes/shogi/BlackCrownedBishop.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="128" - height="128" id="svg2" - inkscape:version="0.48.3.1 r9886" + version="1.1" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackCrownedBishop.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + inkscape:current-layer="g2987" /> + id="g2987"> + id="g3069"> + + + + id="path2991" + d="m 193,437.57176 c -33.825,-11.17923 -62.27929,-20.9437 -63.23175,-21.69882 -1.3974,-1.10786 -7.5275,-35.88006 -31.750002,-180.09769 L 68,57.050498 68,40.725249 C 68,29.361166 68.364674,24.035326 69.2,23.2 70.124671,22.275329 112.78183,22 255.11821,22 c 101.59502,0 185.43002,0.273145 186.3,0.606989 C 442.78115,23.129996 443,25.755121 443,41.580463 l 0,18.366485 -27.55185,177.276522 c -15.5708,100.18706 -28.07286,177.79074 -28.75,178.45902 -1.02945,1.01599 -124.10743,40.54934 -130.05047,41.77295 C 255.46646,457.69865 226.825,448.75099 193,437.57176 z M 318.516,412.4444 c 33.5412,-11.30558 61.28442,-20.86808 61.65159,-21.25 C 381.22075,390.09896 432.29733,35.217213 431.6461,33.520123 431.12722,32.167951 411.67574,32 255.5904,32 159.0806,32 79.888424,32.371516 79.60779,32.825592 c -0.830631,1.343989 54.90307,357.085268 56.13769,358.319888 1.52182,1.52182 116.0797,41.62567 119.27052,41.75362 1.3838,0.0555 29.9588,-9.14912 63.5,-20.4547 z" + style="fill:#f31a15" /> + id="path2989" + d="m 193,437.57176 c -33.825,-11.17923 -62.27929,-20.9437 -63.23175,-21.69882 -1.3974,-1.10786 -7.5275,-35.88006 -31.750002,-180.09769 L 68,57.050498 68,40.725249 C 68,29.361166 68.364674,24.035326 69.2,23.2 70.124671,22.275329 112.78183,22 255.11821,22 c 101.59502,0 185.43002,0.273145 186.3,0.606989 C 442.78115,23.129996 443,25.755121 443,41.580463 l 0,18.366485 -27.55185,177.276522 c -15.5708,100.18706 -28.07286,177.79074 -28.75,178.45902 -1.02945,1.01599 -124.10743,40.54934 -130.05047,41.77295 C 255.46646,457.69865 226.825,448.75099 193,437.57176 z M 318.516,412.4444 c 33.5412,-11.30558 61.28442,-20.86808 61.65159,-21.25 C 381.22075,390.09896 432.29733,35.217213 431.6461,33.520123 431.12722,32.167951 411.67574,32 255.5904,32 159.0806,32 79.888424,32.371516 79.60779,32.825592 c -0.830631,1.343989 54.90307,357.085268 56.13769,358.319888 1.52182,1.52182 116.0797,41.62567 119.27052,41.75362 1.3838,0.0555 29.9588,-9.14912 63.5,-20.4547 z" + style="fill:#131210" /> + transform="matrix(-1.0721232,0,0,-1.0721232,989.4948,519.82746)" + id="g3006"> - - - - - + sodipodi:nodetypes="sssssscsssssssscsssssssssssssssssssssssscsssssssssssssssssssssssssssssssssssssssscsssssssssssscs" /> - diff --git a/themes/shogi/BlackCrownedRook.svg b/themes/shogi/BlackCrownedRook.svg index ef8e231..428de4b 100644 --- a/themes/shogi/BlackCrownedRook.svg +++ b/themes/shogi/BlackCrownedRook.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="128" - height="128" id="svg2" - inkscape:version="0.48.3.1 r9886" + version="1.1" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackCrownedRook.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + id="g3301"> + + transform="matrix(-1,0,0,-1,-116.69019,482.84403)" + id="g3246"> - - - - - + sodipodi:nodetypes="ssssssssscsssssssssssssssscssssssssscssscsscsscsssssscssscssssssssssccscsssscssssssssssscssssscssssssccssc" /> + + + + - - - - - - - - - - + id="g10964" + transform="matrix(-1,0,0,-1,126.50341,125.35865)" + style="fill:#ff0000"> + + diff --git a/themes/shogi/BlackElephant.svg b/themes/shogi/BlackElephant.svg new file mode 100644 index 0000000..c23e65d --- /dev/null +++ b/themes/shogi/BlackElephant.svg @@ -0,0 +1,65 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/themes/shogi/BlackGold.svg b/themes/shogi/BlackGold.svg index 3533092..54f6d71 100644 --- a/themes/shogi/BlackGold.svg +++ b/themes/shogi/BlackGold.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3404" version="1.1" - width="128" - height="128" - id="svg2" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackGold.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + inkscape:current-layer="g3414" /> + id="g3414"> + id="g3078"> + id="path3418" + d="m 193.50633,412.36873 c -32.44652,-11.80084 -59.38801,-21.85041 -59.86998,-22.33238 -0.48196,-0.48196 -13.65317,-75.94981 -29.26934,-167.70632 L 75.973971,55.5 76.236986,38.5 76.5,21.5 254.89422,21.247246 c 138.63089,-0.196416 178.71993,0.01756 179.85548,0.95999 1.21853,1.011283 1.37731,4.209548 0.95582,19.252754 -0.49094,17.521974 -1.25178,22.773539 -26.49522,182.87975 -14.29438,90.66185 -26.37689,165.22208 -26.85004,165.6894 -1.53317,1.51428 -124.74436,43.97369 -127.343,43.88326 -1.38449,-0.0482 -29.06441,-9.74283 -61.51093,-21.54367 z" + style="fill:#d3bc5f" /> + transform="matrix(-1.0897825,0,0,-1.0897825,-142.85243,511.80415)" + id="g3097"> - - - - - - - - - - - - - - - - - - - - - - - - - - + sodipodi:nodetypes="cssccsssssssssssssssscsssssssssssssssscccscccsssssscssscsssssssssscssccsssssssssssssssssssssssscsscsssssssscsssssssssssccsssscsss" /> + diff --git a/themes/shogi/BlackGoldKnight.svg b/themes/shogi/BlackGoldKnight.svg index f6fcd78..5074be6 100644 --- a/themes/shogi/BlackGoldKnight.svg +++ b/themes/shogi/BlackGoldKnight.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3127" version="1.1" - width="128" - height="128" - id="svg2" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.4 r9939" + width="512" + height="512" sodipodi:docname="BlackGoldKnight.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + inkscape:current-layer="g3137" /> + id="g3137"> + style="fill:#d3bc5f" + d="M 197.03171,393.67676 C 143.42698,374.80404 142.55058,374.45244 141.75365,371.5 141.30828,369.85 129.47357,296.95 115.4543,209.5 L 89.964719,50.5 90.232359,36 90.5,21.5 253.89392,21.246998 c 119.93355,-0.185707 163.75462,0.04635 164.75,0.872445 1.00568,0.834643 1.35454,4.259074 1.35011,13.253002 -0.005,10.4975 -3.15042,34.01616 -23.40055,174.978105 -12.86702,89.5678 -23.78444,163.24041 -24.26095,163.71692 -1.38761,1.38761 -115.88342,38.94013 -118.48006,38.85929 -1.29386,-0.0403 -26.8632,-8.70279 -56.82076,-19.25 z" + id="path3143" + inkscape:connector-curvature="0" /> + style="fill:#f21511" + d="m 199.5,392.89708 c -29.7,-10.43789 -54.54384,-19.52227 -55.20852,-20.18753 -0.67782,-0.67839 -12.64432,-72.46473 -27.25,-163.47108 C 94.106844,66.335335 91,45.630183 91,35.68847 91,28.241882 91.408404,23.991596 92.2,23.2 93.123378,22.276622 130.44849,22 254.11821,22 c 88.39502,0 161.43002,0.273145 162.3,0.606989 1.33382,0.511833 1.58179,2.713998 1.58179,14.04745 0,12.221736 -2.09168,28.010402 -23.06766,174.122081 -12.68722,88.37489 -23.5261,161.234 -24.08641,161.90913 -0.79979,0.96369 -115.67129,39.49889 -117.00788,39.25188 C 253.65212,411.90317 229.2,403.33497 199.5,392.89708 z m 109.14641,-18.94804 c 29.06948,-9.92803 53.47939,-18.66991 54.24426,-19.42639 C 364.43,353.0002 407.59331,35.988527 406.61013,33.426393 406.13947,32.199889 384.83599,32 254.5904,32 c -83.3098,0 -151.68139,0.338208 -151.93686,0.751574 -0.91146,1.474772 48.17691,321.525606 49.4337,322.302346 0.67417,0.41666 20.84284,7.85443 44.81926,16.52837 23.97643,8.67395 46.2935,16.79437 49.5935,18.04538 3.3,1.25102 6.74089,2.29657 7.64641,2.32345 0.90553,0.0269 25.43053,-8.07405 54.5,-18.00208 z M 256.5,322.13672 c -8.4007,-2.47469 -12.27737,-4.72363 -14.54048,-8.43527 -2.8016,-4.59476 -2.45138,-6.88846 1.84577,-12.08861 4.45572,-5.39204 12.60575,-20.25079 11.4737,-20.91831 -0.42845,-0.25264 -2.35399,-0.78563 -4.27899,-1.18444 -10.91134,-2.26053 -26.02221,-15.76363 -43.75574,-39.1002 -10.9544,-14.41553 -21.78255,-25.02315 -33.86612,-33.17641 -4.88297,-3.29473 -11.05528,-7.91825 -13.71624,-10.27449 -5.35347,-4.74041 -14.92871,-17.71827 -14.08272,-19.08711 0.8683,-1.40493 22.30687,-0.96724 29.7371,0.60712 3.74896,0.79436 8.69896,2.48199 11,3.75031 5.96536,3.28806 16.37573,16.74146 25.85824,33.41677 8.69837,15.29638 17.78739,28.03302 27.13736,38.02817 6.33354,6.77057 18.25846,15.33427 21.3226,15.31249 1.37391,-0.01 3.68647,-3.50143 8.77556,-13.25 9.38125,-17.97053 23.84515,-43.71637 29.34636,-52.23674 2.48578,-3.85 9.51999,-11.99223 15.63159,-18.09384 11.9439,-11.92436 19.4741,-16.59492 28.61201,-17.74639 5.34034,-0.67293 12.18307,0.38945 12.71109,1.9735 0.20644,0.61932 -1.76954,2.38302 -4.39107,3.91934 -6.30636,3.69577 -17.69662,12.99299 -23.41334,19.11098 -12.58129,13.46437 -38.36987,58.54454 -55.11026,96.33641 -8.91054,20.11578 -8.69844,19.02987 -4.9079,25.12757 4.26095,6.85443 3.90526,9.30706 -1.38852,9.57453 -2.2,0.11116 -6.7,-0.59327 -10,-1.56538 z M 242.18467,237.06713 C 235.29366,235.31856 231,228.98252 231,220.5622 c 0,-5.31459 0.15127,-5.6326 3.764,-7.91322 C 238.92616,210.02152 248.60613,205 249.50891,205 c 0.31647,0 -0.56857,1.95204 -1.96676,4.33786 -1.39818,2.38582 -2.54215,4.61128 -2.54215,4.94547 0,0.33419 3.2625,2.31888 7.25,4.41043 8.49943,4.45816 17.10392,12.22174 16.58129,14.96079 -0.2663,1.39566 -1.56824,1.99176 -5.34171,2.44574 -12.29661,1.47938 -18.22479,1.74841 -21.30491,0.96684 z m -4.48668,-37.51107 C 228.71592,196.35222 223,190.11632 223,183.52098 c 0,-3.18469 6.79296,-24.08125 10.54889,-32.45058 2.54785,-5.67737 2.69084,-6.56849 1.51161,-9.42046 -5.29037,-12.79474 -3.95865,-17.9458 7.72685,-29.88743 4.70824,-4.81143 8.27792,-9.03058 7.93261,-9.37588 -0.3453,-0.3453 -5.71105,0.1046 -11.92389,0.99978 -15.04505,2.16777 -18.45876,2.11238 -19.76089,-0.32067 -2.61011,-4.877037 -1.38511,-6.246201 8.96482,-10.019819 3.025,-1.102926 9.06774,-4.489455 13.42831,-7.52562 C 245.78887,82.484135 250.21941,80 251.27394,80 c 2.8702,0 7.06975,3.374017 13.2138,10.616269 7.27159,8.571342 7.27534,10.480141 0.0329,16.732791 C 259.24091,111.90728 253,119.77561 253,121.87394 c 0,0.55748 1.9125,0.1772 4.25,-0.84507 17.83495,-7.79985 33.66161,0.76537 33.72804,18.25325 0.0366,9.64832 -4.14557,16.67283 -12.47804,20.95827 -6.134,3.15476 -18.21754,2.89137 -25.45097,-0.55476 -4.35446,-2.07453 -5.74345,-2.3544 -6.90491,-1.39128 -3.84371,3.18735 -5.70669,14.89206 -2.56233,16.09866 0.86998,0.33385 8.05332,0.60699 15.96298,0.60699 12.20137,0 15.18257,0.31513 19.66821,2.07902 9.86245,3.87822 11.90252,7.92098 3.99712,7.92098 -9.80376,0 -18.94392,3.38335 -31.34458,11.60261 -7.17284,4.75422 -8.40116,5.01028 -14.16753,2.95345 z m 30.38867,-50.83786 c 2.93786,-2.25562 4.09423,-5.67891 3.39249,-10.04306 -1.96659,-12.23033 -9.9569,-11.47615 -15.97235,1.50758 -1.32013,2.84937 -2.1452,5.59335 -1.83347,6.09773 1.87692,3.03693 11.51071,4.66631 14.41333,2.43775 z" + id="path3141" + inkscape:connector-curvature="0" /> - - - - - + style="fill:#151412" + d="m 199.5,392.89708 c -29.7,-10.43789 -54.54384,-19.52227 -55.20852,-20.18753 -0.67782,-0.67839 -12.64432,-72.46473 -27.25,-163.47108 C 94.106844,66.335335 91,45.630183 91,35.68847 91,28.241882 91.408404,23.991596 92.2,23.2 93.123378,22.276622 130.44849,22 254.11821,22 c 88.39502,0 161.43002,0.273145 162.3,0.606989 1.33382,0.511833 1.58179,2.713998 1.58179,14.04745 0,12.221736 -2.09168,28.010402 -23.06766,174.122081 -12.68722,88.37489 -23.5261,161.234 -24.08641,161.90913 -0.79979,0.96369 -115.67129,39.49889 -117.00788,39.25188 C 253.65212,411.90317 229.2,403.33497 199.5,392.89708 z m 109.14641,-18.94804 c 29.06948,-9.92803 53.47939,-18.66991 54.24426,-19.42639 C 364.43,353.0002 407.59331,35.988527 406.61013,33.426393 406.13947,32.199889 384.83599,32 254.5904,32 c -83.3098,0 -151.68139,0.338208 -151.93686,0.751574 -0.91146,1.474772 48.17691,321.525606 49.4337,322.302346 0.67417,0.41666 20.84284,7.85443 44.81926,16.52837 23.97643,8.67395 46.2935,16.79437 49.5935,18.04538 3.3,1.25102 6.74089,2.29657 7.64641,2.32345 0.90553,0.0269 25.43053,-8.07405 54.5,-18.00208 z" + id="path3139" + inkscape:connector-curvature="0" /> diff --git a/themes/shogi/BlackGoldLance.svg b/themes/shogi/BlackGoldLance.svg index b302666..02050fc 100644 --- a/themes/shogi/BlackGoldLance.svg +++ b/themes/shogi/BlackGoldLance.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3247" version="1.1" - width="128" - height="128" - id="svg2" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackGoldLance.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + inkscape:current-layer="g3257" /> - + id="g3257"> - - + id="g3935"> + id="path3263" + d="m 202.64926,375.07216 c -28.51791,-10.36479 -52.44908,-19.45867 -53.18039,-20.20862 -0.82918,-0.85031 -10.58815,-58.42782 -25.92758,-152.97169 L 98.943356,50.283702 99.221678,35.891851 99.5,21.5 254.89374,21.246847 c 114.01825,-0.185748 155.75486,0.04655 156.75,0.872445 1.00598,0.834888 1.35455,4.257792 1.34964,13.253153 -0.006,10.555037 -2.9097,32.011119 -22.39574,165.473295 -12.31402,84.34016 -22.77354,153.72848 -23.24338,154.19627 -0.87775,0.8739 -110.63726,38.99099 -112.06173,38.9166 -0.43589,-0.0228 -24.12536,-8.52167 -52.64327,-18.88645 z" + style="fill:#d3bc5f" /> + + + + id="path3261" + d="M 202.01827,373.18144 C 155.67821,356.33603 150.45761,354.21891 149.74625,351.98347 149.31159,350.61756 137.94087,281.42862 124.47798,198.23028 102.89406,64.845374 100,45.626872 100,35.680277 100,28.240062 100.40851,23.991493 101.2,23.2 102.12286,22.277143 137.67071,22 255.11821,22 c 83.99502,0 153.43002,0.273145 154.3,0.606989 C 410.75195,23.118792 411,25.32013 411,36.644722 c 0,12.263795 -1.9161,26.569029 -22.05298,164.643008 -12.65935,86.80232 -22.56286,151.72912 -23.25,152.42566 -1.44623,1.46602 -107.81533,38.30858 -110.38801,38.23457 -0.99495,-0.0286 -24.97579,-8.47355 -53.29074,-18.76652 z M 307.1768,355.34385 c 28.45098,-9.71089 51.93606,-18.19557 52.18904,-18.85484 1.03982,-2.70972 40.75097,-301.742227 40.24582,-303.058631 C 399.13916,32.199071 379.09523,32 255.5904,32 c -78.9098,0 -143.68382,0.342135 -143.94226,0.760299 -0.44605,0.721723 44.81969,299.987081 45.88051,303.329801 0.3361,1.05907 16.61282,7.4569 48.73799,19.15729 26.52835,9.66195 48.4466,17.6089 48.70722,17.6599 0.26063,0.051 23.75195,-7.85256 52.20294,-17.56344 z" + style="fill:#f21612" /> + id="path3259" + d="M 202.01827,373.18144 C 155.67821,356.33603 150.45761,354.21891 149.74625,351.98347 149.31159,350.61756 137.94087,281.42862 124.47798,198.23028 102.89406,64.845374 100,45.626872 100,35.680277 100,28.240062 100.40851,23.991493 101.2,23.2 102.12286,22.277143 137.67071,22 255.11821,22 c 83.99502,0 153.43002,0.273145 154.3,0.606989 C 410.75195,23.118792 411,25.32013 411,36.644722 c 0,12.263795 -1.9161,26.569029 -22.05298,164.643008 -12.65935,86.80232 -22.56286,151.72912 -23.25,152.42566 -1.44623,1.46602 -107.81533,38.30858 -110.38801,38.23457 -0.99495,-0.0286 -24.97579,-8.47355 -53.29074,-18.76652 z M 307.1768,355.34385 c 28.45098,-9.71089 51.93606,-18.19557 52.18904,-18.85484 1.03982,-2.70972 40.75097,-301.742227 40.24582,-303.058631 C 399.13916,32.199071 379.09523,32 255.5904,32 c -78.9098,0 -143.68382,0.342135 -143.94226,0.760299 -0.44605,0.721723 44.81969,299.987081 45.88051,303.329801 0.3361,1.05907 16.61282,7.4569 48.73799,19.15729 26.52835,9.66195 48.4466,17.6089 48.70722,17.6599 0.26063,0.051 23.75195,-7.85256 52.20294,-17.56344 z" + style="fill:#151412" /> diff --git a/themes/shogi/BlackGoldPawn.svg b/themes/shogi/BlackGoldPawn.svg index 58c4141..6ff495f 100644 --- a/themes/shogi/BlackGoldPawn.svg +++ b/themes/shogi/BlackGoldPawn.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3335" version="1.1" - width="128" - height="128" - id="svg2" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackGoldPawn.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + inkscape:current-layer="g3355" /> + id="g3355"> + id="g4065"> + + id="path3359" + d="M 207.21596,355.12222 C 181.75974,345.33756 160.52966,336.91974 160.038,336.41596 159.54635,335.91218 148.76166,270.59251 136.07204,191.26113 115.83712,64.759019 113,45.63136 113,35.711133 113,28.246918 113.40812,23.99188 114.2,23.2 115.12188,22.278118 147.78183,22 255.11821,22 c 76.84502,0 140.43002,0.273145 141.3,0.606989 C 397.75259,23.119037 398,25.32713 398,36.724143 c 0,12.15881 -2.00694,27.777027 -20.06434,156.143007 -14.35996,102.08173 -20.46318,142.94168 -21.4672,143.71911 -1.97425,1.52869 -99.0876,36.42331 -101.2194,36.37 -0.96198,-0.0241 -22.57688,-8.04938 -48.0331,-17.83404 z m 95.24558,-17.63448 c 25.82884,-9.08095 47.35813,-16.90741 47.84286,-17.39214 1.13128,-1.13128 37.05874,-284.706893 36.31601,-286.642425 C 386.13666,32.19255 368.77483,32 255.5904,32 c -71.7598,0 -130.68273,0.340378 -130.93984,0.756395 -0.75565,1.222669 41.03911,286.333275 42.13458,287.428745 0.74407,0.74407 85.4361,33.10316 88.21486,33.70509 0.275,0.0596 21.63269,-7.32155 47.46154,-16.40249 z" + style="fill:#f01713" /> + transform="matrix(-1.5626356,0,0,-1.1267045,1248.9614,529.82455)" + id="g4026"> - + sodipodi:nodetypes="ssssscsscsssssss" /> + diff --git a/themes/shogi/BlackGoldSilver.svg b/themes/shogi/BlackGoldSilver.svg index 167ceb6..22bf26c 100644 --- a/themes/shogi/BlackGoldSilver.svg +++ b/themes/shogi/BlackGoldSilver.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3497" version="1.1" - width="128" - height="128" - id="svg2" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackGoldSilver.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + inkscape:current-layer="g3507" /> + id="g3507"> - + id="g3780"> + id="g3289"> + style="fill:#d3bc5f" + d="m 193.50633,412.36873 c -32.44652,-11.80084 -59.38801,-21.85041 -59.86998,-22.33238 -0.48196,-0.48196 -13.65317,-75.94981 -29.26934,-167.70632 L 75.973971,55.5 76.236986,38.5 76.5,21.5 254.89422,21.247246 c 138.63089,-0.196416 178.71993,0.01756 179.85548,0.95999 1.21853,1.011283 1.37731,4.209548 0.95582,19.252754 -0.49094,17.521974 -1.25178,22.773539 -26.49522,182.87975 -14.29438,90.66185 -26.37689,165.22208 -26.85004,165.6894 -1.53317,1.51428 -124.74436,43.97369 -127.343,43.88326 -1.38449,-0.0482 -29.06441,-9.74283 -61.51093,-21.54367 z" + id="path3513" + inkscape:connector-curvature="0" /> + + sodipodi:nodetypes="sssssssssscssssssscs" /> - - + style="fill:#151412" + d="M 195.5266,411.42227 C 163.09124,399.63 135.99659,389.42338 135.31627,388.74089 134.61967,388.04207 121.61209,314.25244 105.53966,219.82368 77.582135,55.567528 77,51.864378 77,38.273683 77,28.816374 77.381993,24.018007 78.2,23.2 79.124228,22.275772 119.78183,22 255.11821,22 c 96.64502,0 176.43002,0.273145 177.3,0.606989 1.35077,0.51834 1.58179,2.933231 1.58179,16.535044 0,15.908587 -0.0318,16.131226 -26.04561,182.143007 -14.70096,93.81689 -26.57021,166.74008 -27.25,167.42056 -1.06444,1.06551 -124.14998,44.39873 -125.62081,44.22578 -0.32097,-0.0377 -27.12161,-9.71684 -59.55698,-21.50911 z m 119.20039,-18.5167 c 31.77516,-10.50194 58.29161,-19.61444 58.92545,-20.25 1.31913,-1.32271 49.76778,-337.11812 48.94779,-339.254965 C 422.14242,32.20756 397.39275,32 255.5904,32 164.0306,32 88.910146,32.3375 88.656061,32.75 c -0.614338,0.997359 52.086169,337.34307 53.143679,339.1741 0.80279,1.39001 110.00472,39.92397 113.42725,40.02495 0.94985,0.028 27.72485,-8.54155 59.5,-19.04348 z" + id="path3509" + inkscape:connector-curvature="0" /> + + + sodipodi:nodetypes="csssssssssssssssssssssssssssssssssccsscsssscssssss" /> diff --git a/themes/shogi/BlackJewled.svg b/themes/shogi/BlackJewled.svg new file mode 100644 index 0000000..279fb99 --- /dev/null +++ b/themes/shogi/BlackJewled.svg @@ -0,0 +1,88 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/shogi/BlackKing.svg b/themes/shogi/BlackKing.svg index 8a81396..44ffa0e 100644 --- a/themes/shogi/BlackKing.svg +++ b/themes/shogi/BlackKing.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3862" version="1.1" - width="128" - height="128" - id="svg2" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackKing.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + inkscape:current-layer="g3872" /> + id="g3872"> - + id="g3415"> + id="g3079"> + - - - - - - - - - - - - + sodipodi:nodetypes="ssscssssscssssssssssscs" /> - - - + transform="matrix(-1.0827996,0,0,-1.0827996,-32.872152,470.92258)" + id="g3344"> + sodipodi:nodetypes="ssscccssssssssssssssssssssssssssssssssssssssscsssssssssssssscsssssssssssssssssssscccccssssssssssssscsssss" /> diff --git a/themes/shogi/BlackKnight.svg b/themes/shogi/BlackKnight.svg index ddf04fa..5e17af1 100644 --- a/themes/shogi/BlackKnight.svg +++ b/themes/shogi/BlackKnight.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3980" version="1.1" - width="128" - height="128" - id="svg2" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackKnight.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + inkscape:current-layer="g3990" /> - - - - - - - - - - - - - + id="g3990"> - - - - - - - - - - + id="g3674"> + + + + + diff --git a/themes/shogi/BlackLance.svg b/themes/shogi/BlackLance.svg index 21b61cf..17b4094 100644 --- a/themes/shogi/BlackLance.svg +++ b/themes/shogi/BlackLance.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg4082" version="1.1" - width="128" - height="128" - id="svg2" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackLance.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + inkscape:current-layer="g4092" /> - - - - - - - - - - - + id="g4092"> - - - - - - - - - - + id="g3858"> + + + + + diff --git a/themes/shogi/BlackPawn.svg b/themes/shogi/BlackPawn.svg index a569b39..ec868b8 100644 --- a/themes/shogi/BlackPawn.svg +++ b/themes/shogi/BlackPawn.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="128" - height="128" id="svg2" - inkscape:version="0.48.3.1 r9886" + version="1.1" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackPawn.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + inkscape:current-layer="g2987" /> + id="g2987"> - - - - - - - + id="g3129"> + id="path2991" + d="M 207.01633,356.66921 C 167.01924,341.2986 159.33758,338.03357 158.29539,335.96078 157.61488,334.60735 146.90742,269.75492 134.50102,191.84427 L 111.94394,50.188539 112.22197,35.84427 112.5,21.5 254.8934,21.246565 c 104.40586,-0.185823 142.75531,0.04693 143.75,0.872445 1.00657,0.835378 1.35449,4.255058 1.34843,13.253435 -0.007,10.350027 -2.99087,33.280816 -20.35821,156.450055 -14.05048,99.64604 -20.78088,144.73734 -21.74183,145.66262 -1.26334,1.21645 -100.8226,37.57078 -102.62367,37.47331 -0.42247,-0.0229 -22.13577,-8.25301 -48.25179,-18.28922 z" + style="fill:#d3bc5f" /> + transform="matrix(-0.92627741,0,0,-0.92627741,150.81532,455.04764)" + id="g3962"> - - - - - + sodipodi:nodetypes="ssssssssssssssscscsssscsssscscsscsssssssssssssssssssssssssssssssssssssssssssscsssssssssssss" /> + diff --git a/themes/shogi/BlackPrince.svg b/themes/shogi/BlackPrince.svg new file mode 100644 index 0000000..a0aa63a --- /dev/null +++ b/themes/shogi/BlackPrince.svg @@ -0,0 +1,70 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/themes/shogi/BlackRook.svg b/themes/shogi/BlackRook.svg index 0bf20ff..d0031a1 100644 --- a/themes/shogi/BlackRook.svg +++ b/themes/shogi/BlackRook.svg @@ -9,12 +9,26 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3585" version="1.1" - width="128" - height="128" - id="svg2" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" sodipodi:docname="BlackRook.svg"> + + + + image/svg+xml + + + + + + - - - - - image/svg+xml - - - - + inkscape:current-layer="g3595" /> + id="g3595"> - + id="g3501"> - + id="path3599" + d="m 191.5,438.65982 c -33.55,-11.1077 -61.74965,-20.49658 -62.66589,-20.86416 -1.03366,-0.41469 -2.06811,-2.68494 -2.72573,-5.982 -0.58292,-2.92251 -14.13065,-83.22962 -30.10607,-178.46024 L 66.95609,60.206845 67.228045,40.853422 67.5,21.5 254.89438,21.247376 c 145.1305,-0.195648 187.72217,0.01943 188.84782,0.953628 1.21488,1.008264 1.37377,4.578622 0.96808,21.752624 L 444.22492,64.5 416.72433,240.33813 c -15.12532,96.71097 -27.88843,176.21676 -28.36246,176.67953 -1.44985,1.41541 -130.43309,41.98731 -133.23777,41.91017 -1.44326,-0.0397 -30.0741,-9.1603 -63.6241,-20.26801 z" + style="fill:#d3bc5f" /> - + transform="matrix(-1.0130742,0,0,-1.0130742,983.16991,499.20075)" + id="g3447"> - - - + sodipodi:nodetypes="sscsssssssssssssssssssssssssscsssssscssssssssssssscsssssssssssscsssssssssssssssssssssssssssssssssssssssssssssscsssssssssssccssssssssscs" /> - - - - - - - - - - - - + id="path3597" + d="m 193,437.57176 c -33.825,-11.17923 -62.27929,-20.9437 -63.23175,-21.69882 -1.3974,-1.10786 -7.5275,-35.88006 -31.750002,-180.09769 L 68,57.050498 68,40.725249 C 68,29.361166 68.364674,24.035326 69.2,23.2 70.124671,22.275329 112.78183,22 255.11821,22 c 101.59502,0 185.43002,0.273145 186.3,0.606989 C 442.78115,23.129996 443,25.755121 443,41.580463 l 0,18.366485 -27.55185,177.276522 c -15.5708,100.18706 -28.07286,177.79074 -28.75,178.45902 -1.02945,1.01599 -124.10743,40.54934 -130.05047,41.77295 C 255.46646,457.69865 226.825,448.75099 193,437.57176 z m 125.16391,-25.1264 c 36.41114,-12.13702 61.88476,-21.12982 62.20301,-21.95915 1.13346,-2.95375 51.75647,-355.722265 51.24002,-357.068127 C 431.14006,32.201427 406.13831,32 255.5904,32 159.0806,32 79.905887,32.343261 79.646597,32.762801 c -0.737722,1.19366 54.965823,357.249619 56.061743,358.345539 1.11795,1.11795 117.00987,41.76816 119.2916,41.84267 0.82496,0.0269 29.24875,-9.2006 63.16397,-20.50565 z" + style="fill:#12110f" /> diff --git a/themes/shogi/WhiteAdvisor.svg b/themes/shogi/WhiteAdvisor.svg index 6103a6c..17f0404 100644 --- a/themes/shogi/WhiteAdvisor.svg +++ b/themes/shogi/WhiteAdvisor.svg @@ -7,157 +7,73 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg4825" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteAdvisor.svg"> + id="metadata4831"> image/svg+xml + + + + id="g4835"> - + id="g3019"> - - - - - - - - - - + id="path4839" + d="m 81.239624,479.75 c -0.552897,-0.6875 -1.995733,-4.4 -3.206303,-8.25 l -2.201037,-7 25.083856,-177.09934 C 114.71226,189.99602 126,109.79936 126,109.18584 c 0,-0.61351 0.91337,-1.60429 2.02972,-2.20174 C 131.74047,104.99816 253.45469,63 255.49934,63 c 1.10517,0 29.23041,9.814635 62.50053,21.8103 51.98803,18.74448 60.66289,22.15324 61.71306,24.25 0.67205,1.34183 13.42558,81.97027 28.34115,179.17429 l 27.11924,176.73459 -2.21977,6.76541 c -1.22087,3.72098 -2.66497,7.32791 -3.2091,8.01541 C 428.9598,480.74138 392.90978,481 255.5,481 118.09872,481 82.036857,480.74132 81.239624,479.75 z" + style="fill:#d3bc5f" /> - - - - - - - + transform="matrix(1.0066378,0,0,1.0066378,535.99078,108.46325)" + id="g3160"> - - - - - + sodipodi:nodetypes="csssssscsssscssssssscsccsscssssssssssscsssssssssssssssssscssssssscsssssscscssssssssssssssssssssssscsssscscsssssccsssssssssssssssssssssssssscssccssssssssss" /> + diff --git a/themes/shogi/WhiteBishop.svg b/themes/shogi/WhiteBishop.svg index d7c551f..3f0f344 100644 --- a/themes/shogi/WhiteBishop.svg +++ b/themes/shogi/WhiteBishop.svg @@ -7,113 +7,73 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3036" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteBishop.svg"> + id="metadata3042"> image/svg+xml + + + + id="g3046"> - - - + id="g3434"> - - - + id="path3050" + d="M 72.249679,484.75 C 71.702313,484.0625 70.254357,479.225 69.032,474 L 66.809531,464.5 93.29548,276.65929 C 107.86275,173.34689 120.16811,88.435496 120.64071,87.967294 121.92769,86.69231 253.12009,41 255.49386,41 c 2.32043,0 129.53764,45.664114 130.8678,46.974479 0.47391,0.466858 13.678,85.376091 29.34242,188.687181 L 444.18485,464.5 441.96519,474 c -1.22081,5.225 -2.6675,10.0625 -3.21487,10.75 -1.46182,1.83607 -365.038821,1.83607 -366.500641,0 z" + style="fill:#d3bc5f" /> + transform="matrix(1.0248367,0,0,1.0248367,-432.37391,-17.548525)" + id="g3419"> - - - - - - - - - - - + sodipodi:nodetypes="sssscsscsscssssssscssssssccccsssssssssccssssssssssssssssssssssssssssssssssssssssscssssccssssssssssscs" /> + diff --git a/themes/shogi/WhiteCrownedBishop.svg b/themes/shogi/WhiteCrownedBishop.svg index 8fdd603..2a405c7 100644 --- a/themes/shogi/WhiteCrownedBishop.svg +++ b/themes/shogi/WhiteCrownedBishop.svg @@ -7,77 +7,78 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3122" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteCrownedBishop.svg"> + id="metadata3128"> image/svg+xml + + + + id="g3132"> - + id="g3033"> + id="path3138" + d="M 72.249679,484.75 C 71.702313,484.0625 70.254357,479.225 69.032,474 L 66.809531,464.5 93.29548,276.65929 C 107.86275,173.34689 120.16811,88.435496 120.64071,87.967294 121.92769,86.69231 253.12009,41 255.49386,41 c 2.32043,0 129.53764,45.664114 130.8678,46.974479 0.47391,0.466858 13.678,85.376091 29.34242,188.687181 L 444.18485,464.5 441.96519,474 c -1.22081,5.225 -2.6675,10.0625 -3.21487,10.75 -1.46182,1.83607 -365.038821,1.83607 -366.500641,0 z" + style="fill:#d3bc5f" /> - - + transform="matrix(1.0721232,0,0,1.0721232,-480.27016,-34.23597)" + id="g3006"> - - - + sodipodi:nodetypes="sssssscsssssssscsssssssssssssssssssssssscsssssssssssssssssssssssssssssssssssssssscsssssssssssscs" /> + + id="path3134" + d="M 74.333178,484.22708 C 72.934299,483.33715 69,468.45528 69,464.05381 69,458.46366 121.13145,90.54654 122.08661,89.395639 122.59762,88.779912 152.8305,77.851437 189.27078,65.110137 l 66.25507,-23.165999 63.98708,23.071644 c 35.19289,12.689404 64.52241,23.614473 65.17672,24.277931 C 385.82109,90.440973 442,457.97084 442,464.22559 c 0,4.26797 -3.9627,19.12963 -5.33318,20.00149 -1.52551,0.97048 -360.808133,0.97048 -362.333642,0 z M 431.35399,454.23624 C 432.29606,452.71195 376.2006,96.742012 374.89076,95.932485 373.06417,94.803592 257.19604,54.005373 255.72519,53.973206 254.27707,53.941537 134.00578,94.760359 132.12832,95.920693 130.801,96.741021 78.656683,452.63548 79.632479,454.21436 c 0.626082,1.01302 351.095481,1.03483 351.721511,0.0219 z" + style="fill:#11100f" /> diff --git a/themes/shogi/WhiteCrownedRook.svg b/themes/shogi/WhiteCrownedRook.svg index d800001..69285b2 100644 --- a/themes/shogi/WhiteCrownedRook.svg +++ b/themes/shogi/WhiteCrownedRook.svg @@ -7,106 +7,78 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3210" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteCrownedRook.svg"> + id="metadata3216"> image/svg+xml + + + + id="g3220"> + id="g3261"> - - - - - + id="path3226" + d="M 72.249679,484.75 C 71.702313,484.0625 70.254357,479.225 69.032,474 L 66.809531,464.5 93.29548,276.65929 C 107.86275,173.34689 120.16811,88.435496 120.64071,87.967294 121.92769,86.69231 253.12009,41 255.49386,41 c 2.32043,0 129.53764,45.664114 130.8678,46.974479 0.47391,0.466858 13.678,85.376091 29.34242,188.687181 L 444.18485,464.5 441.96519,474 c -1.22081,5.225 -2.6675,10.0625 -3.21487,10.75 -1.46182,1.83607 -365.038821,1.83607 -366.500641,0 z" + style="fill:#d3bc5f" /> - - - + transform="translate(629.15254,2.1694915)" + id="g3246"> - - - - - - + sodipodi:nodetypes="ssssssssscsssssssssssssssscssssssssscssscsscsscsssssscssscssssssssssccscsssscssssssssssscssssscssssssccssc" /> + + diff --git a/themes/shogi/WhiteElephant.svg b/themes/shogi/WhiteElephant.svg new file mode 100644 index 0000000..ed7b72e --- /dev/null +++ b/themes/shogi/WhiteElephant.svg @@ -0,0 +1,65 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/themes/shogi/WhiteGold.svg b/themes/shogi/WhiteGold.svg index 51267b2..5d9ef4d 100644 --- a/themes/shogi/WhiteGold.svg +++ b/themes/shogi/WhiteGold.svg @@ -7,147 +7,73 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3400" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteGold.svg"> + id="metadata3406"> image/svg+xml + + + + id="g3410"> + id="g2999"> - - - - - - - - - - - - - - - + id="path3414" + d="m 81.239624,479.75 c -0.552897,-0.6875 -1.995733,-4.4 -3.206303,-8.25 l -2.201037,-7 25.083856,-177.09934 C 114.71226,189.99602 126,109.79936 126,109.18584 c 0,-0.61351 0.91337,-1.60429 2.02972,-2.20174 C 131.74047,104.99816 253.45469,63 255.49934,63 c 1.10517,0 29.23041,9.814635 62.50053,21.8103 51.98803,18.74448 60.66289,22.15324 61.71306,24.25 0.67205,1.34183 13.42558,81.97027 28.34115,179.17429 l 27.11924,176.73459 -2.21977,6.76541 c -1.22087,3.72098 -2.66497,7.32791 -3.2091,8.01541 C 428.9598,480.74138 392.90978,481 255.5,481 118.09872,481 82.036857,480.74132 81.239624,479.75 z" + style="fill:#d3bc5f" /> + transform="matrix(1.0897825,0,0,1.0897825,663.11434,-25.583254)" + id="g3097"> - - - - - - - - - - - + sodipodi:nodetypes="cssccsssssssssssssssscsssssssssssssssscccscccsssssscssscsssssssssscssccsssssssssssssssssssssssscsscsssssssscsssssssssssccsssscsss" /> + diff --git a/themes/shogi/WhiteGoldKnight.svg b/themes/shogi/WhiteGoldKnight.svg index f28e4a0..4e1cdf1 100644 --- a/themes/shogi/WhiteGoldKnight.svg +++ b/themes/shogi/WhiteGoldKnight.svg @@ -7,59 +7,78 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg4261" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteGoldKnight.svg"> + id="metadata4267"> image/svg+xml + + + - - - + id="g4271"> + id="g3716"> + id="path4277" + d="m 95.072155,473.3646 c -4.895079,-6.22308 -5.788704,2.25431 18.785045,-178.20493 12.60791,-92.58719 23.31032,-168.72495 23.78313,-169.19502 1.29405,-1.28654 115.55058,-41.954093 117.85967,-41.950027 2.25173,0.004 111.52115,40.619397 112.85943,41.949847 0.47269,0.46992 12.29661,76.60765 26.27538,169.19496 27.29982,180.81832 26.23664,171.92039 21.29303,178.20517 L 413.85484,476 255.5,476 97.14516,476 95.072155,473.3646 z" + style="fill:#d3bc5f" /> + + + + id="path4275" + d="M 97.24999,473.75309 C 95.059701,471.00854 93,465.95174 93,463.3189 c 0,-6.84605 45.21213,-334.92587 46.30894,-336.03877 0.66123,-0.67093 27.07049,-10.47529 58.68725,-21.78747 l 57.48501,-20.567594 55.20812,20.623214 c 30.36446,11.34276 55.66367,21.17213 56.22047,21.84303 1.00489,1.21082 51.10528,331.19418 51.07376,336.39444 -0.009,1.49284 -1.03586,4.51425 -2.2818,6.71425 l -2.26534,4 -157.5932,0.25309 c -125.32632,0.20127 -157.797948,-0.003 -158.59322,-1 z M 407.34361,454.25 c 0.7137,-1.15948 -48.00268,-320.30907 -49.05381,-321.3602 -1.02754,-1.02754 -100.80087,-37.878452 -102.63778,-37.908888 -0.63361,-0.0105 -25.35047,8.392298 -54.92636,18.672888 -45.34448,15.76176 -53.85483,19.01759 -54.28778,20.76909 -1.15654,4.67869 -43.22902,319.10604 -42.79294,319.81162 0.61236,0.99083 303.08883,1.00626 303.69867,0.0155 z" + style="fill:#f31611" /> + id="path4273" + d="M 97.24999,473.75309 C 95.059701,471.00854 93,465.95174 93,463.3189 c 0,-6.84605 45.21213,-334.92587 46.30894,-336.03877 0.66123,-0.67093 27.07049,-10.47529 58.68725,-21.78747 l 57.48501,-20.567594 55.20812,20.623214 c 30.36446,11.34276 55.66367,21.17213 56.22047,21.84303 1.00489,1.21082 51.10528,331.19418 51.07376,336.39444 -0.009,1.49284 -1.03586,4.51425 -2.2818,6.71425 l -2.26534,4 -157.5932,0.25309 c -125.32632,0.20127 -157.797948,-0.003 -158.59322,-1 z M 407.34361,454.25 c 0.7137,-1.15948 -48.00268,-320.30907 -49.05381,-321.3602 -1.02754,-1.02754 -100.80087,-37.878452 -102.63778,-37.908888 -0.63361,-0.0105 -25.35047,8.392298 -54.92636,18.672888 -45.34448,15.76176 -53.85483,19.01759 -54.28778,20.76909 -1.15654,4.67869 -43.22902,319.10604 -42.79294,319.81162 0.61236,0.99083 303.08883,1.00626 303.69867,0.0155 z" + style="fill:#161513" /> diff --git a/themes/shogi/WhiteGoldLance.svg b/themes/shogi/WhiteGoldLance.svg index 1edcf8b..cf7e970 100644 --- a/themes/shogi/WhiteGoldLance.svg +++ b/themes/shogi/WhiteGoldLance.svg @@ -7,59 +7,79 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg4397" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteGoldLance.svg"> + id="metadata4403"> image/svg+xml + + + - + id="g4407"> - - + id="g3900"> + id="path4413" + d="m 103.12951,473.43752 c -4.889381,-6.21585 -5.772542,2.36208 17.4072,-169.07198 13.53945,-100.13579 22.08696,-160.35204 22.87725,-161.16766 1.00047,-1.03252 84.91146,-31.23148 107.24808,-38.59781 l 5.16204,-1.70237 52.83796,19.60707 c 29.06088,10.78388 53.22556,19.992 53.6993,20.46248 0.47373,0.47048 11.84841,72.78282 25.27705,160.69409 26.23412,171.74297 25.23809,163.41209 20.28945,169.70326 L 405.85484,476 255.5,476 l -150.35484,0 -2.01565,-2.56248 z" + style="fill:#d3bc5f" /> + + + + id="path4411" + d="m 105.25012,473.75325 c -2.34157,-2.9341 -4.24783,-7.88513 -4.21738,-10.95359 0.0612,-6.16344 42.6761,-317.90876 43.57432,-318.76356 C 145.80279,142.89818 253.3947,105 255.42952,105 c 2.42715,0 103.80751,37.80716 105.23458,39.2445 1.17096,1.17938 49.35703,313.39268 49.31945,319.55687 -0.009,1.48425 -1.03586,4.49863 -2.28179,6.69863 l -2.26535,4 -149.59306,0.25325 c -118.92608,0.20133 -149.7981,-0.004 -150.59323,-1 z M 399.34258,454.25 c 0.62101,-1.01118 -45.10215,-301.36267 -46.15533,-303.19037 -0.4565,-0.7922 -22.6221,-9.44531 -49.25689,-19.22914 l -48.42691,-17.78878 -50.50172,17.54234 c -27.77595,9.64829 -51.12835,18.1566 -51.89422,18.90735 -0.97159,0.95242 -7.51901,46.94938 -21.66138,152.17568 -11.1479,82.94587 -20.05722,151.15317 -19.7985,151.57179 0.6106,0.98797 287.08822,0.99905 287.69495,0.0111 z" + style="fill:#f21712" /> + id="path4409" + d="m 105.25012,473.75325 c -2.34157,-2.9341 -4.24783,-7.88513 -4.21738,-10.95359 0.0612,-6.16344 42.6761,-317.90876 43.57432,-318.76356 C 145.80279,142.89818 253.3947,105 255.42952,105 c 2.42715,0 103.80751,37.80716 105.23458,39.2445 1.17096,1.17938 49.35703,313.39268 49.31945,319.55687 -0.009,1.48425 -1.03586,4.49863 -2.28179,6.69863 l -2.26535,4 -149.59306,0.25325 c -118.92608,0.20133 -149.7981,-0.004 -150.59323,-1 z M 399.34258,454.25 c 0.62101,-1.01118 -45.10215,-301.36267 -46.15533,-303.19037 -0.4565,-0.7922 -22.6221,-9.44531 -49.25689,-19.22914 l -48.42691,-17.78878 -50.50172,17.54234 c -27.77595,9.64829 -51.12835,18.1566 -51.89422,18.90735 -0.97159,0.95242 -7.51901,46.94938 -21.66138,152.17568 -11.1479,82.94587 -20.05722,151.15317 -19.7985,151.57179 0.6106,0.98797 287.08822,0.99905 287.69495,0.0111 z" + style="fill:#161513" /> diff --git a/themes/shogi/WhiteGoldPawn.svg b/themes/shogi/WhiteGoldPawn.svg index 4e33971..ef5acb9 100644 --- a/themes/shogi/WhiteGoldPawn.svg +++ b/themes/shogi/WhiteGoldPawn.svg @@ -7,48 +7,78 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg4501" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteGoldPawn.svg"> + id="metadata4507"> image/svg+xml + + + + id="g4511"> + id="g4041"> + + id="path4515" + d="m 118.25037,473.75355 c -2.33713,-2.92851 -4.24865,-7.88368 -4.22559,-10.95389 0.0469,-6.24276 38.70369,-300.92812 39.58907,-301.792 1.78848,-1.74507 100.90004,-37.14258 102.91772,-36.75687 1.14692,0.21924 22.92459,8.44784 48.39483,18.28576 35.76845,13.81563 46.4965,18.35107 47.13096,19.92529 0.96071,2.38373 44.99924,297.835 44.94581,301.53816 -0.0198,1.375 -1.05547,4.3 -2.30141,6.5 l -2.26534,4 -136.59282,0.25355 c -108.52563,0.20145 -136.79839,-0.004 -137.59323,-1 z M 386.34364,454.25 c 0.94787,-1.53983 -41.20013,-286.54327 -42.49397,-287.34291 -0.69908,-0.43205 -20.86786,-8.23463 -44.81952,-17.33907 l -43.54847,-16.55351 -46.93807,16.83187 c -25.81594,9.25753 -47.29497,17.46677 -47.73117,18.24275 -1.00671,1.79088 -36.82283,285.08503 -36.17506,286.13316 0.61732,0.99884 261.09149,1.02641 261.70626,0.0277 z" + style="fill:#f01813" /> + transform="matrix(1.5626356,0,0,1.1267045,-737.89712,-41.444797)" + id="g4026"> - + sodipodi:nodetypes="ssssscsscsssssss" /> + diff --git a/themes/shogi/WhiteGoldSilver.svg b/themes/shogi/WhiteGoldSilver.svg index bba28dc..7bf8ad6 100644 --- a/themes/shogi/WhiteGoldSilver.svg +++ b/themes/shogi/WhiteGoldSilver.svg @@ -7,67 +7,78 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg4605" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteGoldSilver.svg"> + id="metadata4611"> image/svg+xml + + + + id="g4615"> + id="g3312"> + id="path4621" + d="m 81.239624,479.75 c -0.552897,-0.6875 -1.995733,-4.4 -3.206303,-8.25 l -2.201037,-7 25.083856,-177.09934 C 114.71226,189.99602 126,109.79936 126,109.18584 c 0,-0.61351 0.91337,-1.60429 2.02972,-2.20174 C 131.74047,104.99816 253.45469,63 255.49934,63 c 1.10517,0 29.23041,9.814635 62.50053,21.8103 51.98803,18.74448 60.66289,22.15324 61.71306,24.25 0.67205,1.34183 13.42558,81.97027 28.34115,179.17429 l 27.11924,176.73459 -2.21977,6.76541 c -1.22087,3.72098 -2.66497,7.32791 -3.2091,8.01541 C 428.9598,480.74138 392.90978,481 255.5,481 118.09872,481 82.036857,480.74132 81.239624,479.75 z" + style="fill:#d3bc5f" /> - - - + transform="matrix(1.3586678,0,0,1.3586678,704.94087,-76.297251)" + id="g3250"> - - + sodipodi:nodetypes="csssssssssssssssssssssssssssssssssccsscsssscssssss" /> + + diff --git a/themes/shogi/WhiteJewled.svg b/themes/shogi/WhiteJewled.svg new file mode 100644 index 0000000..4f1ab23 --- /dev/null +++ b/themes/shogi/WhiteJewled.svg @@ -0,0 +1,82 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/themes/shogi/WhiteKing.svg b/themes/shogi/WhiteKing.svg index 19d5e8b..3e8c9d1 100644 --- a/themes/shogi/WhiteKing.svg +++ b/themes/shogi/WhiteKing.svg @@ -7,118 +7,82 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3668" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteKing.svg"> + id="metadata3674"> image/svg+xml + + + + id="g3678"> - + id="g3375"> + id="g3174"> + style="fill:#d3bc5f" + d="M 65.249679,484.75 C 64.702313,484.0625 63.254296,479.225 62.031864,474 L 59.80926,464.5 88.794087,268.16054 C 104.73574,160.17384 118.16616,71.436297 118.63946,70.966001 119.11276,70.495704 150.2125,59.464348 187.75,46.451875 L 256,22.792834 324.25,46.451875 c 37.5375,13.012473 68.63817,24.044759 69.11261,24.516191 0.47443,0.471433 13.90328,89.208974 29.84188,197.194544 L 452.18376,464.5 449.96464,474 c -1.22051,5.225 -2.66695,10.0625 -3.21432,10.75 C 445.96043,485.74211 406.60664,486 256,486 105.39336,486 66.039567,485.74211 65.249679,484.75 z" + id="path3682" + inkscape:connector-curvature="0" /> - - - - - - - - - - + id="g3147" + style="fill:#000000" + transform="translate(-442.57627,-4.3389838)"> + - - - - + sodipodi:nodetypes="sssssssscsscssscc" /> + + + sodipodi:nodetypes="ssscccssssssssssssssssssssssssssssssssssssssscsssssssssssssscsssssssssssssssssssscccccssssssssssssscsssss" /> diff --git a/themes/shogi/WhiteKnight.svg b/themes/shogi/WhiteKnight.svg index 0364da4..4c9df08 100644 --- a/themes/shogi/WhiteKnight.svg +++ b/themes/shogi/WhiteKnight.svg @@ -7,132 +7,73 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3754" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteKnight.svg"> + id="metadata3760"> image/svg+xml + + + - - - - - - - - - - - - - + id="g3764"> - - - - - - - - - - + id="g3652"> + + + + + diff --git a/themes/shogi/WhiteLance.svg b/themes/shogi/WhiteLance.svg index 36c99ed..3f644ff 100644 --- a/themes/shogi/WhiteLance.svg +++ b/themes/shogi/WhiteLance.svg @@ -7,128 +7,73 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3840" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteLance.svg"> + id="metadata3846"> image/svg+xml + + + - - - - - - - - - - - + id="g3850"> - - - - - - - - - - + id="g3836"> + + + + + diff --git a/themes/shogi/WhitePawn.svg b/themes/shogi/WhitePawn.svg index 0c4a96e..4129c5f 100644 --- a/themes/shogi/WhitePawn.svg +++ b/themes/shogi/WhitePawn.svg @@ -7,102 +7,73 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg4028" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhitePawn.svg"> + id="metadata4034"> image/svg+xml + + + + id="g4046"> - - - - - - + id="g3977"> - + id="path4050" + d="m 116.12951,473.43752 c -4.86391,-6.18346 -5.60943,1.59621 15.38776,-160.57459 16.56631,-127.9491 19.87154,-151.59809 21.36729,-152.88314 0.9732,-0.83612 24.48015,-9.76531 52.23767,-19.84264 l 50.46821,-18.32243 47.82955,18.50313 c 26.30626,10.17672 48.4166,19.10591 49.1341,19.84264 0.82062,0.84261 9.69082,57.49217 23.9119,152.71336 24.28574,162.61193 23.33281,154.29834 18.4045,160.56367 L 392.85484,476 255.5,476 l -137.35484,0 -2.01565,-2.56248 z" + style="fill:#d3bc5f" /> - - - - + transform="matrix(0.92627741,0,0,0.92627741,369.47954,29.852836)" + id="g3962"> - + sodipodi:nodetypes="ssssssssssssssscscsssscsssscscsscsssssssssssssssssssssssssssssssssssssssssssscsssssssssssss" /> + diff --git a/themes/shogi/WhitePrince.svg b/themes/shogi/WhitePrince.svg new file mode 100644 index 0000000..a324566 --- /dev/null +++ b/themes/shogi/WhitePrince.svg @@ -0,0 +1,70 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/themes/shogi/WhiteRook.svg b/themes/shogi/WhiteRook.svg index ae8afc9..462d42f 100644 --- a/themes/shogi/WhiteRook.svg +++ b/themes/shogi/WhiteRook.svg @@ -7,131 +7,73 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg4709" version="1.1" - width="128" - height="128" - id="svg2"> - + inkscape:version="0.48.4 r9943 custom" + width="512" + height="512" + sodipodi:docname="WhiteRook.svg"> + id="metadata4715"> image/svg+xml + + + + id="g4719"> + id="g3468"> - - + id="path4723" + d="M 72.249679,484.75 C 71.702313,484.0625 70.254357,479.225 69.032,474 L 66.809531,464.5 93.29548,276.65929 C 107.86275,173.34689 120.16811,88.435496 120.64071,87.967294 121.92769,86.69231 253.12009,41 255.49386,41 c 2.32043,0 129.53764,45.664114 130.8678,46.974479 0.47391,0.466858 13.678,85.376091 29.34242,188.687181 L 444.18485,464.5 441.96519,474 c -1.22081,5.225 -2.6675,10.0625 -3.21487,10.75 -1.46182,1.83607 -365.038821,1.83607 -366.500641,0 z" + style="fill:#d3bc5f" /> - - - - + transform="matrix(1.0130742,0,0,1.0130742,-469.08553,-11.977055)" + id="g3447"> + sodipodi:nodetypes="sscsssssssssssssssssssssssssscsssssscssssssssssssscsssssssssssscsssssssssssssssssssssssssssssssssssssssssssssscsssssssssssccssssssssscs" /> - - - - - - - - - - - - + id="path4721" + d="M 74.333178,484.22708 C 72.934299,483.33715 69,468.45528 69,464.05381 69,458.46366 121.13145,90.54654 122.08661,89.395639 122.59762,88.779912 152.8305,77.851437 189.27078,65.110137 l 66.25507,-23.165999 63.98708,23.071644 c 35.19289,12.689404 64.52241,23.614473 65.17672,24.277931 C 385.82109,90.440973 442,457.97084 442,464.22559 c 0,4.26797 -3.9627,19.12963 -5.33318,20.00149 -1.52551,0.97048 -360.808133,0.97048 -362.333642,0 z M 431.35399,454.23624 C 432.29606,452.71195 376.2006,96.742012 374.89076,95.932485 373.06417,94.803592 257.19604,54.005373 255.72519,53.973206 254.27707,53.941537 134.00578,94.760359 132.12832,95.920693 130.801,96.741021 78.656683,452.63548 79.632479,454.21436 c 0.626082,1.01302 351.095481,1.03483 351.721511,0.0219 z" + style="fill:#12100e" /> diff --git a/xaw/xboard.c b/xaw/xboard.c index bed61e5..b7cd5cc 100644 --- a/xaw/xboard.c +++ b/xaw/xboard.c @@ -256,6 +256,7 @@ void ManInner P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void DisplayMove P((int moveNumber)); void update_ics_width P(()); int CopyMemoProc P(()); +static int FindLogo P((char *place, char *name, char *buf)); /* * XBoard depends on Xt R4 or higher @@ -1292,8 +1293,10 @@ main (int argc, char **argv) if(appData.logoSize) { // locate and read user logo - char buf[MSG_SIZ]; - snprintf(buf, MSG_SIZ, "%s/%s.png", appData.logoDir, UserName()); + char buf[MSG_SIZ], name[MSG_SIZ]; + snprintf(name, MSG_SIZ, "/home/%s", UserName()); + if(!FindLogo(name, ".logo", buf)) + FindLogo(appData.logoDir, name + 6, buf); ASSIGN(userLogo, buf); } @@ -2492,6 +2495,19 @@ FrameDelay (int time) #endif +static int +FindLogo (char *place, char *name, char *buf) +{ // check if file exists in given place + FILE *f; + if(!place) return 0; + snprintf(buf, MSG_SIZ, "%s/%s.png", place, name); + if(*place && strcmp(place, ".") && (f = fopen(buf, "r")) ) { + fclose(f); + return 1; + } + return 0; +} + static void LoadLogo (ChessProgramState *cps, int n, Boolean ics) { @@ -2501,8 +2517,11 @@ LoadLogo (ChessProgramState *cps, int n, Boolean ics) } else if(appData.autoLogo) { if(ics) { // [HGM] logo: in ICS mode second can be used for ICS sprintf(buf, "%s/%s.png", appData.logoDir, appData.icsHost); - } else if(appData.logoDir && appData.logoDir[0]) { - sprintf(buf, "%s/%s.png", appData.logoDir, cps->tidy); + } else { // engine; cascade + if(!FindLogo(appData.logoDir, cps->tidy, buf) && // first try user log folder + !FindLogo(appData.directory[n], "logo", buf) && // then engine directory + !FindLogo("/usr/local/share/games/plugins/logos", cps->tidy, buf) ) // then system folders + FindLogo("/usr/share/games/plugins/logos", cps->tidy, buf); } } if(logoName[0])