removed transparency and color fading
authorDaniel Liu <mr.picklepinosaur@gmail.com>
Wed, 16 Jun 2021 16:35:12 +0000 (12:35 -0400)
committerDaniel Liu <mr.picklepinosaur@gmail.com>
Wed, 16 Jun 2021 16:35:12 +0000 (12:35 -0400)
README.md
include/viewer.h
mdp.1
src/main.c
src/viewer.c

index c4b0072..8c09976 100644 (file)
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@ Now download and install mdp:
 - On Ubuntu, you can use the existing [DEB package](https://launchpad.net/ubuntu/+source/mdp-src), or run `apt-get install mdp`.
 
 Most terminals support 256 colors only if the TERM variable is
-set correctly. To enjoy mdp's color fading feature:
+set correctly:
 
     $ export TERM=xterm-256color
 
index a5f23c4..4f9a9f1 100644 (file)
 #include "cstack.h"
 #include "url.h"
 
-#define CP_WHITE  1 // 255
-#define CP_BLUE   2 // 123
-#define CP_RED    3 // 213
-#define CP_YELLOW 4 // 208
-#define CP_BLACK  5 // CP_WHITE with foreground and background swapped
+#define CP_FG     1
+#define CP_HEADER 2
+#define CP_BOLD   3
+#define CP_TITLE  4
+#define CP_BG     5 // CP_FG with foreground and background swapped
 
-int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reload, int noreload, int slidenum, int nocodebg);
+int ncurses_display(deck_t *deck, int reload, int noreload, int slidenum, int nocodebg);
 void add_line(WINDOW *window, int y, int x, line_t *line, int max_cols, int colors, int nocodebg);
 void inline_display(WINDOW *window, const wchar_t *c, const int colors, int nocodebg);
-void fade_out(WINDOW *window, int trans, int colors, int invert);
-void fade_in(WINDOW *window, int trans, int colors, int invert);
 int int_length (int val);
 int get_slide_number(char init);
 void setup_list_strings(void);
diff --git a/mdp.1 b/mdp.1
index b43fcff..01f2e7e 100644 (file)
--- a/mdp.1
+++ b/mdp.1
@@ -39,18 +39,9 @@ Don't change the background color of code blocks.
 .BR \-e ", " \-\^\-expand
 Enable character entity expansion (e.g. '&gt;' becomes '>').
 .TP
-.BR \-f ", " \-\^\-nofade
-Disable color fading in 256 color mode.
-.TP
-.BR \-i ", " \-\^\-invert
-Swap black and white color.
-.TP
 .BR \-s ", " \-\^\-noslidenum
 Do not show slide number at the bottom.
 .TP
-.BR \-t ", " \-\^\-notrans
-Disable transparency in transparent terminal.
-.TP
 .BR \-x ", " \-\^\-noslidemax
 Show slide number, but not total number of slides.
 .
