diff options
Diffstat (limited to 'src/screen_clock.c')
-rw-r--r-- | src/screen_clock.c | 313 |
1 files changed, 152 insertions, 161 deletions
diff --git a/src/screen_clock.c b/src/screen_clock.c index c996c1924..dee3e1e3e 100644 --- a/src/screen_clock.c +++ b/src/screen_clock.c @@ -31,10 +31,10 @@ static gboolean enable_seconds = ENABLE_SECONDS; /* orginal variables from gdc.c */ static short disp[11] = -{ - 075557, 011111, 071747, 071717, 055711, - 074717, 074757, 071111, 075757, 075717, 002020 -}; + { + 075557, 011111, 071747, 071717, 055711, + 074717, 074757, 071111, 075757, 075717, 002020 + }; static long older[6], next[6], newer[6], mask; @@ -46,104 +46,102 @@ static int XLENGTH = 54; static void set(int t, int n) { - int i, m; - - m = 7 << n; - for (i = 0; i < 5; i++) { - next[i] |= ((disp[t] >> ((4 - i) * 3)) & 07) << n; - mask |= (next[i] ^ older[i]) & m; - } - if (mask & m) - mask |= m; + int i, m; + + m = 7 << n; + for (i = 0; i < 5; i++) { + next[i] |= ((disp[t] >> ((4 - i) * 3)) & 07) << n; + mask |= (next[i] ^ older[i]) & m; + } + if (mask & m) + mask |= m; } static void drawbox(void) { - chtype bottom[XLENGTH + 1]; - int n; - - mvwaddch(win.w, YBASE - 1, XBASE - 1, ACS_ULCORNER); - whline(win.w, ACS_HLINE, XLENGTH); - mvwaddch(win.w, YBASE - 1, XBASE + XLENGTH, ACS_URCORNER); - - mvwaddch(win.w, YBASE + YDEPTH, XBASE - 1, ACS_LLCORNER); - mvwinchnstr(win.w, YBASE + YDEPTH, XBASE, bottom, XLENGTH); - for (n = 0; n < XLENGTH; n++) - bottom[n] = ACS_HLINE | (bottom[n] & (A_ATTRIBUTES | A_COLOR)); - mvwaddchnstr(win.w, YBASE + YDEPTH, XBASE, bottom, XLENGTH); - mvwaddch(win.w, YBASE + YDEPTH, XBASE + XLENGTH, ACS_LRCORNER); - - wmove(win.w, YBASE, XBASE - 1); - wvline(win.w, ACS_VLINE, YDEPTH); - - wmove(win.w, YBASE, XBASE + XLENGTH); - wvline(win.w, ACS_VLINE, YDEPTH); + chtype bottom[XLENGTH + 1]; + int n; + + mvwaddch(win.w, YBASE - 1, XBASE - 1, ACS_ULCORNER); + whline(win.w, ACS_HLINE, XLENGTH); + mvwaddch(win.w, YBASE - 1, XBASE + XLENGTH, ACS_URCORNER); + + mvwaddch(win.w, YBASE + YDEPTH, XBASE - 1, ACS_LLCORNER); + mvwinchnstr(win.w, YBASE + YDEPTH, XBASE, bottom, XLENGTH); + for (n = 0; n < XLENGTH; n++) + bottom[n] = ACS_HLINE | (bottom[n] & (A_ATTRIBUTES | A_COLOR)); + mvwaddchnstr(win.w, YBASE + YDEPTH, XBASE, bottom, XLENGTH); + mvwaddch(win.w, YBASE + YDEPTH, XBASE + XLENGTH, ACS_LRCORNER); + + wmove(win.w, YBASE, XBASE - 1); + wvline(win.w, ACS_VLINE, YDEPTH); + + wmove(win.w, YBASE, XBASE + XLENGTH); + wvline(win.w, ACS_VLINE, YDEPTH); } static void standt(int on) { - if(on) - wattron(win.w, A_REVERSE); - else - wattroff(win.w, A_REVERSE); + if (on) + wattron(win.w, A_REVERSE); + else + wattroff(win.w, A_REVERSE); } - - /* ncmpc screen functions */ static void clock_resize(int cols, int rows) { - int j; - - for (j = 0; j < 5; j++) - older[j] = newer[j] = next[j] = 0; - - win.cols = cols; - win.rows = rows; - - if( cols<60 ) - enable_seconds = FALSE; - else - enable_seconds = ENABLE_SECONDS; - - if( enable_seconds ) - XLENGTH = 54; - else - XLENGTH = 54-18; - - - XBASE = (cols-XLENGTH)/2; - YBASE = (rows-YDEPTH)/2-(YDEPTH/2)+2; + int j; + + for (j = 0; j < 5; j++) + older[j] = newer[j] = next[j] = 0; + + win.cols = cols; + win.rows = rows; + + if (cols < 60) + enable_seconds = FALSE; + else + enable_seconds = ENABLE_SECONDS; + + if (enable_seconds) + XLENGTH = 54; + else + XLENGTH = 54-18; + + + XBASE = (cols-XLENGTH)/2; + YBASE = (rows-YDEPTH)/2-(YDEPTH/2)+2; } -static void +static void clock_init(WINDOW *w, int cols, int rows) { - win.w = w; - clock_resize(cols, rows); + win.w = w; + clock_resize(cols, rows); } -static void +static void clock_exit(void) { } -static void +static void clock_open(screen_t *screen, mpdclient_t *c) { - int j; + int j; - for (j = 0; j < 5; j++) - older[j] = newer[j] = next[j] = 0; + for (j = 0; j < 5; j++) + older[j] = newer[j] = next[j] = 0; } -static void +static void clock_close(void) { } @@ -151,120 +149,113 @@ clock_close(void) static char * clock_title(char *str, size_t size) { - return _("Clock"); + return _("Clock"); } -static void +static void clock_update(screen_t *screen, mpdclient_t *c) -{ - time_t now; - struct tm *tm; - long t, a; - int i, j, s, k; - char buf[BUFSIZE]; - - time(&now); - tm = localtime(&now); - - if( win.rows<=YDEPTH+1 || win.cols<=XLENGTH+1 ) - { - strftime(buf, BUFSIZE, "%X ",tm); - mvwaddstr(win.w, win.rows ? win.rows/2:0, (win.cols-strlen(buf))/2, buf); - wrefresh(win.w); - return; - } - - - - mask = 0; - set(tm->tm_sec % 10, 0); - set(tm->tm_sec / 10, 4); - set(tm->tm_min % 10, 10); - set(tm->tm_min / 10, 14); - set(tm->tm_hour % 10, 20); - set(tm->tm_hour / 10, 24); - set(10, 7); - set(10, 17); - - for (k = 0; k < 6; k++) { - newer[k] = (newer[k] & ~mask) | (next[k] & mask); - next[k] = 0; - for (s = 1; s >= 0; s--) { - standt(s); - for (i = 0; i < 6; i++) { - if ((a = (newer[i] ^ older[i]) & (s ? newer : older)[i]) - != 0) { - for (j = 0, t = 1 << 26; t; t >>= 1, j++) { - if (a & t) { - if (!(a & (t << 1))) { - wmove(win.w, YBASE + i, XBASE + 2 * j); - } - if( enable_seconds || j<18 ) - waddstr(win.w, " "); - } - } +{ + time_t now; + struct tm *tm; + long t, a; + int i, j, s, k; + char buf[BUFSIZE]; + + time(&now); + tm = localtime(&now); + + if (win.rows<=YDEPTH+1 || win.cols<=XLENGTH+1) { + strftime(buf, BUFSIZE, "%X ",tm); + mvwaddstr(win.w, win.rows ? win.rows/2:0, (win.cols-strlen(buf))/2, buf); + wrefresh(win.w); + return; } - if (!s) { - older[i] = newer[i]; + + mask = 0; + set(tm->tm_sec % 10, 0); + set(tm->tm_sec / 10, 4); + set(tm->tm_min % 10, 10); + set(tm->tm_min / 10, 14); + set(tm->tm_hour % 10, 20); + set(tm->tm_hour / 10, 24); + set(10, 7); + set(10, 17); + + for (k = 0; k < 6; k++) { + newer[k] = (newer[k] & ~mask) | (next[k] & mask); + next[k] = 0; + for (s = 1; s >= 0; s--) { + standt(s); + for (i = 0; i < 6; i++) { + if ((a = (newer[i] ^ older[i]) & (s ? newer : older)[i]) + != 0) { + for (j = 0, t = 1 << 26; t; t >>= 1, j++) { + if (a & t) { + if (!(a & (t << 1))) { + wmove(win.w, YBASE + i, XBASE + 2 * j); + } + if( enable_seconds || j<18 ) + waddstr(win.w, " "); + } + } + } + if (!s) { + older[i] = newer[i]; + } + } + if (!s) { + wrefresh(win.w); + } + } } - } - if (!s) { - wrefresh(win.w); - } - } - } - + #ifdef HAVE_LOCALE_H - strftime(buf, BUFSIZE, "%x", tm); + strftime(buf, BUFSIZE, "%x", tm); # else - /* this depends on the detailed format of ctime(3) */ - strcpy(buf, ctime(&now)); - strcpy(buf + 10, buf + 19); + /* this depends on the detailed format of ctime(3) */ + strcpy(buf, ctime(&now)); + strcpy(buf + 10, buf + 19); #endif - mvwaddstr(win.w, YBASE+YDEPTH+1, (win.cols-strlen(buf))/2, buf); - - wmove(win.w, 6, 0); - drawbox(); - wrefresh(win.w); + mvwaddstr(win.w, YBASE+YDEPTH+1, (win.cols-strlen(buf))/2, buf); + + wmove(win.w, 6, 0); + drawbox(); + wrefresh(win.w); } -static void +static void clock_paint(screen_t *screen, mpdclient_t *c) { - /* this seems to be a better way to clear the window than wclear() ?! */ - wmove(win.w, 0, 0); - wclrtobot(win.w); - clock_update(screen, c); + /* this seems to be a better way to clear the window than wclear() ?! */ + wmove(win.w, 0, 0); + wclrtobot(win.w); + clock_update(screen, c); } - - -static int +static int clock_cmd(screen_t *screen, mpdclient_t *c, command_t cmd) { - return 0; + return 0; } - screen_functions_t * get_screen_clock(void) { - static screen_functions_t functions; - - memset(&functions, 0, sizeof(screen_functions_t)); - functions.init = clock_init; - functions.exit = clock_exit; - functions.open = clock_open; - functions.close = clock_close; - functions.resize = clock_resize; - functions.paint = clock_paint; - functions.update = clock_update; - functions.cmd = clock_cmd; - functions.get_lw = NULL; - functions.get_title = clock_title; - - return &functions; + static screen_functions_t functions; + + memset(&functions, 0, sizeof(screen_functions_t)); + functions.init = clock_init; + functions.exit = clock_exit; + functions.open = clock_open; + functions.close = clock_close; + functions.resize = clock_resize; + functions.paint = clock_paint; + functions.update = clock_update; + functions.cmd = clock_cmd; + functions.get_lw = NULL; + functions.get_title = clock_title; + + return &functions; } - #endif |