diff --git a/examples/cacaview.c b/examples/cacaview.c index ecd15ec..0a5e644 100644 --- a/examples/cacaview.c +++ b/examples/cacaview.c @@ -40,6 +40,9 @@ #include "caca.h" /* Local macros */ +#define MODE_IMAGE 1 +#define MODE_FILES 2 + #define STATUS_DITHERING 1 #define STATUS_ANTIALIASING 2 #define STATUS_BACKGROUND 3 @@ -49,6 +52,8 @@ #define PAD_STEP 0.15 /* Local functions */ +static void print_status(void); +static void print_help(int, int); static void set_zoom(int); static void load_image(char const *); static void unload_image(void); @@ -72,7 +77,7 @@ unsigned int red[256], green[256], blue[256], alpha[256]; float zoomtab[ZOOM_MAX + 1]; float xfactor = 1.0, yfactor = 1.0, dx = 0.5, dy = 0.5; -int zoom = 0, fullscreen = 0, ww, wh; +int zoom = 0, fullscreen = 0, mode, ww, wh; int main(int argc, char **argv) { @@ -362,18 +367,9 @@ int main(int argc, char **argv) if(!fullscreen) { - caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLUE); - caca_draw_line(0, 0, ww - 1, 0, ' '); - caca_draw_line(0, wh - 2, ww - 1, wh - 2, '-'); - caca_putstr(0, 0, "q:Quit np:Next/Prev +-x:Zoom " - "hjkl:Move d:Dithering a:Antialias"); - caca_putstr(ww - strlen("?:Help"), 0, "?:Help"); - caca_printf(3, wh - 2, "cacaview %s", VERSION); - caca_printf(ww - 14, wh - 2, - "(zoom: %s%i)", zoom > 0 ? "+" : "", zoom); + print_status(); caca_set_color(CACA_COLOR_LIGHTGRAY, CACA_COLOR_BLACK); - caca_draw_line(0, wh - 1, ww - 1, wh - 1, ' '); switch(status) { case STATUS_ANTIALIASING: @@ -393,20 +389,7 @@ int main(int argc, char **argv) if(help) { - caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLUE); - caca_putstr(ww - 25, 2, " +: zoom in "); - caca_putstr(ww - 25, 3, " -: zoom out "); - caca_putstr(ww - 25, 4, " x: reset zoom "); - caca_putstr(ww - 25, 5, " ---------------------- "); - caca_putstr(ww - 25, 6, " hjkl: move view "); - caca_putstr(ww - 25, 7, " arrows: move view "); - caca_putstr(ww - 25, 8, " ---------------------- "); - caca_putstr(ww - 25, 9, " a: antialiasing method "); - caca_putstr(ww - 25, 10, " d: dithering method "); - caca_putstr(ww - 25, 11, " b: background mode "); - caca_putstr(ww - 25, 12, " ---------------------- "); - caca_putstr(ww - 25, 13, " ?: help "); - caca_putstr(ww - 25, 14, " q: quit "); + print_help(ww - 25, 2); } caca_refresh(); @@ -420,6 +403,49 @@ int main(int argc, char **argv) return 0; } +static void print_status(void) +{ + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLUE); + caca_draw_line(0, 0, ww - 1, 0, ' '); + caca_draw_line(0, wh - 2, ww - 1, wh - 2, '-'); + caca_putstr(0, 0, "q:Quit np:Next/Prev +-x:Zoom " + "hjkl:Move d:Dithering a:Antialias"); + caca_putstr(ww - strlen("?:Help"), 0, "?:Help"); + caca_printf(3, wh - 2, "cacaview %s", VERSION); + caca_printf(ww - 14, wh - 2, "(zoom: %s%i)", zoom > 0 ? "+" : "", zoom); + + caca_set_color(CACA_COLOR_LIGHTGRAY, CACA_COLOR_BLACK); + caca_draw_line(0, wh - 1, ww - 1, wh - 1, ' '); +} + +static void print_help(int x, int y) +{ + static char const *help[] = + { + " +: zoom in ", + " -: zoom out ", + " x: reset zoom ", + " ---------------------- ", + " hjkl: move view ", + " arrows: move view ", + " ---------------------- ", + " a: antialiasing method ", + " d: dithering method ", + " b: background mode ", + " ---------------------- ", + " ?: help ", + " q: quit ", + NULL + }; + + int i; + + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLUE); + + for(i = 0; help[i]; i++) + caca_putstr(x, y + i, help[i]); +} + static void set_zoom(int new_zoom) { int height;