Ignore:
Timestamp:
Mar 6, 2011, 9:17:14 AM (9 years ago)
Author:
Jean-Yves Lamoureux
Message:
  • Added command line parsing (--dateformat, --font, --help, --version)
  • Center font
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/src/cacaclock.c

    r4775 r4777  
    2424#define CACACLOCKVERSION "0.1"
    2525
     26static void usage(int argc, char **argv)
     27{
     28        char const * const * list;
    2629
    27 static char* get_date(void) {
     30        fprintf(stderr, "Usage: %s [OPTIONS]... <IMAGE>\n", argv[0]);
     31        fprintf(stderr, "Convert IMAGE to any text based available format.\n");
     32        fprintf(stderr, "Example : %s -w 80 -f ansi ./caca.png\n\n", argv[0]);
     33        fprintf(stderr, "Options:\n");
     34        fprintf(stderr, "  -h, --help\t\t\tThis help\n");
     35        fprintf(stderr, "  -v, --version\t\t\tVersion of the program\n");
     36        fprintf(stderr, "  -f, --font=FONT\t\tUse FONT for time display\n");
     37        fprintf(stderr, "  -d, --dateformat=FORMAT\tUse FORMAT as strftime argument (default %%R:%%S)\n");
     38}
     39
     40
     41static void version(void)
     42{
     43        printf(
     44                        "cacaclock Copyright 2011 Jean-Yves Lamoureux\n"
     45                        "Internet: <jylam@lnxscene.org> Version: %s (libcaca %s), date: %s\n"
     46                        "\n"
     47                        "cacaclock, along with its documentation, may be freely copied and distributed.\n"
     48                        "\n"
     49                        "The latest version of cacaclock is available from the web site,\n"
     50                        "        http://caca.zoy.org/wiki/libcaca in the libcaca package.\n"
     51                        "\n",
     52                        CACACLOCKVERSION, caca_get_version(), __DATE__);
     53}
     54
     55
     56
     57static char* get_date(char *format) {
    2858        time_t  currtime;                                                   
    2959        char *charTime = malloc(101);                                     
    3060
    3161        time(&currtime);                                                     
    32         strftime(charTime, 100,"%R:%S",localtime(&currtime));
     62        strftime(charTime, 100,format,localtime(&currtime));
    3363
    3464        return charTime;
     
    4070        caca_canvas_t *figcv;
    4171        caca_display_t *dp;
    42         uint32_t w, h;
     72        uint32_t w, h, fw, fh;
     73
     74        char *format = "%R:%S";
     75        char *font   = "/usr/share/figlet/mono12.tlf";
    4376
    4477
    45         char *font = "/usr/share/figlet/mono12.tlf";
    46         if(argc==2) font = argv[1];
     78        for(;;)
     79        {
     80                int option_index = 0;
     81                static struct caca_option long_options[] =
     82                {
     83                        { "font",        1, NULL, 'f' },
     84                        { "dateformat",  1, NULL, 'd' },
     85                        { "help",        0, NULL, 'h' },
     86                        { "version",     0, NULL, 'v' },
     87                };
     88                int c = caca_getopt(argc, argv, "f:d:hv",
     89                                long_options, &option_index);
     90                if(c == -1)
     91                        break;
     92
     93                switch(c)
     94                {
     95                        case 'h': /* --help       */
     96                                usage(argc, argv);
     97                                return 0;
     98                                break;
     99                        case 'v': /* --version    */
     100                                version();
     101                                return 0;
     102                                break;
     103                        case 'f': /* --font       */
     104                                font = caca_optarg;
     105                                break;
     106                        case 'd': /* --dateformat */
     107                                format = caca_optarg;
     108                                break;
     109                        default:
     110                                return 1;
     111                                break;
     112                }
     113        }
     114
    47115
    48116
     
    68136        }
    69137
    70         w = caca_get_canvas_width (cv);
    71         h = caca_get_canvas_height(cv);
    72 
     138        caca_set_color_ansi(figcv, CACA_DEFAULT, CACA_DEFAULT);
     139        caca_clear_canvas(cv);
    73140        for(;;) {
    74141                caca_event_t ev;
     
    80147                                goto end;
    81148                }
    82                 char *d = get_date();
     149                char *d = get_date(format);
    83150                uint32_t o = 0;
    84151
     
    91158                while(d[o])
    92159                { 
    93                         caca_set_color_ansi(figcv, CACA_WHITE, CACA_TRANSPARENT);
    94160                        caca_put_figchar(figcv, d[o++]);
    95161                }
    96162                caca_flush_figlet (figcv);
     163                fw = caca_get_canvas_width (figcv);
     164                fh = caca_get_canvas_height(figcv);     
     165
    97166                free(d);
    98                 //TODO center etc.
    99                 caca_blit(cv, 0, 0, figcv, NULL);
     167
     168                w = caca_get_canvas_width (cv);
     169                h = caca_get_canvas_height(cv);
     170                uint32_t x = (w/2) - (fw/2);
     171                uint32_t y = (h/2) - (fh/2);
     172
     173                caca_blit(cv, x, y, figcv, NULL);
    100174                caca_refresh_display(dp);
    101175                usleep(250000);
Note: See TracChangeset for help on using the changeset viewer.