]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - test/savescreen.c
ncurses 6.1 - patch 20180623
[ncurses.git] / test / savescreen.c
index 911c62fc0d1c76102ec73dfd91cd26abaa741991..9d88079f94c3a5f8719db7be7b3d161465f1521d 100644 (file)
@@ -26,7 +26,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: savescreen.c,v 1.50 2018/01/07 02:24:03 tom Exp $
+ * $Id: savescreen.c,v 1.53 2018/05/12 15:11:16 tom Exp $
  *
  * Demonstrate save/restore functions from the curses library.
  * Thomas Dickey - 2007/7/14
@@ -34,6 +34,7 @@
 
 #include <test.priv.h>
 #include <popup_msg.h>
+#include <parse_rgb.h>
 
 #if HAVE_SCR_DUMP
 
@@ -68,10 +69,12 @@ static wchar_t
 BaseChar(cchar_t data)
 {
     wchar_t my_wchar[CCHARW_MAX];
+    wchar_t result = 0;
     attr_t my_attr;
     short my_pair;
-    getcchar(&data, my_wchar, &my_attr, &my_pair, NULL);
-    return my_wchar[0];
+    if (getcchar(&data, my_wchar, &my_attr, &my_pair, NULL) == OK)
+       result = my_wchar[0];
+    return result;
 }
 #endif
 
@@ -374,37 +377,37 @@ main(int argc, char *argv[])
                    init_pair((short) (n + MAX_ANSI), (short) n, (short) n);
            }
 #if HAVE_TIGETSTR && USE_WIDEC_SUPPORT
-           else if (tigetflag("RGB") > 0) {
-               int rows = LINES - 1;
-               int cols = COLS - 1;
-               /* FIXME: test all 3 types of capability */
-               int b_max = 255;
-               int r_max = 255;
-               int g_max = 255;
-               int b_delta = (b_max / rows);
-               int r_delta = (r_max / cols);
-               int g_delta = (g_max / cols);
-               int row = 0;
-
-               b = 0;
-               using_rgb = TRUE;
-               while (row++ < rows) {
-                   int col = 0;
-                   r = 0;
-                   g = g_max;
-                   while (col++ < cols) {
-                       int color = (((r * (g_max + 1)) + g) * (b_max + 1)
-                                    + b + MAX_ANSI);
+           else {
+               int r_max, g_max, b_max;
+
+               if (parse_rgb(&r_max, &g_max, &b_max) > 0) {
+                   int rows = LINES - 1;
+                   int cols = COLS - 1;
+                   int b_delta = (b_max / rows);
+                   int r_delta = (r_max / cols);
+                   int g_delta = (g_max / cols);
+                   int row = 0;
+
+                   b = 0;
+                   using_rgb = TRUE;
+                   while (row++ < rows) {
+                       int col = 0;
+                       r = 0;
+                       g = g_max;
+                       while (col++ < cols) {
+                           int color = (((r * (g_max + 1)) + g) * (b_max + 1)
+                                        + b + MAX_ANSI);
 #if HAVE_INIT_EXTENDED_COLOR
-                       init_extended_pair(pair, color, color);
+                           init_extended_pair(pair, color, color);
 #else
-                       init_pair(pair, color, color);
+                           init_pair(pair, color, color);
 #endif
-                       pair++;
-                       r += r_delta;
-                       g -= g_delta;
+                           pair++;
+                           r += r_delta;
+                           g -= g_delta;
+                       }
+                       b += b_delta;
                    }
-                   b += b_delta;
                }
            }
 #endif
@@ -417,8 +420,8 @@ main(int argc, char *argv[])
                mvprintw(2, 0, "System colors:\n");
                for (n = 0; n < 16; ++n) {
                    pair = n + MAX_ANSI;
-                   addch(' ' | COLOR_PAIR(pair));
-                   addch(' ' | COLOR_PAIR(pair));
+                   addch((chtype) (' ' | COLOR_PAIR(pair)));
+                   addch((chtype) (' ' | COLOR_PAIR(pair)));
                    if (((n + 1) % 8) == 0)
                        addch('\n');
                }
@@ -639,7 +642,7 @@ main(int argc, char *argv[])
                chtype attr = A_REVERSE;
                chtype ch2 = (altchars ? MyMarker : '#');
                if (use_colors) {
-                   attr |= COLOR_PAIR(color);
+                   attr |= (chtype) COLOR_PAIR(color);
                }
                move(y, x);
                AddCh(ch2 | attr);