index 3279400..07ceed1 100644 (file)
@@ -32,10 +32,7 @@ void usage() {
     fprintf(stderr, "%s", "  -d, --debug       enable debug messages on STDERR\n");
     fprintf(stderr, "%s", "                    add it multiple times to increases debug level\n");
     fprintf(stderr, "%s", "  -e, --expand      enable character entity expansion\n");
-    fprintf(stderr, "%s", "  -f, --nofade      disable color fading in 256 color mode\n");
     fprintf(stderr, "%s", "  -h, --help        display this help and exit\n");
-    fprintf(stderr, "%s", "  -i, --invert      swap black and white color\n");
-    fprintf(stderr, "%s", "  -t, --notrans     disable transparency in transparent terminal\n");
     fprintf(stderr, "%s", "  -s, --noslidenum  do not show slide number at the bottom\n");
     fprintf(stderr, "%s", "  -v, --version     display the version number and license\n");
     fprintf(stderr, "%s", "  -x, --noslidemax  show slide number, but not total number of slides\n");
@@ -55,9 +52,6 @@ void version() {
 }
 
 int main(int argc, char *argv[]) {
-    int notrans = 0;   // disable transparency
-    int nofade = 0;    // disable fading
-    int invert = 0;    // invert color (black on white)
     int noexpand = 1;  // disable character entity expansion
     int reload = 0;    // reload page N (0 means no reload)
     int noreload = 1;  // reload disabled until we know input is a file
@@ -68,10 +62,7 @@ int main(int argc, char *argv[]) {
     struct option longopts[] = {
         { "debug",      no_argument, 0, 'd' },
         { "expand",     no_argument, 0, 'e' },
-        { "nofade",     no_argument, 0, 'f' },
         { "help",       no_argument, 0, 'h' },
-        { "invert",     no_argument, 0, 'i' },
-        { "notrans",    no_argument, 0, 't' },
         { "version",    no_argument, 0, 'v' },
         { "noslidenum", no_argument, 0, 's' },
         { "noslidemax", no_argument, 0, 'x' },
@@ -85,10 +76,7 @@ int main(int argc, char *argv[]) {
         switch(opt) {
             case 'd': debug += 1;   break;
             case 'e': noexpand = 0; break;
-            case 'f': nofade = 1;   break;
             case 'h': usage();      break;
-            case 'i': invert = 1;   break;
-            case 't': notrans = 1;  break;
             case 'v': version();    break;
             case 's': slidenum = 0; break;
             case 'x': slidenum = 1; break;
@@ -167,7 +155,7 @@ int main(int argc, char *argv[]) {
             markdown_debug(deck, debug);
         }
 
-        reload = ncurses_display(deck, notrans, nofade, invert, reload, noreload, slidenum, nocodebg);
+        reload = ncurses_display(deck, reload, noreload, slidenum, nocodebg);
 
         free_deck(deck);
 
index c538e7c..bfc753d 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * Functions necessary to display a deck of slides in different color modes
- * using ncurses. Only white, red, and blue are supported, as they can be
- * faded in 256 color mode.
+ * using ncurses.
  * Copyright (C) 2018 Michael Goehler
  *
  * This file is part of mdp.
 #include "viewer.h"
 #include "config.h"
 
-// color ramp for fading from black to color
-static short white_ramp[24] = { 16, 232, 233, 234, 235, 236,
-                               237, 238, 239, 240, 241, 242,
-                               244, 245, 246, 247, 248, 249,
-                               250, 251, 252, 253, 254, 255 };
-
-static short blue_ramp[24]  = { 16,  17,  17,  18,  18,  19,
-                                19,  20,  20,  21,  27,  33,
-                                32,  39,  38,  45,  44,  44,
-                                81,  81,  51,  51, 123, 123 };
-
-static short red_ramp[24]   = { 16,  52,  52,  53,  53,  89,
-                                89,  90,  90, 126, 127, 127,
-                               163, 163, 164, 164, 200, 200,
-                               201, 201, 207, 207, 213, 213 };
-
-// color ramp for fading from white to color
-static short white_ramp_invert[24] = { 15, 255, 254, 254, 252, 251,
-                                      250, 249, 248, 247, 246, 245,
-                                      243, 242, 241, 240, 239, 238,
-                                      237, 236, 235, 234, 233, 232};
-
-static short blue_ramp_invert[24]  = { 15, 231, 231, 195, 195, 159,
-                                      159, 123, 123,  87,  51,  44,
-                                       45,  38,  39,  32,  33,  33,
-                                       26,  26,  27,  27,  21,  21};
-
-static short red_ramp_invert[24]   = { 15, 231, 231, 224, 224, 225,
-                                      225, 218, 218, 219, 212, 213,
-                                      206, 207, 201, 200, 199, 199,
-                                      198, 198, 197, 197, 196, 196};
-
-int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reload, int noreload, int slidenum, int nocodebg) {
+int ncurses_display(deck_t *deck, int reload, int noreload, int slidenum, int nocodebg) {
 
     int c = 0;                // char
     int i = 0;                // iterate
@@ -70,8 +37,6 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reloa
     int lc = 0;               // line count
     int sc = 1;               // slide count
     int colors = 0;           // amount of colors supported
-    int fade = 0;             // disable color fading by default
-    int trans = -1;           // enable transparency if term supports it
     int max_lines = 0;        // max lines per slide
     int max_lines_slide = -1; // the slide that has the most lines
     int max_cols = 0;         // max columns per line
@@ -183,70 +148,25 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reloa
         start_color();
         use_default_colors();
 
-        // 256 color mode
-        if(COLORS == 256) {
-
-            if(notrans) {
-                if(invert) {
-                    trans = 15; // white in 256 color mode
-                } else {
-                    trans = 16; // black in 256 color mode
-                }
-            }
-
-            if(invert) {
-                init_pair(CP_WHITE, 232, trans);
-                init_pair(CP_BLUE, 21, trans);
-                init_pair(CP_RED, 196, trans);
-                init_pair(CP_BLACK, 15, 232);
-            } else {
-                init_pair(CP_WHITE, 255, trans);
-                init_pair(CP_BLUE, 123, trans);
-                init_pair(CP_RED, 213, trans);
-                init_pair(CP_BLACK, 16, 255);
-            }
-            init_pair(CP_YELLOW, 208, trans);
-
-            // enable color fading
-            if(!nofade)
-                fade = true;
-
-        // 8 color mode
-        } else {
-
-            if(notrans) {
-                if(invert) {
-                    trans = FG_COLOR; // white in 8 color mode
-                } else {
-                    trans = BG_COLOR; // black in 8 color mode
-                }
-            }
-
-            if(invert) {
-                init_pair(CP_WHITE, BG_COLOR, trans);
-                init_pair(CP_BLACK, FG_COLOR, BG_COLOR);
-            } else {
-                init_pair(CP_WHITE, FG_COLOR, trans);
-                init_pair(CP_BLACK, BG_COLOR, FG_COLOR);
-            }
-            init_pair(CP_BLUE, HEADER_COLOR, trans);
-            init_pair(CP_RED, BOLD_COLOR, trans);
-            init_pair(CP_YELLOW, TITLE_COLOR, trans);
-        }
+        init_pair(CP_FG, FG_COLOR, BG_COLOR);
+        init_pair(CP_BG, BG_COLOR, FG_COLOR);
+        init_pair(CP_HEADER, HEADER_COLOR, BG_COLOR);
+        init_pair(CP_BOLD, BOLD_COLOR, BG_COLOR);
+        init_pair(CP_TITLE, TITLE_COLOR, BG_COLOR);
 
         colors = 1;
     }
 
     // set background color for main window
     if(colors)
-        wbkgd(stdscr, COLOR_PAIR(CP_WHITE));
+        wbkgd(stdscr, COLOR_PAIR(CP_FG));
 
     // setup content window
     WINDOW *content = newwin(LINES - bar_top - bar_bottom, COLS, 0 + bar_top, 0);
 
     // set background color of content window
     if(colors)
-        wbkgd(content, COLOR_PAIR(CP_WHITE));
+        wbkgd(content, COLOR_PAIR(CP_FG));
 
     slide = deck->slide;
 
@@ -274,7 +194,7 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reloa
 
         // set main window text color
         if(colors)
-            wattron(stdscr, COLOR_PAIR(CP_YELLOW));
+            wattron(stdscr, COLOR_PAIR(CP_TITLE));
 
         // setup header
         if(bar_top) {
@@ -361,14 +281,6 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reloa
         // compare virtual screen to physical screen and does the actual updates
         doupdate();
 
-        // fade in
-        if(fade)
-            fade_in(content, trans, colors, invert);
-
-        // re-enable fading after any undefined key press
-        if(COLORS == 256 && !nofade)
-            fade = true;
-
         // wait for user input
         c = getch();
 
@@ -381,7 +293,6 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reloa
                 // show current slide again
                 // but stop one stop bit earlier
                 slide->stop--;
-                fade = false;
             } else {
                 if(slide->prev) {
                     // show previous slide
@@ -390,9 +301,6 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reloa
                     //stop on first bullet point always
                     if(slide->stop > 0)
                         slide->stop = 0;
-                } else {
-                    // do nothing
-                    fade = false;
                 }
             }
         } else if (evaluate_binding(next_slide_binding, c)) {
@@ -401,15 +309,11 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reloa
                 // show current slide again
                 // but stop one stop bit later (or at end of slide)
                 slide->stop++;
-                fade = false;
             } else {
                 if(slide->next) {
                     // show next slide
                     slide = slide->next;
                     sc++;
-                } else {
-                    // do nothing
-                    fade = false;
                 }
             }
         } else if (isdigit(c) && c != '0') {
@@ -450,26 +354,14 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reloa
                 // reload slide N
                 reload = sc;
                 slide = NULL;
-            } else {
-                // disable fading if reload is not possible
-                fade = false;
             }
         } else if (evaluate_binding(quit_binding, c)) {
             // quit
-            // do not fade out on exit
-            fade = false;
             // do not reload
             reload = 0;
             slide = NULL;
-        } else {
-            // disable fading on undefined key press
-            fade = false;
         }
 
-        // fade out
-        if(fade)
-            fade_out(content, trans, colors, invert);
-
         url_purge();
     }
 
@@ -525,7 +417,7 @@ void add_line(WINDOW *window, int y, int x, line_t *line, int max_cols, int colo
         // fill rest off line with spaces if we are in a code block
         if(CHECK_BIT(line->bits, IS_CODE) && colors) {
             if(colors && !nocodebg)
-                wattron(window, COLOR_PAIR(CP_BLACK));
+                wattron(window, COLOR_PAIR(CP_BG));
             for(i = getcurx(window) - x; i < max_cols; i++)
                 wprintw(window, "%s", " ");
         }
@@ -613,7 +505,7 @@ void add_line(WINDOW *window, int y, int x, line_t *line, int max_cols, int colo
 
         // reverse color for code blocks
         if(colors && !nocodebg)
-            wattron(window, COLOR_PAIR(CP_BLACK));
+            wattron(window, COLOR_PAIR(CP_BG));
 
         // print whole lines
         waddwstr(window, &line->text->value[offset]);
@@ -629,9 +521,9 @@ void add_line(WINDOW *window, int y, int x, line_t *line, int max_cols, int colo
             while(line->text->value[offset] == '>') {
                 // print a reverse color block
                 if(colors) {
-                    wattron(window, COLOR_PAIR(CP_BLACK));
+                    wattron(window, COLOR_PAIR(CP_BG));
                     wprintw(window, "%s", " ");
-                    wattron(window, COLOR_PAIR(CP_WHITE));
+                    wattron(window, COLOR_PAIR(CP_FG));
                     wprintw(window, "%s", " ");
                 } else {
                     wprintw(window, "%s", ">");
@@ -658,7 +550,7 @@ void add_line(WINDOW *window, int y, int x, line_t *line, int max_cols, int colo
 
                 // set headline color
                 if(colors)
-                    wattron(window, COLOR_PAIR(CP_BLUE));
+                    wattron(window, COLOR_PAIR(CP_HEADER));
 
                 // enable underline for H1
                 if(CHECK_BIT(line->bits, IS_H1))
@@ -681,16 +573,9 @@ void add_line(WINDOW *window, int y, int x, line_t *line, int max_cols, int colo
         }
     }
 
-    // fill rest off line with spaces
-    // we only need this if the color is inverted (e.g. code-blocks),
-    // to ensure the background fades too
-    if(CHECK_BIT(line->bits, IS_CODE))
-        for(i = getcurx(window) - x; i < max_cols; i++)
-            wprintw(window, "%s", " ");
-
     // reset to default color
     if(colors)
-        wattron(window, COLOR_PAIR(CP_WHITE));
+        wattron(window, COLOR_PAIR(CP_FG));
     wattroff(window, A_UNDERLINE);
 }
 
@@ -721,7 +606,7 @@ void inline_display(WINDOW *window, const wchar_t *c, const int colors, int noco
                     // disable highlight
                     case L'*':
                         if(colors)
-                            wattron(window, COLOR_PAIR(CP_WHITE));
+                            wattron(window, COLOR_PAIR(CP_FG));
                         break;
                     // disable underline
                     case L'_':
@@ -730,7 +615,7 @@ void inline_display(WINDOW *window, const wchar_t *c, const int colors, int noco
                     // disable inline code
                     case L'`':
                         if(colors)
-                            wattron(window, COLOR_PAIR(CP_WHITE));
+                            wattron(window, COLOR_PAIR(CP_FG));
                         break;
                 }
 
@@ -767,7 +652,7 @@ void inline_display(WINDOW *window, const wchar_t *c, const int colors, int noco
 
                             // turn higlighting and underlining on
                             if (colors)
-                                wattron(window, COLOR_PAIR(CP_BLUE));
+                                wattron(window, COLOR_PAIR(CP_HEADER));
                             wattron(window, A_UNDERLINE);
 
                             start_link_name = i;
@@ -794,7 +679,7 @@ void inline_display(WINDOW *window, const wchar_t *c, const int colors, int noco
 
                             // turn highlighting and underlining off
                             wattroff(window, A_UNDERLINE);
-                            wattron(window, COLOR_PAIR(CP_WHITE));
+                            wattron(window, COLOR_PAIR(CP_FG));
 
                         } else {
                             wprintw(window, "[");
@@ -804,7 +689,7 @@ void inline_display(WINDOW *window, const wchar_t *c, const int colors, int noco
                         // enable highlight
                         case L'*':
                             if(colors)
-                                wattron(window, COLOR_PAIR(CP_RED));
+                                wattron(window, COLOR_PAIR(CP_BOLD));
                             break;
                         // enable underline
                         case L'_':
@@ -813,7 +698,7 @@ void inline_display(WINDOW *window, const wchar_t *c, const int colors, int noco
                         // enable inline code
                         case L'`':
                             if(colors && !nocodebg)
-                                wattron(window, COLOR_PAIR(CP_BLACK));
+                                wattron(window, COLOR_PAIR(CP_BG));
                             break;
                         // do nothing for backslashes
                     }
@@ -842,7 +727,7 @@ void inline_display(WINDOW *window, const wchar_t *c, const int colors, int noco
             // disable highlight
             case L'*':
                 if(colors)
-                    wattron(window, COLOR_PAIR(CP_WHITE));
+                    wattron(window, COLOR_PAIR(CP_FG));
                 break;
             // disable underline
             case L'_':
@@ -851,7 +736,7 @@ void inline_display(WINDOW *window, const wchar_t *c, const int colors, int noco
             // disable inline code
             case L'`':
                 if(colors)
-                    wattron(window, COLOR_PAIR(CP_WHITE));
+                    wattron(window, COLOR_PAIR(CP_FG));
                 break;
             // do nothing for backslashes
         }
@@ -860,66 +745,6 @@ void inline_display(WINDOW *window, const wchar_t *c, const int colors, int noco
     (stack->delete)(stack);
 }
 
-void fade_out(WINDOW *window, int trans, int colors, int invert) {
-    int i; // increment
-    if(colors && COLORS == 256) {
-        for(i = 22; i >= 0; i--) {
-
-            // dim color pairs
-            if(invert) {
-                init_pair(CP_WHITE, white_ramp_invert[i], trans);
-                init_pair(CP_BLUE, blue_ramp_invert[i], trans);
-                init_pair(CP_RED, red_ramp_invert[i], trans);
-                init_pair(CP_BLACK, 15, white_ramp_invert[i]);
-            } else {
-                init_pair(CP_WHITE, white_ramp[i], trans);
-                init_pair(CP_BLUE, blue_ramp[i], trans);
-                init_pair(CP_RED, red_ramp[i], trans);
-                init_pair(CP_BLACK, 16, white_ramp[i]);
-            }
-
-            // refresh virtual screen with new color
-            wnoutrefresh(window);
-
-            // compare virtual screen to physical screen and does the actual updates
-            doupdate();
-
-            // delay for our eyes to recognize the change
-            usleep(FADE_DELAY);
-        }
-    }
-}
-
-void fade_in(WINDOW *window, int trans, int colors, int invert) {
-    int i; // increment
-    if(colors && COLORS == 256) {
-        for(i = 0; i <= 23; i++) {
-
-            // brighten color pairs
-            if(invert) {
-                init_pair(CP_WHITE, white_ramp_invert[i], trans);
-                init_pair(CP_BLUE, blue_ramp_invert[i], trans);
-                init_pair(CP_RED, red_ramp_invert[i], trans);
-                init_pair(CP_BLACK, 15, white_ramp_invert[i]);
-            } else {
-                init_pair(CP_WHITE, white_ramp[i], trans);
-                init_pair(CP_BLUE, blue_ramp[i], trans);
-                init_pair(CP_RED, red_ramp[i], trans);
-                init_pair(CP_BLACK, 16, white_ramp[i]);
-            }
-
-            // refresh virtual screen with new color
-            wnoutrefresh(window);
-
-            // compare virtual screen to physical screen and does the actual updates
-            doupdate();
-
-            // delay for our eyes to recognize the change
-            usleep(FADE_DELAY);
-        }
-    }
-}
-
 int int_length (int val) {
     int l = 1;
     while(val > 9) {