From: H.G.Muller Date: Mon, 6 Apr 2020 21:02:37 +0000 (+0200) Subject: Refactor clock display code X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=82a3ed0cb9295f8b69bc1f84d572135d7882657a;p=xboard.git Refactor clock display code The functions DisplayTimerLabel() in XBoard and DisplayAClock() in WinBoard now first create the text to display in a buffer, with the possible line break in logo mode indicated as underscore. This underscore is then later replaced by linefeed or space, depending on whether we want a one-line or two-line clock. This as preparation for also printing other texts. --- diff --git a/gtk/xboard.c b/gtk/xboard.c index b9bfd32..8d3909a 100644 --- a/gtk/xboard.c +++ b/gtk/xboard.c @@ -2132,7 +2132,7 @@ DisplayTimerLabel (Option *opt, char *color, long timer, int highlight) static int twoLines = -1; GtkWidget *w = (GtkWidget *) opt->handle; GdkColor col; - char *markup, two = (appData.logoSize != 0); + char buf[MSG_SIZ], *p, *markup, two = (appData.logoSize != 0); char bgcolor[10]; char fgcolor[10]; @@ -2155,16 +2155,13 @@ DisplayTimerLabel (Option *opt, char *color, long timer, int highlight) gtk_widget_modify_bg(gtk_widget_get_parent(opt->handle), GTK_STATE_NORMAL, &col); if (appData.clockMode) { - markup = g_markup_printf_escaped("%s:%s%s", appData.clockFont, - bgcolor, fgcolor, color, two ? "\n" : " ", TimeString(timer)); -// markup = g_markup_printf_escaped("%s:%s%s", -// bgcolor, fgcolor, color, appData.logoSize && !partnerUp ? "\n" : " ", TimeString(timer)); + snprintf(buf, MSG_SIZ, "%s:_%s", color, TimeString(timer)); } else { - markup = g_markup_printf_escaped("%s ", appData.clockFont, - bgcolor, fgcolor, color); -// markup = g_markup_printf_escaped("%s ", -// bgcolor, fgcolor, color); + snprintf(buf, MSG_SIZ, "%s ", color); } + p = strchr(buf, '_'); if(p) *p = (two ? '\n' : ' '); + markup = g_markup_printf_escaped("%s", appData.clockFont, + bgcolor, fgcolor, buf); gtk_label_set_markup(GTK_LABEL(w), markup); g_free(markup); diff --git a/winboard/winboard.c b/winboard/winboard.c index 1302c8c..d385c1d 100644 --- a/winboard/winboard.c +++ b/winboard/winboard.c @@ -2069,6 +2069,7 @@ static int TranslatePieceToFontPiece( int piece ) return PM_WSG; case WhiteLance: + return PM_WL; case WhiteFalcon: return PM_WV; @@ -7764,7 +7765,7 @@ DisplayAClock(HDC hdc, int timeRemaining, int highlight, RECT *rect, char *color, char *flagFell) { char buf[100]; - char *str; + char *str, *p; COLORREF oldFg, oldBg; HFONT oldFont; @@ -7773,11 +7774,13 @@ DisplayAClock(HDC hdc, int timeRemaining, int highlight, if (tinyLayout == 2) snprintf(buf, sizeof(buf)/sizeof(buf[0]), "%c %s %s", color[0], TimeString(timeRemaining), flagFell); else - snprintf(buf, sizeof(buf)/sizeof(buf[0]), "%s:%c%s %s", color, (logoHeight>0 ? 0 : ' '), TimeString(timeRemaining), flagFell); + snprintf(buf, sizeof(buf)/sizeof(buf[0]), "%s:_%s %s", color, TimeString(timeRemaining), flagFell); str = buf; } else { str = color; } + p = strchr(str, '_'); + if(p) *p = (logoHeight > 0 ? 0 : ' '); if (highlight) { oldFg = SetTextColor(hdc, RGB(255, 255, 255)); /* white */ @@ -7794,9 +7797,9 @@ DisplayAClock(HDC hdc, int timeRemaining, int highlight, ExtTextOut(hdc, rect->left + MESSAGE_LINE_LEFTMARGIN, rect->top, ETO_CLIPPED|ETO_OPAQUE, rect, str, strlen(str), NULL); - if(logoHeight > 0 && appData.clockMode) { + if(logoHeight > 0 && p) { RECT r; - str += strlen(color)+2; + str = p + 1; r.top = rect->top + logoHeight/2; r.left = rect->left; r.right = rect->right; diff --git a/xaw/xboard.c b/xaw/xboard.c index 1c3ffc7..87d831e 100644 --- a/xaw/xboard.c +++ b/xaw/xboard.c @@ -2328,7 +2328,7 @@ StartClockTimer (long millisec) void DisplayTimerLabel (Option *opt, char *color, long timer, int highlight) { - char buf[MSG_SIZ]; + char buf[MSG_SIZ], *p; Arg args[16]; Widget w = (Widget) opt->handle; @@ -2341,12 +2341,12 @@ DisplayTimerLabel (Option *opt, char *color, long timer, int highlight) foregroundOrWarningColor = lowTimeWarningColor; if (appData.clockMode) { - snprintf(buf, MSG_SIZ, "%s:%s%s", color, appData.logoSize && !partnerUp ? "\n" : " ", TimeString(timer)); - XtSetArg(args[0], XtNlabel, buf); + snprintf(buf, MSG_SIZ, "%s:_%s", color, TimeString(timer)); } else { snprintf(buf, MSG_SIZ, "%s ", color); - XtSetArg(args[0], XtNlabel, buf); } + p = strchr(buf, '_'); if(p) *p = (appData.logoSize && !partnerUp ? '\n' : ' '); + XtSetArg(args[0], XtNlabel, buf); if (highlight) {