X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=draw.c;fp=draw.c;h=bbe4a79a5b293a77818736ddc7479610e6643e15;hb=56fd0c5021f5074a510ae8f170338656ee243ec7;hp=82072bfc9f15ed46a78e5c4efd4a1604ddebe040;hpb=e147dd97d26b46902200491dbe0a8755266555d3;p=xboard.git diff --git a/draw.c b/draw.c index 82072bf..bbe4a79 100644 --- a/draw.c +++ b/draw.c @@ -220,7 +220,7 @@ InitDrawingSizes (BoardSize boardSize, int flags) squareSize = ((squareSize + lineGap) * oldNrOfFiles + 0.5*BOARD_WIDTH) / BOARD_WIDTH; // keep total width fixed if(appData.overrideLineGap < 0) lineGap = squareSize < 37 ? 1 : squareSize < 59 ? 2 : squareSize < 116 ? 3 : 4; squareSize -= lineGap; - CreatePNGPieces(); + CreatePNGPieces(appData.pieceDirectory); CreateGrid(); } oldNrOfFiles = BOARD_WIDTH; @@ -389,7 +389,7 @@ LoadSVG (char *dir, int color, int piece, int retry) } static void -ScaleOnePiece (int color, int piece) +ScaleOnePiece (int color, int piece, char *pieceDir) { float w, h; char buf[MSG_SIZ]; @@ -401,11 +401,11 @@ ScaleOnePiece (int color, int piece) svgPieces[color][piece] = LoadSVG("", color, piece, 0); // this fills pngPieceImages if we had cached svg with bitmap of wanted size if(!pngPieceImages[color][piece]) { // we don't have cached bitmap (implying we did not have cached svg) - if(*appData.pieceDirectory) { // user specified piece directory - snprintf(buf, MSG_SIZ, "%s/%s%s.png", appData.pieceDirectory, color ? "Black" : "White", pngPieceNames[piece]); + if(*pieceDir) { // user specified piece directory + snprintf(buf, MSG_SIZ, "%s/%s%s.png", pieceDir, color ? "Black" : "White", pngPieceNames[piece]); img = cairo_image_surface_create_from_png (buf); // try if there are png pieces there if(cairo_surface_status(img) != CAIRO_STATUS_SUCCESS) { // there were not - svgPieces[color][piece] = LoadSVG(appData.pieceDirectory, color, piece, 0); // so try if he has svg there + svgPieces[color][piece] = LoadSVG(pieceDir, color, piece, 0); // so try if he has svg there } else pngPieceImages[color][piece] = img; } } @@ -438,7 +438,7 @@ ScaleOnePiece (int color, int piece) cairo_paint (cr); cairo_destroy (cr); - if(!appData.trueColors || !*appData.pieceDirectory) { // operate on bitmap to color it (king-size hack...) + if(!appData.trueColors || !*pieceDir) { // operate on bitmap to color it (king-size hack...) int stride = cairo_image_surface_get_stride(cs)/4; int *buf = (int *) cairo_image_surface_get_data(cs); int i, j, p; @@ -464,13 +464,12 @@ ScaleOnePiece (int color, int piece) } void -CreatePNGPieces () +CreatePNGPieces (char *pieceDir) { int p; - for(p=0; pngPieceNames[p]; p++) { - ScaleOnePiece(0, p); - ScaleOnePiece(1, p); + ScaleOnePiece(0, p, pieceDir); + ScaleOnePiece(1, p, pieceDir); } SelectPieces(gameInfo.variant); } @@ -478,25 +477,53 @@ CreatePNGPieces () void CreateAnyPieces (int p) { // [HGM] taken out of main - if(p) CreatePNGPieces(); + if(p) CreatePNGPieces(appData.pieceDirectory); CreatePNGBoard(appData.liteBackTextureFile, 1); CreatePNGBoard(appData.darkBackTextureFile, 0); } -void -InitDrawingParams (int reloadPieces) +static void +ClearPieces () { int i, p; - if(reloadPieces) for(i=0; i<2; i++) for(p=0; p