Fall back on Tile SVG in pieceImageDirectory
authorH.G.Muller <hgm@hgm-xboard.(none)>
Thu, 6 Aug 2015 21:49:02 +0000 (23:49 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Thu, 6 Aug 2015 21:49:02 +0000 (23:49 +0200)
If a -pieceImageDirectory is given, but a needed piece is not found,
and -inscriptions are specified, we first fall back on a general
image White/BlackTile.svg. This can then serve as a background for the
various inscription glyphs, using the latter to distinguish the pieces.
E.g. the Tile image could be a shogi tile, and the inscriptions an utf8
string of kanji, to create Shogi pieces on the fly.

draw.c

diff --git a/draw.c b/draw.c
index 40a4393..5d268f2 100644 (file)
--- a/draw.c
+++ b/draw.c
@@ -311,8 +311,15 @@ LoadSVG (char *dir, int color, int piece, int retry)
 
     snprintf(buf, MSG_SIZ, "%s/%s%s.svg", dir, color ? "Black" : "White", name);
 
-    if(svg || *dir && (svg = rsvg_handle_new_from_file(buf, &svgerror))) {
+    if(!svg && *dir) {
+      svg = rsvg_handle_new_from_file(buf, &svgerror);
+      if(!svg && *appData.inscriptions) { // if there is no piece-specific SVG, but we make inscriptions, try general background
+       snprintf(buf, MSG_SIZ, "%s/%sTile.svg", dir, color ? "Black" : "White");
+       svg = rsvg_handle_new_from_file(buf, &svgerror);
+      }
+    }
 
+    if(svg) {
       rsvg_handle_get_dimensions(svg, &svg_dimensions);
       img = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, squareSize,  squareSize);