diff --git a/nclock b/nclock index 53ac569..e854e74 100755 Binary files a/nclock and b/nclock differ diff --git a/nclock.c b/nclock.c index f915e64..3bf300e 100644 --- a/nclock.c +++ b/nclock.c @@ -5,6 +5,7 @@ #include "nclock.h" #include "numbers.h" #include +#include //sleep int main(int argc, char **argv) { /* enable ncurses standard screen */ @@ -16,10 +17,8 @@ int main(int argc, char **argv) { initState(&s); //mvprintw(s.centery, s.centerx, number[5][0]); //mvprintw(20, 30, number[0][3]); - drawNumber(10,10,4); + draw(&s); getch(); - drawNumber(10,16,2); - getch(); } void quitProgram(void) { @@ -33,12 +32,52 @@ void initState(state *s) { } void drawNumber(int starty, int startx, int num) { + int i, j, numarr[2]; + for (i = 0; i < 2; i++) { + numarr[i] = num % 10; + num /= 10; + } + + for (j = 0; j < 2; j++) { + for (i = 0; i < 5; i++) { + mvprintw(starty + i, startx + (6 * j), number[numarr[1 - j]][i]); + } + } + +} + +void drawColon(int starty, int startx) { int i; for (i = 0; i < 5; i++) { - mvprintw(starty + i, startx, number[num][i]); + mvprintw(starty + i, startx, colon[i]); } } +void drawTime(state *s, int hour, int min, int sec) { + //int countx = 0, i; + int newcenty = s->centery - 3; //start above the center + /* center X: */ + /* (3 Nuberpairs + 2 colons) / 2 */ + int newcentx = s->centerx - ((3 * NUMBERPAIR + 2 * COLONSPACE) / 2); + /* hour */ + drawNumber(newcenty, newcentx, hour); + drawColon(newcenty, newcentx + NUMBERPAIR); + /* minute */ + drawNumber(newcenty, newcentx + NUMBERPAIR + COLONSPACE, min); + drawColon(newcenty, newcentx + NUMBERPAIR * 2 + COLONSPACE); + drawNumber(newcenty, newcentx + NUMBERPAIR * 2 + COLONSPACE * 2, sec); + +} - +void draw(state *s) { + time_t timer; + struct tm *curTime; + while (1) { + time(&timer); + curTime = localtime(&timer); + drawTime(s, curTime->tm_hour, curTime->tm_min, curTime->tm_sec); + refresh(); + sleep(1); + } +} diff --git a/nclock.h b/nclock.h index d145150..c36efe8 100644 --- a/nclock.h +++ b/nclock.h @@ -1,3 +1,6 @@ +#define NUMBERPAIR 11 //one numberpair has 11 chars (direction x) +#define COLONSPACE 5 + typedef struct { int centerx; int centery; @@ -12,4 +15,6 @@ typedef struct { void quitProgram(void); void initState(state *s); void drawNumber(int starty, int startx, int num); -void drawTime(state *s); +void drawTime(state *s, int hour, int min, int sec); +void drawColon(int starty, int startx); +void draw(state *s); diff --git a/numbers.h b/numbers.h index 1bd7447..faa44c2 100644 --- a/numbers.h +++ b/numbers.h @@ -73,7 +73,7 @@ const char number[10][5][6] = \ }; -const char *colon[5] = \ +const char colon[5][6] = \ {\ " ",\ " # ",\