oldMono = appData.monoMode;
}
+void
+ExposeRedraw (Option *graph, int x, int y, int w, int h)
+{ // copy a selected part of the buffer bitmap to the display
+ cairo_t *cr = cairo_create((cairo_surface_t *) graph->textValue);
+ cairo_set_source_surface(cr, (cairo_surface_t *) graph->choice, 0, 0);
+ cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
+ cairo_rectangle(cr, x, y, w, h);
+ cairo_fill(cr);
+ cairo_destroy(cr);
+}
+
static void
CreatePNGBoard (char *s, int kind)
{
}
if(!pngPieceImages[color][piece]) { // we still did not manage to acquire a piece bitmap
- if(!(svgPieces[color][piece] = LoadSVG(SVGDIR, color, piece))) // try to fall back on installed svg
- DisplayError(_("No default pieces installed\nSelect your own -pieceImageDirectory"), 0); // give up
+ static int warned = 0;
+ if(!(svgPieces[color][piece] = LoadSVG(SVGDIR, color, piece)) && !warned) { // try to fall back on installed svg
+ char *msg = _("No default pieces installed\nSelect your own -pieceImageDirectory");
+ printf("%s\n", msg); // give up
+ DisplayError(msg, 0);
+ warned = 1; // prevent error message being repeated for each piece type
+ }
}
img = pngPieceImages[color][piece];
pngPieceBitmaps2[color][piece] = cs = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, squareSize, squareSize);
if(piece <= WhiteKing) pngPieceBitmaps[color][piece] = cs;
+ if(!img) return;
+
// scaled copying of the raw png image
cr = cairo_create(cs);
w = cairo_image_surface_get_width (img);
InitDrawingParams (int reloadPieces)
{
int i, p;
- MakeColors();
if(reloadPieces)
for(i=0; i<2; i++) for(p=0; p<BlackPawn+4; p++) {
if(pngPieceImages[i][p]) cairo_surface_destroy(pngPieceImages[i][p]);
/* lines in X */
for (i = 0; i < BOARD_WIDTH + BOARD_HEIGHT + 2; i++)
{
- cairo_move_to (cr, gridSegments[i].x1 + odd, gridSegments[i].y1 + odd);
- cairo_line_to (cr, gridSegments[i].x2 + odd, gridSegments[i].y2 + odd);
+ int h = (gridSegments[i].y1 == gridSegments[i].y2); // horizontal
+ cairo_move_to (cr, gridSegments[i].x1 + !h*odd, gridSegments[i].y1 + h*odd);
+ cairo_line_to (cr, gridSegments[i].x2 + !h*odd, gridSegments[i].y2 + h*odd);
cairo_stroke (cr);
}