/* * TTY-CLOCK headers file. * Copyright © 2008 Martin Duquesnoy * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * Neither the name of the nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef TTYCLOCK_H_INCLUDED #define TTYCLOCK_H_INCLUDED #include #include #include #include #include #include #include /* Macro */ #define NORMFRAMEW 35 #define SECFRAMEW 54 #define UPDATETIME 10000 #define DATEWINH 3 /* Help string */ #define HELPSTR "tty-clock usage : tty-clock -[option] \n\ -s, --second Show seconds \n\ -l, --lock Lock the keyboard \n\ -c, --center Set the clock at the center of the terminal \n\ -t, --twelve Set the hour in 12h format \n\ -v, --version Show tty-clock version \n\ -i, --info Show some info about tty-clock \n\ -h, --help Show this page " typedef enum { False, True } Bool; /* Global ttyclock struct */ typedef struct { /* while() boolean */ Bool running; /* Running option */ struct { Bool second; Bool twelve; Bool keylock; Bool center; } option; /* Clock geometry */ struct { int x, y, w, h; } geo; /* Date content ([2] = number by number) */ struct { unsigned int hour[2]; unsigned int minute[2]; unsigned int second[2]; char datestr[56]; } date; /* time.h utils */ struct tm *tm; time_t lt; /* Clock member */ char *meridiem; WINDOW* framewin; WINDOW* datewin; } ttyclock_t; /* Prototypes */ void init(void); void signal_handler(int signal); void update_hour(void); void draw_number(int n, int x, int y); void draw_clock(void); void clock_move(int x, int y, int w, int h); void set_second(void); void set_center(Bool b); void key_event(void); /* Global variable */ ttyclock_t *ttyclock; /* Number matrix */ const Bool number[][15] = { {1,1,1,1,0,1,1,0,1,1,0,1,1,1,1}, /* 0 */ {0,0,1,0,0,1,0,0,1,0,0,1,0,0,1}, /* 1 */ {1,1,1,0,0,1,1,1,1,1,0,0,1,1,1}, /* 2 */ {1,1,1,0,0,1,1,1,1,0,0,1,1,1,1}, /* 3 */ {1,0,1,1,0,1,1,1,1,0,0,1,0,0,1}, /* 4 */ {1,1,1,1,0,0,1,1,1,0,0,1,1,1,1}, /* 5 */ {1,1,1,1,0,0,1,1,1,1,0,1,1,1,1}, /* 6 */ {1,1,1,0,0,1,0,0,1,0,0,1,0,0,1}, /* 7 */ {1,1,1,1,0,1,1,1,1,1,0,1,1,1,1}, /* 8 */ {1,1,1,1,0,1,1,1,1,0,0,1,1,1,1}, /* 9 */ }; #endif /* TTYCLOCK_H_INCLUDED */