From: H.G.Muller Date: Fri, 6 May 2016 05:42:55 +0000 (+0200) Subject: Fix saving theme X-Git-Url: http://winboard.nl/cgi-bin?p=xboard.git;a=commitdiff_plain;h=96041849754ac948d0b7450514b8a84a519ac4e0 Fix saving theme 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. --- diff --git a/args.h b/args.h index 2924993..f23f1ab 100644 --- 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 }, diff --git a/backend.c b/backend.c index 0c12671..79cc86c 100644 --- 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 diff --git a/backend.h b/backend.h index fadc926..fae2ee6 100644 --- 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 --- 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)