Fix saving theme
authorH.G.Muller <hgm@hgm-xboard.(none)>
Fri, 6 May 2016 05:42:55 +0000 (07:42 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Fri, 6 May 2016 05:42:55 +0000 (07:42 +0200)
The option -trueColors is now saved with the theme settings when a
pieceImageDirectory was given in XBoard, and the piece colors are
saved when this option is off even with a piece directory. The square
colors are now also saved when useBooardTextures is on, but the textures
are transparent. For this the transparency also had to be made visible in
the WinBoard front end, (by moving the flags for it to backend.c), but
always stay at the default 0 there.

args.h
backend.c
backend.h
draw.c

diff --git a/args.h b/args.h
index 2924993..f23f1ab 100644 (file)
--- a/args.h
+++ b/args.h
@@ -223,7 +223,7 @@ ArgDescriptor argDescriptors[] = {
   { "flashRate", ArgInt, (void *) &appData.flashRate, XBOARD, (ArgIniType) FLASH_RATE },
   { "pieceImageDirectory", ArgFilename, (void *) &appData.pieceDirectory, TRUE, (ArgIniType) "" },
   { "pid", ArgFilename, (void *) &appData.pieceDirectory, FALSE, INVALID },
-  { "trueColors", ArgBoolean, (void *) &appData.trueColors, TRUE, (ArgIniType) FALSE },
+  { "trueColors", ArgBoolean, (void *) &appData.trueColors, XBOARD, (ArgIniType) (2*!XBOARD) },
   { "jewelled", ArgInt, (void *) &appData.jewelled, FALSE, (ArgIniType) -1 },
   { "soundDirectory", ArgFilename, (void *) &appData.soundDirectory, XBOARD, (ArgIniType) "" },
   { "msLoginDelay", ArgInt, (void *) &appData.msLoginDelay, XBOARD, (ArgIniType) MS_LOGIN_DELAY },
index 0c12671..79cc86c 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -19041,6 +19041,8 @@ LoadVariation (int index, char *text)
        ToNrEvent(currentMove+1);
 }
 
+int transparency[2];
+
 void
 LoadTheme ()
 {
@@ -19063,9 +19065,13 @@ LoadTheme ()
                appData.liteBackTextureMode,
                appData.darkBackTextureMode );
       } else {
-       snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), " -ubt false -lsc %s -dsc %s",
-               Col2Text(2),   // lightSquareColor
-               Col2Text(3) ); // darkSquareColor
+       snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), " -ubt false");
+      }
+      if(!appData.useBitmaps || transparency[0]) {
+       snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), " -lsc %s", Col2Text(2) ); // lightSquareColor
+      }
+      if(!appData.useBitmaps || transparency[1]) {
+       snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), " -dsc %s", Col2Text(3) ); // darkSquareColor
       }
       if(appData.useBorder) {
        snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), " -ub true -border \"%s\"",
@@ -19080,9 +19086,13 @@ LoadTheme ()
                Col2Text(9),    // appData.fontBackColorWhite
                Col2Text(10) ); // appData.fontForeColorBlack
       } else {
-       snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), " -upf false -pid \"%s\"",
-               appData.pieceDirectory);
-       if(!appData.pieceDirectory[0])
+       snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), " -upf false");
+       if(appData.pieceDirectory[0]) {
+         snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), " -pid \"%s\"", appData.pieceDirectory);
+         if(appData.trueColors != 2) // 2 is a kludge to suppress this in WinBoard
+           snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), " -trueColors %s", appData.trueColors ? "true" : "false");
+       }
+       if(!appData.pieceDirectory[0] && !appData.trueColors)
          snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), " -wpc %s -bpc %s",
                Col2Text(0),   // whitePieceColor
                Col2Text(1) ); // blackPieceColor
index fadc926..fae2ee6 100644 (file)
--- a/backend.h
+++ b/backend.h
@@ -80,6 +80,7 @@ extern Boolean mcMode;
 extern int dragging;
 extern char variantError[];
 extern char lastTalker[];
+extern int transparency[];
 
 void MarkMenuItem P((char *menuRef, int state));
 char *CmailMsg P((void));
diff --git a/draw.c b/draw.c
index 821137f..8b78892 100644 (file)
--- a/draw.c
+++ b/draw.c
@@ -255,7 +255,7 @@ ExposeRedraw (Option *graph, int x, int y, int w, int h)
     cairo_destroy(cr);
 }
 
-static int modV[2], modH[2], transparency[2];
+static int modV[2], modH[2];
 
 static void
 CreatePNGBoard (char *s, int kind)