mirror of
https://github.com/Aigor44/ncursesw-morphos.git
synced 2025-01-12 14:54:25 +08:00
ncurses 5.9 - patch 20120908
+ add test-screens to test/ncurses to show 256-characters at a time, to help with mingw port.
This commit is contained in:
parent
cdbe3d3df7
commit
a3754ea95e
6
NEWS
6
NEWS
@ -25,7 +25,7 @@
|
||||
-- sale, use or other dealings in this Software without prior written --
|
||||
-- authorization. --
|
||||
-------------------------------------------------------------------------------
|
||||
-- $Id: NEWS,v 1.1952 2012/09/03 17:59:39 tom Exp $
|
||||
-- $Id: NEWS,v 1.1953 2012/09/08 22:05:39 tom Exp $
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
This is a log of changes that ncurses has gone through since Zeyd started
|
||||
@ -45,6 +45,10 @@ See the AUTHORS file for the corresponding full names.
|
||||
Changes through 1.9.9e did not credit all contributions;
|
||||
it is not possible to add this information.
|
||||
|
||||
20120908
|
||||
+ add test-screens to test/ncurses to show 256-characters at a time,
|
||||
to help with mingw port.
|
||||
|
||||
20120903
|
||||
+ simplify varargs logic in lib_printw.c; va_copy is no longer needed
|
||||
there.
|
||||
|
4
dist.mk
4
dist.mk
@ -25,7 +25,7 @@
|
||||
# use or other dealings in this Software without prior written #
|
||||
# authorization. #
|
||||
##############################################################################
|
||||
# $Id: dist.mk,v 1.891 2012/09/03 12:47:40 tom Exp $
|
||||
# $Id: dist.mk,v 1.892 2012/09/08 15:40:37 tom Exp $
|
||||
# Makefile for creating ncurses distributions.
|
||||
#
|
||||
# This only needs to be used directly as a makefile by developers, but
|
||||
@ -37,7 +37,7 @@ SHELL = /bin/sh
|
||||
# These define the major/minor/patch versions of ncurses.
|
||||
NCURSES_MAJOR = 5
|
||||
NCURSES_MINOR = 9
|
||||
NCURSES_PATCH = 20120903
|
||||
NCURSES_PATCH = 20120908
|
||||
|
||||
# We don't append the patch to the version, since this only applies to releases
|
||||
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
|
||||
|
@ -1,8 +1,8 @@
|
||||
ncurses6 (5.9-20120903) unstable; urgency=low
|
||||
ncurses6 (5.9-20120908) unstable; urgency=low
|
||||
|
||||
* latest weekly patch
|
||||
|
||||
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 03 Sep 2012 08:47:49 -0400
|
||||
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 08 Sep 2012 14:28:23 -0400
|
||||
|
||||
ncurses6 (5.9-20120608) unstable; urgency=low
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
Summary: shared libraries for terminal handling
|
||||
Name: ncurses6
|
||||
Release: 5.9
|
||||
Version: 20120903
|
||||
Version: 20120908
|
||||
License: X11
|
||||
Group: Development/Libraries
|
||||
Source: ncurses-%{release}-%{version}.tgz
|
||||
|
@ -26,7 +26,7 @@
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
/*
|
||||
* $Id: demo_menus.c,v 1.34 2012/06/09 20:30:33 tom Exp $
|
||||
* $Id: demo_menus.c,v 1.35 2012/09/09 00:01:20 tom Exp $
|
||||
*
|
||||
* Demonstrate a variety of functions from the menu library.
|
||||
* Thomas Dickey - 2005/4/9
|
||||
@ -867,7 +867,7 @@ main(int argc, char *argv[])
|
||||
#endif /* HAVE_RIPOFFLINE */
|
||||
#ifdef TRACE
|
||||
case 't':
|
||||
trace(strtoul(optarg, 0, 0));
|
||||
trace((unsigned) strtoul(optarg, 0, 0));
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
|
150
test/ncurses.c
150
test/ncurses.c
@ -40,7 +40,7 @@ AUTHOR
|
||||
Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
|
||||
Thomas E. Dickey (beginning revision 1.27 in 1996).
|
||||
|
||||
$Id: ncurses.c,v 1.373 2012/07/21 17:40:21 tom Exp $
|
||||
$Id: ncurses.c,v 1.377 2012/09/08 23:58:58 tom Exp $
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -3011,15 +3011,46 @@ wide_slk_test(void)
|
||||
#endif
|
||||
#endif /* SLK_INIT */
|
||||
|
||||
/* ISO 6429: codes 0x80 to 0x9f may be control characters that cause the
|
||||
static void
|
||||
show_256_chars(int repeat, attr_t attr, short pair)
|
||||
{
|
||||
unsigned first = 0;
|
||||
unsigned last = 255;
|
||||
unsigned code;
|
||||
int count;
|
||||
|
||||
erase();
|
||||
attron(A_BOLD);
|
||||
MvPrintw(0, 20, "Display of Character Codes %#0x to %#0x",
|
||||
first, last);
|
||||
attroff(A_BOLD);
|
||||
refresh();
|
||||
|
||||
for (code = first; code <= last; ++code) {
|
||||
int row = (int) (2 + (code / 16));
|
||||
int col = (int) (5 * (code % 16));
|
||||
mvaddch(row, col, colored_chtype(code, attr, pair));
|
||||
for (count = 1; count < repeat; ++count) {
|
||||
addch(colored_chtype(code, attr, pair));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Show a slice of 32 characters, allowing those to be repeated up to the
|
||||
* screen's width.
|
||||
*
|
||||
* ISO 6429: codes 0x80 to 0x9f may be control characters that cause the
|
||||
* terminal to perform functions. The remaining codes can be graphic.
|
||||
*/
|
||||
static void
|
||||
show_upper_chars(unsigned first, int repeat, attr_t attr, short pair)
|
||||
show_upper_chars(int base, int pagesize, int repeat, attr_t attr, short pair)
|
||||
{
|
||||
bool C1 = (first == 128);
|
||||
unsigned code;
|
||||
unsigned last = first + 31;
|
||||
unsigned first = (unsigned) base;
|
||||
unsigned last = first + (unsigned) pagesize - 2;
|
||||
bool C1 = (first == 128);
|
||||
int reply;
|
||||
|
||||
erase();
|
||||
@ -3031,8 +3062,8 @@ show_upper_chars(unsigned first, int repeat, attr_t attr, short pair)
|
||||
|
||||
for (code = first; code <= last; code++) {
|
||||
int count = repeat;
|
||||
int row = 2 + ((int) (code - first) % 16);
|
||||
int col = ((int) (code - first) / 16) * COLS / 2;
|
||||
int row = 2 + ((int) (code - first) % (pagesize / 2));
|
||||
int col = ((int) (code - first) / (pagesize / 2)) * COLS / 2;
|
||||
char tmp[80];
|
||||
sprintf(tmp, "%3u (0x%x)", code, code);
|
||||
MvPrintw(row, col, "%*s: ", COLS / 4, tmp);
|
||||
@ -3206,6 +3237,7 @@ static void
|
||||
acs_display(void)
|
||||
{
|
||||
int c = 'a';
|
||||
int pagesize = 32;
|
||||
char *term = getenv("TERM");
|
||||
const char *pch_kludge = ((term != 0 && strstr(term, "linux"))
|
||||
? "p=PC, "
|
||||
@ -3233,6 +3265,13 @@ acs_display(void)
|
||||
else
|
||||
beep();
|
||||
break;
|
||||
case 'w':
|
||||
if (pagesize == 32) {
|
||||
pagesize = 256;
|
||||
} else {
|
||||
pagesize = 32;
|
||||
}
|
||||
break;
|
||||
case 'x':
|
||||
ToggleAcs(last_show_acs, show_box_chars);
|
||||
break;
|
||||
@ -3276,15 +3315,18 @@ acs_display(void)
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (last_show_acs != 0)
|
||||
if (pagesize != 32) {
|
||||
show_256_chars(repeat, attr, pair);
|
||||
} else if (last_show_acs != 0) {
|
||||
last_show_acs(repeat, attr, pair);
|
||||
else
|
||||
show_upper_chars((unsigned) (digit * 32 + 128), repeat, attr, pair);
|
||||
} else {
|
||||
show_upper_chars(digit * pagesize + 128, pagesize, repeat, attr, pair);
|
||||
}
|
||||
|
||||
MvPrintw(LINES - 3, 0,
|
||||
"Note: ANSI terminals may not display C1 characters.");
|
||||
MvPrintw(LINES - 2, 0,
|
||||
"Select: a=ACS, x=box, %s0=C1, 1-3,+/- non-ASCII, </> repeat, ESC=quit",
|
||||
"Select: a=ACS, w=all x=box, %s0=C1, 1-3,+/- non-ASCII, </> repeat, ESC=quit",
|
||||
pch_kludge);
|
||||
if (use_colors) {
|
||||
MvPrintw(LINES - 1, 0,
|
||||
@ -3323,6 +3365,53 @@ merge_wide_attr(cchar_t *dst, const cchar_t *src, attr_t attr, short pair)
|
||||
return dst;
|
||||
}
|
||||
|
||||
/*
|
||||
* Header/legend take up no more than 8 lines, leaving 16 lines on a 24-line
|
||||
* display. If there are no repeats, we could normally display 16 lines of 64
|
||||
* characters (1024 total). However, taking repeats and double-width cells
|
||||
* into account, use 256 characters for the page.
|
||||
*/
|
||||
static void
|
||||
show_paged_widechars(int base,
|
||||
int pagesize,
|
||||
int repeat,
|
||||
int space,
|
||||
attr_t attr,
|
||||
short pair)
|
||||
{
|
||||
int first = base * pagesize;
|
||||
int last = first + pagesize - 1;
|
||||
int per_line = 16;
|
||||
cchar_t temp;
|
||||
wchar_t code;
|
||||
wchar_t codes[10];
|
||||
|
||||
erase();
|
||||
attron(A_BOLD);
|
||||
MvPrintw(0, 20, "Display of Character Codes %#x to %#x", first, last);
|
||||
attroff(A_BOLD);
|
||||
|
||||
for (code = first; (int) code <= last; code++) {
|
||||
int row = (2 + ((int) code - first) / per_line);
|
||||
int col = 5 * ((int) code % per_line);
|
||||
int count;
|
||||
|
||||
memset(&codes, 0, sizeof(codes));
|
||||
codes[0] = code;
|
||||
setcchar(&temp, codes, attr, pair, 0);
|
||||
move(row, col);
|
||||
if (wcwidth(code) == 0 && code != 0) {
|
||||
addch((chtype) space |
|
||||
(A_REVERSE ^ attr) |
|
||||
(attr_t) COLOR_PAIR(pair));
|
||||
}
|
||||
add_wch(&temp);
|
||||
for (count = 1; count < repeat; ++count) {
|
||||
add_wch(&temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
show_upper_widechars(int first, int repeat, int space, attr_t attr, short pair)
|
||||
{
|
||||
@ -3343,11 +3432,13 @@ show_upper_widechars(int first, int repeat, int space, attr_t attr, short pair)
|
||||
int count = repeat;
|
||||
int y, x;
|
||||
|
||||
memset(&codes, 0, sizeof(codes));
|
||||
codes[0] = code;
|
||||
sprintf(tmp, "%3ld (0x%lx)", (long) code, (long) code);
|
||||
MvPrintw(row, col, "%*s: ", COLS / 4, tmp);
|
||||
|
||||
memset(&codes, 0, sizeof(codes));
|
||||
codes[0] = code;
|
||||
setcchar(&temp, codes, attr, pair, 0);
|
||||
|
||||
do {
|
||||
/*
|
||||
* Give non-spacing characters something to combine with. If we
|
||||
@ -3361,10 +3452,10 @@ show_upper_widechars(int first, int repeat, int space, attr_t attr, short pair)
|
||||
(attr_t) COLOR_PAIR(pair));
|
||||
}
|
||||
/*
|
||||
* This could use add_wch(), but is done for comparison with the
|
||||
* normal 'f' test (and to make a test-case for echo_wchar()).
|
||||
* The screen will flicker because the erase() at the top of the
|
||||
* function is met by the builtin refresh() in echo_wchar().
|
||||
* This uses echo_wchar(), for comparison with the normal 'f'
|
||||
* test (and to make a test-case for echo_wchar()). The screen
|
||||
* may flicker because the erase() at the top of the function
|
||||
* is met by the builtin refresh() in echo_wchar().
|
||||
*/
|
||||
echo_wchar(&temp);
|
||||
/*
|
||||
@ -3692,6 +3783,7 @@ wide_acs_display(void)
|
||||
int digit = 0;
|
||||
int repeat = 1;
|
||||
int space = ' ';
|
||||
int pagesize = 32;
|
||||
chtype attr = A_NORMAL;
|
||||
int fg = COLOR_BLACK;
|
||||
int bg = COLOR_BLACK;
|
||||
@ -3717,6 +3809,13 @@ wide_acs_display(void)
|
||||
ToggleAcs(last_show_wacs, show_wacs_chars_thick);
|
||||
break;
|
||||
#endif
|
||||
case 'w':
|
||||
if (pagesize == 32) {
|
||||
pagesize = 256;
|
||||
} else {
|
||||
pagesize = 32;
|
||||
}
|
||||
break;
|
||||
case 'x':
|
||||
ToggleAcs(last_show_wacs, show_wbox_chars);
|
||||
break;
|
||||
@ -3750,20 +3849,25 @@ wide_acs_display(void)
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (last_show_wacs != 0)
|
||||
if (pagesize != 32) {
|
||||
show_paged_widechars(digit, pagesize, repeat, space, attr, pair);
|
||||
} else if (last_show_wacs != 0) {
|
||||
last_show_wacs(repeat, attr, pair);
|
||||
else
|
||||
} else {
|
||||
show_upper_widechars(digit * 32 + 128, repeat, space, attr, pair);
|
||||
}
|
||||
|
||||
MvPrintw(LINES - 3, 0,
|
||||
"Select: a/d/t WACS, x box, u UTF-8, 0-9,+/- non-ASCII, </> repeat, ESC=quit");
|
||||
MvPrintw(LINES - 4, 0,
|
||||
"Select: a/d/t WACS, w=all x=box, u UTF-8, ^L repaint");
|
||||
MvPrintw(LINES - 3, 2,
|
||||
"0-9,+/- non-ASCII, </> repeat, _ space, ESC=quit");
|
||||
if (use_colors) {
|
||||
MvPrintw(LINES - 2, 0,
|
||||
MvPrintw(LINES - 2, 2,
|
||||
"v/V, f/F, b/B cycle through video attributes (%s) and color %d/%d.",
|
||||
attrs_to_cycle[at_code].name,
|
||||
fg, bg);
|
||||
} else {
|
||||
MvPrintw(LINES - 2, 0,
|
||||
MvPrintw(LINES - 2, 2,
|
||||
"v/V cycles through video attributes (%s).",
|
||||
attrs_to_cycle[at_code].name);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user