* 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.
- * Copyright (C) 2014 Michael Goehler
+ * Copyright (C) 2015 Michael Goehler
*
* This file is part of mdp.
*
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 ncurses_display(deck_t *deck, int notrans, int nofade, int invert, int reload, int noreload, int slidenum) {
int c = 0; // char
int i = 0; // iterate
int bar_top = (deck->headers > 0) ? 1 : 0;
// header line 2 is displayed at the bottom
// anyway we display the slide number at the bottom
- int bar_bottom = 1;
+ int bar_bottom = (slidenum || deck->headers > 1)? 1 : 0;
slide_t *slide = deck->slide;
line_t *line;
if(deck->headers > 1) {
line = deck->header->next;
offset = next_blank(line->text, 0) + 1;
- // add text to left footer
- mvwaddwstr(stdscr,
- LINES - 1, 3,
- &line->text->value[offset]);
+ switch(slidenum) {
+ case 0: // add text to center footer
+ mvwaddwstr(stdscr,
+ LINES - 1, (COLS - line->length + offset) / 2,
+ &line->text->value[offset]);
+ break;
+ case 1:
+ case 2: // add text to left footer
+ mvwaddwstr(stdscr,
+ LINES - 1, 3,
+ &line->text->value[offset]);
+ break;
+ }
}
// add slide number to right footer
- mvwprintw(stdscr,
- LINES - 1, COLS - int_length(deck->slides) - int_length(sc) - 6,
- "%d / %d", sc, deck->slides);
+ switch(slidenum) {
+ case 1: // show slide number only
+ mvwprintw(stdscr,
+ LINES - 1, COLS - int_length(sc) - 3,
+ "%d", sc);
+ break;
+ case 2: // show current slide & number of slides
+ mvwprintw(stdscr,
+ LINES - 1, COLS - int_length(deck->slides) - int_length(sc) - 6,
+ "%d / %d", sc, deck->slides);
+ break;
+ }
// make header + fooder visible
wrefresh(content);
// show current slide again
// but stop one stop bit earlier
slide->stop--;
+ fade = false;
} else {
if(slide->prev) {
// show previous slide
slide = slide->prev;
sc--;
+ //stop on first bullet point always
+ if(slide->stop > 0)
+ slide->stop = 0;
} else {
// do nothing
fade = false;
// 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
// IS_CODE
if(CHECK_BIT(line->bits, IS_CODE)) {
- // set static offset for code
- offset = CODE_INDENT;
+ if (!CHECK_BIT(line->bits, IS_TILDE_CODE)) {
+ // set static offset for code
+ offset = CODE_INDENT;
+ }
// reverse color for code blocks
if(colors)
if (*i == L'!') i++;
- if (wcschr(i, L']')[1] == L'(') {
+ if (wcschr(i, L']')[1] == L'(' && wcschr(i, L')')) {
i++;
// turn higlighting and underlining on