+#if USE_WIDEC_SUPPORT
+static void
+show_upper_widechars(int first)
+{
+ cchar_t temp;
+ wchar_t code;
+ int last = first + 31;
+
+ erase();
+ attron(A_BOLD);
+ mvprintw(0, 20, "Display of Character Codes %d to %d", first, last);
+ attroff(A_BOLD);
+ refresh();
+
+ for (code = first; code <= last; code++) {
+ int row = 4 + ((code - first) % 16);
+ int col = ((code - first) / 16) * COLS / 2;
+ wchar_t codes[10];
+ attr_t attrs = A_NORMAL;
+ char tmp[80];
+
+ memset(&codes, 0, sizeof(codes));
+ codes[0] = code;
+ sprintf(tmp, "%3ld (0x%lx)", code, code);
+ mvprintw(row, col, "%*s: ", COLS / 4, tmp);
+ setcchar(&temp, codes, attrs, 0, 0);
+ echo_wchar(&temp);
+ }
+}
+
+static int
+show_1_wacs(int n, const char *name, const cchar_t * code)
+{
+ const int height = 16;
+ int row = 4 + (n % height);
+ int col = (n / height) * COLS / 2;
+ mvprintw(row, col, "%*s : ", COLS / 4, name);
+ add_wchnstr(code, 1);
+ return n + 1;
+}
+
+static void
+show_wacs_chars(void)
+/* display the wide-ACS character set */
+{
+ int n;
+
+/*#define BOTH2(name) #name, &(name) */
+#define BOTH2(name) #name, name
+
+ erase();
+ attron(A_BOLD);
+ mvaddstr(0, 20, "Display of the Wide-ACS Character Set");
+ attroff(A_BOLD);
+ refresh();
+
+ n = show_1_wacs(0, BOTH2(WACS_ULCORNER));
+ n = show_1_wacs(n, BOTH2(WACS_URCORNER));
+ n = show_1_wacs(n, BOTH2(WACS_LLCORNER));
+ n = show_1_wacs(n, BOTH2(WACS_LRCORNER));
+
+ n = show_1_wacs(n, BOTH2(WACS_LTEE));
+ n = show_1_wacs(n, BOTH2(WACS_RTEE));
+ n = show_1_wacs(n, BOTH2(WACS_TTEE));
+ n = show_1_wacs(n, BOTH2(WACS_BTEE));
+
+ n = show_1_wacs(n, BOTH2(WACS_HLINE));
+ n = show_1_wacs(n, BOTH2(WACS_VLINE));
+
+ n = show_1_wacs(n, BOTH2(WACS_LARROW));
+ n = show_1_wacs(n, BOTH2(WACS_RARROW));
+ n = show_1_wacs(n, BOTH2(WACS_UARROW));
+ n = show_1_wacs(n, BOTH2(WACS_DARROW));
+
+ n = show_1_wacs(n, BOTH2(WACS_BLOCK));
+ n = show_1_wacs(n, BOTH2(WACS_BOARD));
+ n = show_1_wacs(n, BOTH2(WACS_LANTERN));
+ n = show_1_wacs(n, BOTH2(WACS_BULLET));
+ n = show_1_wacs(n, BOTH2(WACS_CKBOARD));
+ n = show_1_wacs(n, BOTH2(WACS_DEGREE));
+ n = show_1_wacs(n, BOTH2(WACS_DIAMOND));
+ n = show_1_wacs(n, BOTH2(WACS_PLMINUS));
+ n = show_1_wacs(n, BOTH2(WACS_PLUS));
+
+#ifdef CURSES_WACS_ARRAY
+ n = show_1_wacs(n, BOTH2(WACS_GEQUAL));
+ n = show_1_wacs(n, BOTH2(WACS_NEQUAL));
+ n = show_1_wacs(n, BOTH2(WACS_LEQUAL));
+
+ n = show_1_wacs(n, BOTH2(WACS_STERLING));
+ n = show_1_wacs(n, BOTH2(WACS_PI));
+ n = show_1_wacs(n, BOTH2(WACS_S1));
+ n = show_1_wacs(n, BOTH2(WACS_S3));
+ n = show_1_wacs(n, BOTH2(WACS_S7));
+ n = show_1_wacs(n, BOTH2(WACS_S9));
+#endif
+}
+
+static void
+show_wbox_chars(void)
+{
+ erase();
+ attron(A_BOLD);
+ mvaddstr(0, 20, "Display of the Wide-ACS Line-Drawing Set");
+ attroff(A_BOLD);
+ refresh();
+ box_set(stdscr, 0, 0);
+ /* *INDENT-OFF* */
+ mvhline_set(LINES / 2, 0, WACS_HLINE, COLS);
+ mvvline_set(0, COLS / 2, WACS_VLINE, LINES);
+ mvadd_wch(0, COLS / 2, WACS_TTEE);
+ mvadd_wch(LINES / 2, COLS / 2, WACS_PLUS);
+ mvadd_wch(LINES - 1, COLS / 2, WACS_BTEE);
+ mvadd_wch(LINES / 2, 0, WACS_LTEE);
+ mvadd_wch(LINES / 2, COLS - 1, WACS_RTEE);
+ /* *INDENT-ON* */
+
+}
+
+static int
+show_2_wacs(int n, const char *name, char *code)
+{
+ const int height = 16;
+ int row = 4 + (n % height);
+ int col = (n / height) * COLS / 2;
+ mvprintw(row, col, "%*s : ", COLS / 4, name);
+ addstr(code);
+ return n + 1;
+}
+
+static void
+show_utf8_chars(void)
+/* display the wide-ACS character set */
+{
+ int n;
+
+ erase();
+ attron(A_BOLD);
+ mvaddstr(0, 20, "Display of the Wide-ACS Character Set");
+ attroff(A_BOLD);
+ refresh();
+ /* *INDENT-OFF* */
+ n = show_2_wacs(0, "WACS_ULCORNER", "\342\224\214");
+ n = show_2_wacs(n, "WACS_URCORNER", "\342\224\220");
+ n = show_2_wacs(n, "WACS_LLCORNER", "\342\224\224");
+ n = show_2_wacs(n, "WACS_LRCORNER", "\342\224\230");
+
+ n = show_2_wacs(n, "WACS_LTEE", "\342\224\234");
+ n = show_2_wacs(n, "WACS_RTEE", "\342\224\244");
+ n = show_2_wacs(n, "WACS_TTEE", "\342\224\254");
+ n = show_2_wacs(n, "WACS_BTEE", "\342\224\264");
+
+ n = show_2_wacs(n, "WACS_HLINE", "\342\224\200");
+ n = show_2_wacs(n, "WACS_VLINE", "\342\224\202");
+
+ n = show_2_wacs(n, "WACS_LARROW", "\342\206\220");
+ n = show_2_wacs(n, "WACS_RARROW", "\342\206\222");
+ n = show_2_wacs(n, "WACS_UARROW", "\342\206\221");
+ n = show_2_wacs(n, "WACS_DARROW", "\342\206\223");
+
+ n = show_2_wacs(n, "WACS_BLOCK", "\342\226\256");
+ n = show_2_wacs(n, "WACS_BOARD", "\342\226\222");
+ n = show_2_wacs(n, "WACS_LANTERN", "\342\230\203");
+ n = show_2_wacs(n, "WACS_BULLET", "\302\267");
+ n = show_2_wacs(n, "WACS_CKBOARD", "\342\226\222");
+ n = show_2_wacs(n, "WACS_DEGREE", "\302\260");
+ n = show_2_wacs(n, "WACS_DIAMOND", "\342\227\206");
+ n = show_2_wacs(n, "WACS_PLMINUS", "\302\261");
+ n = show_2_wacs(n, "WACS_PLUS", "\342\224\274");
+ n = show_2_wacs(n, "WACS_GEQUAL", "\342\211\245");
+ n = show_2_wacs(n, "WACS_NEQUAL", "\342\211\240");
+ n = show_2_wacs(n, "WACS_LEQUAL", "\342\211\244");
+
+ n = show_2_wacs(n, "WACS_STERLING", "\302\243");
+ n = show_2_wacs(n, "WACS_PI", "\317\200");
+ n = show_2_wacs(n, "WACS_S1", "\342\216\272");
+ n = show_2_wacs(n, "WACS_S3", "\342\216\273");
+ n = show_2_wacs(n, "WACS_S7", "\342\216\274");
+ n = show_2_wacs(n, "WACS_S9", "\342\216\275");
+ /* *INDENT-OFF* */