"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/rclock.C" between
rxvt-unicode-9.26.tar.bz2 and rxvt-unicode-9.29.tar.bz2

About: rxvt-unicode is a clone of the terminal emulator rxvt.

rclock.C  (rxvt-unicode-9.26.tar.bz2):rclock.C  (rxvt-unicode-9.29.tar.bz2)
skipping to change at line 39 skipping to change at line 39
#include <sys/types.h> #include <sys/types.h>
#include <sys/select.h> #include <sys/select.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/time.h> #include <sys/time.h>
#include <time.h> #include <time.h>
#include <dirent.h> #include <dirent.h>
#include <X11/Intrinsic.h> /* Xlib, Xutil, Xresource, Xfuncproto */ #include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "ecb.h"
#include "version.h"
#define APL_CLASS "Clock" #define APL_CLASS "Clock"
#define APL_NAME "rclock" #define APL_NAME "rclock"
#define MSG_CLASS "Appointment" #define MSG_CLASS "Appointment"
#define MSG_NAME "Appointment" #define MSG_NAME "Appointment"
#define CONFIG_FILE ".rclock" #define CONFIG_FILE ".rclock"
#ifndef EXIT_SUCCESS /* missed from <stdlib.h> ? */ #ifndef EXIT_SUCCESS /* missed from <stdlib.h> ? */
# define EXIT_SUCCESS 0 # define EXIT_SUCCESS 0
# define EXIT_FAILURE 1 # define EXIT_FAILURE 1
#endif #endif
#define VERSION "TODO: fetch from urxvt somehow"
/*--------------------------------*-C-*---------------------------------* /*--------------------------------*-C-*---------------------------------*
* Compile-time configuration. * Compile-time configuration.
*----------------------------------------------------------------------* *----------------------------------------------------------------------*
* Copyright (C) 1997 1998 mj olesen <olesen@me.QueensU.CA> * Copyright (C) 1997 1998 mj olesen <olesen@me.QueensU.CA>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
skipping to change at line 178 skipping to change at line 181
/*----------------------------------------------------------------------* /*----------------------------------------------------------------------*
* sort out conflicts * sort out conflicts
*----------------------------------------------------------------------*/ *----------------------------------------------------------------------*/
#if defined (MAIL_BELL) || defined (MAIL_SPAWN) || defined (MAIL_SPOOL) #if defined (MAIL_BELL) || defined (MAIL_SPAWN) || defined (MAIL_SPOOL)
# ifndef MAIL # ifndef MAIL
# define MAIL # define MAIL
# endif # endif
#endif #endif
/*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/
// fourth-order fixed point sine approximation,
// adapted from https://www.coranac.com/2009/07/sines/
static int32_t
Sin (int32_t arg)
{
int32_t x = (arg - 360) * 16384 / 360;
int c, y;
static const int qN = 13, qA = 12, B = 19900, C = 3516;
c = x << (30 - qN); // Semi-circle info into carry.
x -= 1 << qN; // sine -> cosine calc
x = x << (31 - qN); // Mask with PI
x = x >> (31 - qN); // Note: SIGNED shift! (to qN)
x = x * x >> (2 * qN - 14); // x=x^2 To Q14
y = B - (x * C >> 14); // B - x^2*C
y = (1 << qA) - (x * y >> 16); // A - x^2*(B-x^2*C)
x = c < 0 ? y : -y;
return x;
}
/*----------------------------------------------------------------------*/
static Display *Xdisplay; /* X display */ static Display *Xdisplay; /* X display */
static int Xfd; /* file descriptor of server connection */ static int Xfd; /* file descriptor of server connection */
static GC Xgc, Xrvgc; /* normal, reverse video GC */ static GC Xgc, Xrvgc; /* normal, reverse video GC */
#define Xscreen DefaultScreen (Xdisplay) #define Xscreen DefaultScreen (Xdisplay)
#define Xcmap DefaultColormap (Xdisplay, Xscreen) #define Xcmap DefaultColormap (Xdisplay, Xscreen)
#define Xroot DefaultRootWindow (Xdisplay) #define Xroot DefaultRootWindow (Xdisplay)
/* windows and their sizes */ /* windows and their sizes */
skipping to change at line 200 skipping to change at line 230
Window win; Window win;
int width, height; int width, height;
} mywindow_t; } mywindow_t;
static mywindow_t Clock = { None, 80, 80 }; /* parent window */ static mywindow_t Clock = { None, 80, 80 }; /* parent window */
#define fgColor 0 #define fgColor 0
#define bgColor 1 #define bgColor 1
static const char *rs_color[2] = { FG_COLOR_NAME, BG_COLOR_NAME }; static const char *rs_color[2] = { FG_COLOR_NAME, BG_COLOR_NAME };
static Pixel PixColors[2]; static unsigned long PixColors[2];
static const char *rs_geometry = NULL; static const char *rs_geometry = NULL;
#ifdef ICONWIN #ifdef ICONWIN
static const char *rs_iconGeometry = NULL; static const char *rs_iconGeometry = NULL;
static mywindow_t Icon = { None, 65, 65 }; /* icon window */ static mywindow_t Icon = { None, 65, 65 }; /* icon window */
static int iconic_state = NormalState; /* iconic startup? */ static int iconic_state = NormalState; /* iconic startup? */
#endif #endif
#ifdef REMINDERS #ifdef REMINDERS
skipping to change at line 279 skipping to change at line 309
1, 1, /* Min width and height */ 1, 1, /* Min width and height */
0, 0, /* Max width and height */ 0, 0, /* Max width and height */
1, 1, /* Width and height increments */ 1, 1, /* Width and height increments */
{1, 1}, /* x, y increments */ {1, 1}, /* x, y increments */
{1, 1}, /* Aspect ratio - not used */ {1, 1}, /* Aspect ratio - not used */
0, 0, /* base size */ 0, 0, /* base size */
NorthWestGravity /* gravity */ NorthWestGravity /* gravity */
}; };
/* subroutine declarations */ /* subroutine declarations */
static void geometry2sizehint (mywindow_t * /* win */ , static void geometry2sizehint (mywindow_t *win, const char *geom);
const char * /* geom */ ); static void Create_Windows (int argc, char *argv[]);
static void Create_Windows (int /* argc */ ,
char * /* argv */ []);
static void getXevent (); static void getXevent ();
static void print_error (const char * /* fmt */ , ...); static void print_error (const char *fmt, ...);
static void Draw_Window (mywindow_t * /* this_win */ , static void Draw_Window (mywindow_t *this_win, int full_redraw);
int /* full_redraw */ );
static void Reminder (); static void Reminder ();
static void Next_Reminder (int /* update_only */ ); static void Next_Reminder (int update_only);
/* Arguments for Next_Reminder() */ /* Arguments for Next_Reminder() */
#define REPLACE 0 #define REPLACE 0
#define UPDATE 1 #define UPDATE 1
/*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/
static void static void
usage () usage ()
{ {
skipping to change at line 334 skipping to change at line 361
#ifdef MAIL #ifdef MAIL
{"-mail seconds", "check $MAIL interval"}, {"-mail seconds", "check $MAIL interval"},
{"-mailfile file", "file to use for mail checking"}, {"-mailfile file", "file to use for mail checking"},
# ifndef MAIL_SPAWN # ifndef MAIL_SPAWN
{"-mailspawn cmd", "execute `cmd` when clock is clicked"}, {"-mailspawn cmd", "execute `cmd` when clock is clicked"},
# endif # endif
#endif #endif
{"#geom", "icon window geometry"} {"#geom", "icon window geometry"}
}; };
fprintf (stderr, "\nUsage v" VERSION ":\n " APL_NAME " [options]\n\n" "where options include:\n"); fprintf (stderr, "\nUsage for urclock version " VERSION "\n\n urclock [option s]\n\n" "where options include:\n");
for (i = 0; i < (int)optList_size (); i++) for (i = 0; i < (int)optList_size (); i++)
fprintf (stderr, " %-29s%s\n", optList[i].opt, optList[i].desc); fprintf (stderr, " %-29s%s\n", optList[i].opt, optList[i].desc);
} }
/**************** /****************
* Check out if we are using a maildir drop (qmail) * Check out if we are using a maildir drop (qmail)
* Note: this changes mail_dir to hold the "new" diretory * Note: this changes mail_dir to hold the "new" diretory
*/ */
#ifdef MAIL #ifdef MAIL
skipping to change at line 610 skipping to change at line 637
print_error ("malloc error"); print_error ("malloc error");
Abort: Abort:
print_error ("aborting"); print_error ("aborting");
return EXIT_FAILURE; return EXIT_FAILURE;
} }
/* /*
* translate geometry string to appropriate sizehint * translate geometry string to appropriate sizehint
*/ */
static void static void
geometry2sizehint (mywindow_t * win, const char *geom) geometry2sizehint (mywindow_t *win, const char *geom)
{ {
int x, y, flags; int x, y, flags;
unsigned int width, height; unsigned int width, height;
/* copy in values */ /* copy in values */
szHint.width = win->width; szHint.width = win->width;
szHint.height = win->height; szHint.height = win->height;
if (geom == NULL) if (geom == NULL)
return; return;
skipping to change at line 744 skipping to change at line 771
msgButton.Start = XCreateSimpleWindow (Xdisplay, Msg.win, msgButton.Start = XCreateSimpleWindow (Xdisplay, Msg.win,
0, 0, msgButton.width, msgButton.height , 0, PixColors[bgColor], PixColors[fgColor]); 0, 0, msgButton.width, msgButton.height , 0, PixColors[bgColor], PixColors[fgColor]);
XMapWindow (Xdisplay, msgButton.Start); XMapWindow (Xdisplay, msgButton.Start);
# endif/* NO_REMINDER_EXEC */ # endif/* NO_REMINDER_EXEC */
#endif #endif
} }
static time_t static time_t
mk_time (struct tm *tmval) mk_time (struct tm *tmval)
{ {
return (tmval->tm_min + 60 * (tmval->tm_hour + 24 * (tmval->tm_mday + 31 * ((t return (tmval->tm_min
mval->tm_mon + 1) + 12 * tmval->tm_year)))); + 60 * (tmval->tm_hour
+ 24 * (tmval->tm_mday
+ 31 * ((tmval->tm_mon + 1)
+ 12 * tmval->tm_year))));
} }
#ifdef MAIL #ifdef MAIL
static int static int
MailAvailable () MailAvailable ()
{ {
struct stat st; struct stat st;
if (is_maildir) if (is_maildir)
{ {
skipping to change at line 785 skipping to change at line 816
return !stat (mail_file, &st) && (st.st_size > 0) && (st.st_mtime >= st.st_a time); return !stat (mail_file, &st) && (st.st_size > 0) && (st.st_mtime >= st.st_a time);
} }
#endif #endif
/*----------------------------------------------------------------------* /*----------------------------------------------------------------------*
* Redraw the whole window after an exposure or size change. * Redraw the whole window after an exposure or size change.
* After a timeout, only redraw the hands. * After a timeout, only redraw the hands.
* Provide reminder if needed. * Provide reminder if needed.
*----------------------------------------------------------------------*/ *----------------------------------------------------------------------*/
static void static void
Draw_Window (mywindow_t * W, int full_redraw) Draw_Window (mywindow_t *W, int full_redraw)
{ {
/* pre-computed values for sin() x1000, to avoid using floats */
static const short Sin[720] = {
0,
9, 17, 26, 35, 44, 52, 61, 70, 78, 87, 96, 105,
113, 122, 131, 139, 148, 156, 165, 174, 182, 191, 199, 208,
216, 225, 233, 242, 250, 259, 267, 276, 284, 292, 301, 309,
317, 326, 334, 342, 350, 358, 367, 375, 383, 391, 399, 407,
415, 423, 431, 438, 446, 454, 462, 469, 477, 485, 492, 500,
508, 515, 522, 530, 537, 545, 552, 559, 566, 574, 581, 588,
595, 602, 609, 616, 623, 629, 636, 643, 649, 656, 663, 669,
676, 682, 688, 695, 701, 707, 713, 719, 725, 731, 737, 743,
749, 755, 760, 766, 772, 777, 783, 788, 793, 799, 804, 809,
814, 819, 824, 829, 834, 839, 843, 848, 853, 857, 862, 866,
870, 875, 879, 883, 887, 891, 895, 899, 903, 906, 910, 914,
917, 921, 924, 927, 930, 934, 937, 940, 943, 946, 948, 951,
954, 956, 959, 961, 964, 966, 968, 970, 972, 974, 976, 978,
980, 982, 983, 985, 986, 988, 989, 990, 991, 993, 994, 995,
995, 996, 997, 998, 998, 999, 999, 999, 1000, 1000, 1000, 1000,
1000, 1000, 1000, 999, 999, 999, 998, 998, 997, 996, 995, 995,
994, 993, 991, 990, 989, 988, 986, 985, 983, 982, 980, 978,
976, 974, 972, 970, 968, 966, 964, 961, 959, 956, 954, 951,
948, 946, 943, 940, 937, 934, 930, 927, 924, 921, 917, 914,
910, 906, 903, 899, 895, 891, 887, 883, 879, 875, 870, 866,
862, 857, 853, 848, 843, 839, 834, 829, 824, 819, 814, 809,
804, 799, 793, 788, 783, 777, 772, 766, 760, 755, 749, 743,
737, 731, 725, 719, 713, 707, 701, 695, 688, 682, 676, 669,
663, 656, 649, 643, 636, 629, 623, 616, 609, 602, 595, 588,
581, 574, 566, 559, 552, 545, 537, 530, 523, 515, 508, 500,
492, 485, 477, 469, 462, 454, 446, 438, 431, 423, 415, 407,
399, 391, 383, 375, 367, 358, 350, 342, 334, 326, 317, 309,
301, 292, 284, 276, 267, 259, 250, 242, 233, 225, 216, 208,
199, 191, 182, 174, 165, 156, 148, 139, 131, 122, 113, 105,
96, 87, 78, 70, 61, 52, 44, 35, 26, 17, 9, 0,
-9, -17, -26, -35, -44, -52, -61, -70, -78, -87, -96, -105,
-113, -122, -131, -139, -148, -156, -165, -174, -182, -191, -199, -208,
-216, -225, -233, -242, -250, -259, -267, -276, -284, -292, -301, -309,
-317, -326, -334, -342, -350, -358, -366, -375, -383, -391, -399, -407,
-415, -423, -431, -438, -446, -454, -462, -469, -477, -485, -492, -500,
-508, -515, -522, -530, -537, -545, -552, -559, -566, -574, -581, -588,
-595, -602, -609, -616, -623, -629, -636, -643, -649, -656, -663, -669,
-676, -682, -688, -695, -701, -707, -713, -719, -725, -731, -737, -743,
-749, -755, -760, -766, -772, -777, -783, -788, -793, -799, -804, -809,
-814, -819, -824, -829, -834, -839, -843, -848, -853, -857, -862, -866,
-870, -875, -879, -883, -887, -891, -895, -899, -903, -906, -910, -914,
-917, -921, -924, -927, -930, -934, -937, -940, -943, -946, -948, -951,
-954, -956, -959, -961, -964, -966, -968, -970, -972, -974, -976, -978,
-980, -982, -983, -985, -986, -988, -989, -990, -991, -993, -994, -995,
-995, -996, -997, -998, -998, -999, -999, -999, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -999, -999, -999, -998, -998, -997, -996, -995, -995,
-994, -993, -991, -990, -989, -988, -986, -985, -983, -982, -980, -978,
-976, -974, -972, -970, -968, -966, -964, -961, -959, -956, -954, -951,
-948, -946, -943, -940, -937, -934, -930, -927, -924, -921, -917, -914,
-910, -906, -903, -899, -895, -891, -887, -883, -879, -875, -870, -866,
-862, -857, -853, -848, -843, -839, -834, -829, -824, -819, -814, -809,
-804, -799, -793, -788, -783, -777, -772, -766, -760, -755, -749, -743,
-737, -731, -725, -719, -713, -707, -701, -695, -688, -682, -676, -669,
-663, -656, -649, -643, -636, -629, -623, -616, -609, -602, -595, -588,
-581, -574, -566, -559, -552, -545, -537, -530, -523, -515, -508, -500,
-492, -485, -477, -469, -462, -454, -446, -438, -431, -423, -415, -407,
-399, -391, -383, -375, -367, -358, -350, -342, -334, -326, -317, -309,
-301, -292, -284, -276, -267, -259, -250, -242, -233, -225, -216, -208,
-199, -191, -182, -174, -165, -156, -148, -139, -131, -122, -113, -105,
-96, -87, -78, -70, -61, -52, -44, -35, -26, -17, -9,
};
static int savedDay = -1; static int savedDay = -1;
time_t currentTime; time_t currentTime;
struct tm *tmval; struct tm *tmval;
int ctr_x, ctr_y; int ctr_x, ctr_y;
typedef struct typedef struct
{ {
int h_x, h_y; /* hour */ int h_x, h_y; /* hour */
int m_x, m_y; /* minute */ int m_x, m_y; /* minute */
skipping to change at line 876 skipping to change at line 842
GC X_gc, X_rvgc; GC X_gc, X_rvgc;
static hands_t HandsOld = { -1 }; static hands_t HandsOld = { -1 };
#ifdef ICONWIN #ifdef ICONWIN
static hands_t HandsOld_icon = { -1 }; static hands_t HandsOld_icon = { -1 };
#endif #endif
#ifdef REMINDERS #ifdef REMINDERS
static int lastUpdateTime = -10; static int lastUpdateTime = -10;
#endif #endif
#ifdef DATE_ON_CLOCK_FACE
static char clockdate[10];
#endif
#ifdef MAIL #ifdef MAIL
static time_t mailTime = 0; static time_t mailTime = 0;
static int MailUp = 0, MailUp_rvideo = 0; static int MailUp = 0, MailUp_rvideo = 0;
# ifdef ICONWIN # ifdef ICONWIN
static int MailUp_icon = 0; static int MailUp_icon = 0;
# endif # endif
#endif /* MAIL */ #endif /* MAIL */
skipping to change at line 946 skipping to change at line 915
/* once every day, update the window and icon name */ /* once every day, update the window and icon name */
if (tmval->tm_yday != savedDay) if (tmval->tm_yday != savedDay)
{ {
char str[20]; char str[20];
savedDay = tmval->tm_yday; savedDay = tmval->tm_yday;
strftime (str, sizeof (str), "%a %h %d", tmval); strftime (str, sizeof (str), "%a %h %d", tmval);
XStoreName (Xdisplay, Clock.win, str); XStoreName (Xdisplay, Clock.win, str);
XSetIconName (Xdisplay, Clock.win, str); XSetIconName (Xdisplay, Clock.win, str);
#if defined(REMINDERS) && defined(DATE_ON_CLOCK_FACE)
if (show_date)
{
strftime (clockdate, sizeof (clockdate), "%d", tmval);
full_redraw = 1;
}
} }
#endif
if (full_redraw) if (full_redraw)
XClearWindow (Xdisplay, W->win); XClearWindow (Xdisplay, W->win);
#ifdef REMINDERS #ifdef REMINDERS
/* for a message window, just re-draw the message */ /* for a message window, just re-draw the message */
if (W->win == Msg.win) if (W->win == Msg.win)
{ {
char *beg, *next; char *beg, *next;
int lines; int lines;
skipping to change at line 978 skipping to change at line 955
{ {
next = end + 2; next = end + 2;
} }
XDrawString (Xdisplay, Msg.win, XDrawString (Xdisplay, Msg.win,
Xgc, Xgc,
(Msg.width - (Msg.width -
XTextWidth (Xfont, beg, (end - beg))) / 2, 10 + Xfont->a scent + FontHeight () * lines, beg, (end - beg)); XTextWidth (Xfont, beg, (end - beg))) / 2, 10 + Xfont->a scent + FontHeight () * lines, beg, (end - beg));
} }
XDrawString (Xdisplay, msgButton.Dismiss, Xrvgc, (msgButton.width - XTextW idth (Xfont, "Done", 4)) / 2, Xfont->ascent + 2, "Done", 4); XDrawString (Xdisplay, msgButton.Dismiss, Xrvgc, (msgButton.width - XTextW idth (Xfont, "Done" , 4)) / 2, Xfont->ascent + 2, "Done" , 4);
XDrawString (Xdisplay, msgButton.Defer, Xrvgc, (msgButton.width - XTextWid th (Xfont, "Defer", 5)) / 2, Xfont->ascent + 2, "Defer", 5); XDrawString (Xdisplay, msgButton.Defer , Xrvgc, (msgButton.width - XTextW idth (Xfont, "Defer", 5)) / 2, Xfont->ascent + 2, "Defer", 5);
# ifndef NO_REMINDER_EXEC # ifndef NO_REMINDER_EXEC
XDrawString (Xdisplay, msgButton.Start, Xrvgc, (msgButton.width - XTextWid th (Xfont, "Start", 5)) / 2, Xfont->ascent + 2, "Start", 5); XDrawString (Xdisplay, msgButton.Start , Xrvgc, (msgButton.width - XTextW idth (Xfont, "Start", 5)) / 2, Xfont->ascent + 2, "Start", 5);
if (strlen (execPrgm) > 1) if (strlen (execPrgm) > 1)
XMapWindow (Xdisplay, msgButton.Start); XMapWindow (Xdisplay, msgButton.Start);
else else
XUnmapWindow (Xdisplay, msgButton.Start); XUnmapWindow (Xdisplay, msgButton.Start);
# endif /* NO_REMINDER_EXEC */ # endif /* NO_REMINDER_EXEC */
return; return;
} }
/* /*
skipping to change at line 1016 skipping to change at line 993
{ {
Next_Reminder (UPDATE); Next_Reminder (UPDATE);
lastUpdateTime = currentTime; lastUpdateTime = currentTime;
} }
#endif #endif
/* /*
* draw clock * draw clock
*/ */
ctr_x = (W->width / 2); ctr_x = W->width / 2;
ctr_y = (W->height / 2); ctr_y = W->height / 2;
#define XPOS(i,val) (ctr_x + (W->width * Sin[i%720] * (val) + 100000) / 200000) #define XPOS(i,val) (ctr_x + (W->width * Sin (i ) + 4096) / (819200 / (val
#define YPOS(i,val) (ctr_y - (W->height * Sin[(i+180)%720] * (val) + 100000) / 2 )))
00000) #define YPOS(i,val) (ctr_y - (W->height * Sin (i + 180) + 4096) / (819200 / (val
)))
/* /*
* how to draw the clock face * how to draw the clock face
*/ */
/* calculate the positions of the hands */ /* calculate the positions of the hands */
{ {
int angle = (tmval->tm_hour % 12) * 60 + tmval->tm_min; int angle = (tmval->tm_hour % 12) * 60 + tmval->tm_min;
HandsNow.h_x = XPOS (angle, 60); HandsNow.h_x = XPOS (angle, 60);
HandsNow.h_y = YPOS (angle, 60); HandsNow.h_y = YPOS (angle, 60);
skipping to change at line 1069 skipping to change at line 1046
#endif #endif
{ {
X_gc = Xgc; X_gc = Xgc;
X_rvgc = Xrvgc; X_rvgc = Xrvgc;
} }
/* /*
* Draw the date in the lower half of the clock window. * Draw the date in the lower half of the clock window.
* The code is enclosed in REMINDERS because it uses the same * The code is enclosed in REMINDERS because it uses the same
* font as the reminders code. * font as the reminders code.
* I believe this should be drawn always so it does not get
* "swept away" by the minute hand.
*/ */
#if defined(REMINDERS) && defined(DATE_ON_CLOCK_FACE) #if defined(REMINDERS) && defined(DATE_ON_CLOCK_FACE)
if (show_date) if (show_date)
{ XDrawString (Xdisplay, W->win, X_gc,
char date[10]; ctr_x - XTextWidth (Xfont, clockdate, strlen (clockdate)) / 2,
ctr_y + FontHeight () + (ctr_y - FontHeight ()) / 2, clockdate,
currentTime = time (NULL) + adjustTime; /* get the current time */ strlen (clockdate));
tmval = localtime (&currentTime);
strftime (date, sizeof (date), "%d", tmval);
XDrawString (Xdisplay, W->win, X_gc,
ctr_x - XTextWidth (Xfont, date, strlen (date)) / 2,
ctr_y + FontHeight () + (ctr_y - FontHeight ()) / 2, date, st
rlen (date));
}
#endif #endif
if (full_redraw) if (full_redraw)
{ {
int mintick; int mintick;
/* /*
* draw clock face * draw clock face
*/ */
#ifdef SUBTICKS #ifdef SUBTICKS
 End of changes. 23 change blocks. 
103 lines changed or deleted 71 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)