login

<     >

2015-07-21 00:59:31 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

Add option to show/hide cursor.

diff --git a/main.c b/main.c
index dc4002d..fe7537a 100644
--- a/main.c
+++ b/main.c
@@ -64,8 +64,8 @@ get_pair(Term *term, int row, int col)
 
     /* TODO: add support for A_INVISIBLE */
     inverse = term->mode & M_REVERSE;
-    //~ if (term->mode & M_CURSORVIS)
-        //~ inverse = term->row == row && term->col == col ? !inverse : inverse;
+    if (term->mode & M_CURSORVIS)
+        inverse = term->row == row && term->col == col ? !inverse : inverse;
     cell = term->addr[row][col];
     inverse = cell.attr & A_INVERSE ? !inverse : inverse;
     if (inverse) {
@@ -129,7 +129,8 @@ render(Term *term, Font *font, GIF *gif, uint16_t delay)
 
 void
 convert_script(Term *term, const char *timing, const char *dialogue,
-               const char *mbf, const char *anim, float div, float max)
+               const char *mbf, const char *anim, float div, float max,
+               int cur)
 {
     FILE *ft;
     int fd;
@@ -169,6 +170,8 @@ convert_script(Term *term, const char *timing, const char *dialogue,
             read(fd, &ch, 1);
             parse(term, ch);
         }
+        if (!cur)
+            term->mode &= ~M_CURSORVIS;
         i++;
     }
     render(term, font, gif, 0);
@@ -194,7 +197,8 @@ help(char *name)
         "  -f font      File name of MBF font to use\n"
         "  -o output    File name of GIF output\n"
         "  -d divisor   Speedup, as in scriptreplay(1)\n"
-        "  -m maxdelay  Maximum delay, as in scriptreplay(1)\n\n"
+        "  -m maxdelay  Maximum delay, as in scriptreplay(1)\n"
+        "  -c on|off    Show/hide cursor\n\n"
         "timings:       File generated by script(1)'s -t option\n"
         "dialogue:      File generated by script(1)'s regular output\n"
     , name);
@@ -210,13 +214,15 @@ main(int argc, char *argv[])
     float d, m;
     char t[PATH_MAX];
     char s[PATH_MAX];
+    int c;
     Term *term;
 
     w = 80; h = 30;
     strncpy(f, "6x11.mbf", PATH_MAX);
     strncpy(o, "con.gif", PATH_MAX);
     d = 1.0; m = FLT_MAX;
-    while ((opt = getopt(argc, argv, "w:h:f:o:d:m:")) != -1) {
+    c = 1;
+    while ((opt = getopt(argc, argv, "w:h:f:o:d:m:c:")) != -1) {
         switch (opt) {
         case 'w':
             w = atoi(optarg);
@@ -236,6 +242,12 @@ main(int argc, char *argv[])
         case 'm':
             m = atof(optarg);
             break;
+        case 'c':
+            if (!strcmp(optarg, "on") || !strcmp(optarg, "1"))
+                c = 1;
+            else if (!strcmp(optarg, "off") || !strcmp(optarg, "0"))
+                c = 0;
+            break;
         default:
             help(argv[0]);
             return 1;
@@ -249,7 +261,7 @@ main(int argc, char *argv[])
     strncpy(t, argv[optind++], PATH_MAX);
     strncpy(s, argv[optind++], PATH_MAX);
     term = new_term(h, w);
-    convert_script(term, t, s, f, o, d, m);
+    convert_script(term, t, s, f, o, d, m, c);
     free(term);
     return 0;
 }