diff options
Diffstat (limited to 'x11-clocks/dclock/files/patch-Dclock.c')
-rw-r--r-- | x11-clocks/dclock/files/patch-Dclock.c | 382 |
1 files changed, 377 insertions, 5 deletions
diff --git a/x11-clocks/dclock/files/patch-Dclock.c b/x11-clocks/dclock/files/patch-Dclock.c index 2f63600bcc93..6c45dfe5c5e7 100644 --- a/x11-clocks/dclock/files/patch-Dclock.c +++ b/x11-clocks/dclock/files/patch-Dclock.c @@ -1,18 +1,37 @@ ---- Dclock.c.orig Sat Dec 17 23:46:28 2005 -+++ Dclock.c Sat Dec 17 23:47:28 2005 -@@ -9,9 +9,9 @@ - #include <stdio.h> +--- Dclock.c.orig 2008-07-08 13:00:35.000000000 +0900 ++++ Dclock.c 2012-10-08 00:49:08.000000000 +0900 +@@ -8,10 +8,10 @@ + #include <stdlib.h> #include <unistd.h> #include <string.h> -#include <values.h> +#include <limits.h> + #include <math.h> #include <time.h> -#include <wait.h> +#include <sys/wait.h> #include <errno.h> #include <X11/IntrinsicP.h> #include <X11/Xos.h> -@@ -171,7 +171,7 @@ +@@ -66,7 +66,7 @@ + static int old_digs[4]; + static struct tm before; + static char *saved_date; +-static cur_position; /* outline current digit for setting alarm */ ++static int cur_position; /* outline current digit for setting alarm */ + static struct { int hrs, mins; } Alarm; + static int TopOffset = 0; + +@@ -165,7 +165,7 @@ + XtOffset(DclockWidget,dclock.font), XtRString, "fixed"}, + #ifdef XFT_SUPPORT + { XftNfontName, "fontName", XtRString, sizeof(String), +- XtOffset(DclockWidget,dclock.xftfontname), XtRString, "charter"}, ++ XtOffset(DclockWidget,dclock.xftfontname), XtRString, NULL}, + #endif + { XtNangle, "Slope", XtRFloat, sizeof(float), + XtOffset(DclockWidget,dclock.angle), XtRFloat, (caddr_t)&sslope}, +@@ -182,7 +182,7 @@ { XtNbellFile, "bellFile", XtRString, sizeof(String), XtOffset(DclockWidget,dclock.bellfile), XtRString, (String)NULL}, { XtNaudioPlay, "audioPlay", XtRString, sizeof(String), @@ -21,3 +40,356 @@ }; /* Define the Dclock widget */ +@@ -235,7 +235,7 @@ + * These stipples give different densities for the + * different stages of fading. + */ +-static unsigned char stpl_1_8th[] = ++static char stpl_1_8th[] = + { + 0x80, 0x80, 0x08, 0x08, 0x80, 0x80, 0x08, 0x08, + 0x80, 0x80, 0x08, 0x08, 0x80, 0x80, 0x08, 0x08, +@@ -243,7 +243,7 @@ + 0x80, 0x80, 0x08, 0x08, 0x80, 0x80, 0x08, 0x08 + }; + +-static unsigned char stpl_1_4th[] = ++static char stpl_1_4th[] = + { + 0x88, 0x88, 0x22, 0x22, 0x88, 0x88, 0x22, 0x22, + 0x88, 0x88, 0x22, 0x22, 0x88, 0x88, 0x22, 0x22, +@@ -251,7 +251,7 @@ + 0x88, 0x88, 0x22, 0x22, 0x88, 0x88, 0x22, 0x22 + }; + +-static unsigned char stpl_3_8ths[] = ++static char stpl_3_8ths[] = + { + 0xA2, 0xA2, 0x15, 0x15, 0xA8, 0xA8, 0x45, 0x45, + 0x2A, 0x2A, 0x51, 0x51, 0x8A, 0x8A, 0x54, 0x54, +@@ -259,7 +259,7 @@ + 0x2A, 0x2A, 0x51, 0x51, 0x8A, 0x8A, 0x54, 0x54 + }; + +-static unsigned char stpl_one_half[] = ++static char stpl_one_half[] = + { + 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, + 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, +@@ -344,6 +344,12 @@ + segment_pts tiny_segment_pts; + segment_pts norm_segment_pts; + ++#ifdef XFT_SUPPORT ++#define XFT_COND(dclock) ((dclock).xftfontname) ++#else ++#define XFT_COND(dclock) (0) ++#endif ++ + /* ARGSUSED */ + static void + Initialize (request, new) +@@ -386,11 +392,13 @@ + if (new->dclock.sec_gap < 0.0) new->dclock.sec_gap = 0.0; + + #ifdef XFT_SUPPORT +- new->dclock.xftfont = XftFontOpen(dpy, DefaultScreen(dpy), ++ if (XFT_COND(new->dclock)) { ++ new->dclock.xftfont = XftFontOpen(dpy, DefaultScreen(dpy), + XFT_FAMILY, XftTypeString, new->dclock.xftfontname, + XFT_SIZE, XftTypeDouble, ((float)new->core.height / 6.0) - 4.0, + NULL); +- new->dclock.xftdraw = NULL; ++ new->dclock.xftdraw = NULL; ++ } + #endif + + GetGC(new); +@@ -447,11 +455,11 @@ + if (new->dclock.date_fmt && !*new->dclock.date_fmt) + new->dclock.date_fmt = NULL; + if (new->dclock.dateup && new->dclock.date_fmt) +-#ifdef XFT_SUPPORT ++ if (XFT_COND(new->dclock)) { + TopOffset = new->core.height / 6; +-#else ++ } else { + TopOffset = new->dclock.font->ascent + new->dclock.font->descent; +-#endif ++ } + + else + TopOffset = 0; +@@ -493,7 +501,7 @@ + + static void + invert_bitmap(bm, h, w) +-unsigned char *bm; ++char *bm; + int h, w; + { + int i, *wp; +@@ -519,7 +527,7 @@ + XtCreateWindow(w, InputOutput, (Visual *)CopyFromParent, *valueMask, attrs); + + #ifdef XFT_SUPPORT +- if (dw->dclock.xftdraw == NULL) { ++ if (XFT_COND(dw->dclock) && dw->dclock.xftdraw == NULL) { + XColor color; + Colormap cm = DefaultColormap(dp, sc); + +@@ -574,7 +582,8 @@ + XDestroyRegion(clip_colon); + + #ifdef XFT_SUPPORT +- XftFontClose(XtDisplay(w), w->dclock.xftfont); ++ if (XFT_COND(w->dclock)) ++ XftFontClose(XtDisplay(w), w->dclock.xftfont); + #endif + } + +@@ -596,11 +605,13 @@ + winheight = w->core.height; + + #ifdef XFT_SUPPORT +- XftFontClose(dpy, w->dclock.xftfont); +- w->dclock.xftfont = XftFontOpen(dpy, DefaultScreen(dpy), ++ if(XFT_COND(w->dclock)) { ++ XftFontClose(dpy, w->dclock.xftfont); ++ w->dclock.xftfont = XftFontOpen(dpy, DefaultScreen(dpy), + XFT_FAMILY, XftTypeString, w->dclock.xftfontname, + XFT_SIZE, XftTypeDouble, ((float)winheight / 6.0) - 4.0, + NULL); ++ } + #endif + + y_ratio = (float)winheight / CLOCK_HEIGHT; +@@ -608,11 +619,13 @@ + if (w->dclock.date_fmt || !w->dclock.display_time || w->dclock.alarm || + w->dclock.bell) + /* make win temporarily shorter so digits will fit on top of date */ +-#ifdef XFT_SUPPORT +- winheight -= w->core.height / 6; +-#else +- winheight -= w->dclock.font->ascent + w->dclock.font->descent; +-#endif ++ { ++ if(XFT_COND(w->dclock)) { ++ winheight -= w->core.height / 6; ++ } else { ++ winheight -= w->dclock.font->ascent + w->dclock.font->descent; ++ } ++ } + + /* + * if the width of all segments are equal, then the width in x is the +@@ -1351,7 +1364,7 @@ + XtAppContext app; + Boolean save_scroll = w->dclock.scroll; + Boolean save_fade = w->dclock.fade; +- long t; ++ time_t t; + + if (!XtIsRealized((Widget)w)) + return; +@@ -1421,7 +1434,7 @@ + { + char buf[11]; + Boolean alarm_went_off = False; +- long t = time(0); ++ time_t t = time(0); + register struct tm *l_time = localtime(&t); + float digit_w = w->dclock.digit_w; + float digit_h = w->dclock.digit_h; +@@ -1522,7 +1535,7 @@ + Pixmap new_pix[4]; + int new_digs[4], digitxpos, digitypos; + int cur_sec = 0; +- long t; ++ time_t t; + register struct tm *now; + + /* definitions for the window x and y positions of each of the large digits. */ +@@ -1585,7 +1598,7 @@ + unsigned long fade_rate = w->dclock.fade_rate * 1000; + + for (i = 0; i < 4; i++) /* if pixmaps don't match, fade it */ +- if (chgd[i] = (new_pix[i] != old_pix[i])) ++ if ((chgd[i] = (new_pix[i] != old_pix[i]))) + { + tmp_pix[i] = XCreatePixmap(dpy, win, (int)(digit_w + slope_add), + (int)digit_h, DefaultDepthOfScreen(XtScreen(w))); +@@ -1669,51 +1682,60 @@ + char datestr[128]; + register char *p; + int x, datep; ++ int tsize; + #ifdef XFT_SUPPORT +- int tsize = w->core.height / 6; + XGlyphInfo xftextents; +-#else +- int tsize = w->dclock.font->ascent + w->dclock.font->descent; + #endif + ++ if (XFT_COND(w->dclock)) { ++ tsize = w->core.height / 6; ++ } else { ++ tsize = w->dclock.font->ascent + w->dclock.font->descent; ++ } ++ + if (!w->dclock.display_time) + datep = strlen(strcpy(datestr, "Push HERE to Set/Unset Alarm")); + else + datep = strftime(datestr, 128, w->dclock.date_fmt, now); + ++ if (XFT_COND(w->dclock)) { + #ifdef XFT_SUPPORT +- XftTextExtents8(dpy, w->dclock.xftfont, datestr, datep, &xftextents); +- x = (w->core.width - xftextents.width) / 2; +-#else +- x = (w->core.width - XTextWidth(w->dclock.font, datestr, datep)) / 2; ++ XftTextExtents8(dpy, w->dclock.xftfont, (FcChar8*)datestr, datep, &xftextents); ++ x = (w->core.width - xftextents.width) / 2; + #endif ++ } else { ++ x = (w->core.width - XTextWidth(w->dclock.font, datestr, datep)) / 2; ++ } ++ + if (x < 2) + x = 2; + if (TopOffset) { +- ++ if (XFT_COND(w->dclock)) { + #ifdef XFT_SUPPORT +- XftDrawRect(w->dclock.xftdraw, &w->dclock.xftbg, 0, 0, winwidth, tsize); +- XftDrawString8(w->dclock.xftdraw, &w->dclock.xftfg, w->dclock.xftfont, x, +- (BORDER/2) + tsize - 2, datestr, datep); +-#else +- XFillRectangle(dpy, win, w->dclock.backGC, +- 0, 0, winwidth, tsize); +- XDrawString(dpy, win, w->dclock.foreGC, +- x, ((BORDER/2)+w->dclock.xftfont->height), datestr, datep); ++ XftDrawRect(w->dclock.xftdraw, &w->dclock.xftbg, 0, 0, winwidth, tsize); ++ XftDrawString8(w->dclock.xftdraw, &w->dclock.xftfg, w->dclock.xftfont, x, ++ (BORDER/2) + tsize - 2, (FcChar8*)datestr, datep); + #endif ++ } else { ++ XFillRectangle(dpy, win, w->dclock.backGC, ++ 0, 0, winwidth, tsize); ++ XDrawString(dpy, win, w->dclock.foreGC, ++ x, ((BORDER/2)+tsize), datestr, datep); ++ } + } else { +- ++ if (XFT_COND(w->dclock)) { + #ifdef XFT_SUPPORT +- XftDrawRect(w->dclock.xftdraw, &w->dclock.xftbg, 0, winheight - tsize, ++ XftDrawRect(w->dclock.xftdraw, &w->dclock.xftbg, 0, winheight - tsize, + winwidth, tsize); +- XftDrawString8(w->dclock.xftdraw, &w->dclock.xftfg, w->dclock.xftfont, x, +- winheight - BORDER - 2, datestr, datep); +-#else +- XFillRectangle(dpy, win, w->dclock.backGC, +- 0, winheight - tsize, winwidth, tsize); +- XDrawString(dpy, win, w->dclock.foreGC, +- x, winheight - BORDER, datestr, datep); ++ XftDrawString8(w->dclock.xftdraw, &w->dclock.xftfg, w->dclock.xftfont, x, ++ winheight - BORDER - 2, (FcChar8*)datestr, datep); + #endif ++ } else { ++ XFillRectangle(dpy, win, w->dclock.backGC, ++ 0, winheight - tsize, winwidth, tsize); ++ XDrawString(dpy, win, w->dclock.foreGC, ++ x, winheight - BORDER, datestr, datep); ++ } + } + } + +@@ -1992,13 +2014,13 @@ + w->dclock.date_fmt = saved_date; + saved_date = tmp; + +- if (w->dclock.dateup && w->dclock.date_fmt) +-#ifdef XFT_SUPPORT +- TopOffset = w->core.height / 6; +-#else +- TopOffset = w->dclock.font->ascent + w->dclock.font->descent; +-#endif +- else ++ if (w->dclock.dateup && w->dclock.date_fmt) { ++ if (XFT_COND(w->dclock)) { ++ TopOffset = w->core.height / 6; ++ } else { ++ TopOffset = w->dclock.font->ascent + w->dclock.font->descent; ++ } ++ } else + TopOffset = 0; + + before.tm_wday = -1; +@@ -2021,13 +2043,13 @@ + XtSetArg(arg, XtNdateUp, !w->dclock.dateup); + XtSetValues((Widget)w, &arg, 1); + +- if (w->dclock.dateup && w->dclock.date_fmt) +-#ifdef XFT_SUPPORT +- TopOffset = w->core.height / 6; +-#else +- TopOffset = w->dclock.font->ascent + w->dclock.font->descent; +-#endif +- else ++ if (w->dclock.dateup && w->dclock.date_fmt) { ++ if (XFT_COND(w->dclock)) { ++ TopOffset = w->core.height / 6; ++ } else { ++ TopOffset = w->dclock.font->ascent + w->dclock.font->descent; ++ } ++ } else + TopOffset = 0; + + ResizeNow(w); +@@ -2038,7 +2060,7 @@ + toggle_bell(w) + DclockWidget w; + { +- if (w->dclock.bell = !w->dclock.bell) { ++ if ((w->dclock.bell = !w->dclock.bell)) { + playbell(w, 1); + } + ResizeNow(w); +@@ -2159,7 +2181,7 @@ + DclockWidget w; + XButtonEvent *event; + { +- static saved_secs, saved_miltime, saved_fade, saved_blink; ++ static int saved_secs, saved_miltime, saved_fade, saved_blink; + + if (event->button == 3) { + if (!(w->dclock.display_time = !w->dclock.display_time)) { +@@ -2184,20 +2206,20 @@ + */ + int i, x, y = (int)((BORDER/2)*y_ratio) + TopOffset; + /* first check to see if user toggles the alarm */ +-#ifdef XFT_SUPPORT +- if (TopOffset) ++ if (XFT_COND(w->dclock)) { ++ if (TopOffset) + i = (BORDER + (w->core.height / 6)) + - event->y; +- else ++ else + i = event->y - (winheight - (w->core.height / 6)); +-#else +- if (TopOffset) ++ } else { ++ if (TopOffset) + i = (BORDER + (w->dclock.font->ascent + w->dclock.font->descent)) + - event->y; +- else ++ else + i = event->y - (winheight - (w->dclock.font->ascent + + w->dclock.font->descent)); +-#endif ++ } + if (i >= 0) + toggle_alarm(w); + else for (i = 0; i < 4; i++) { |