[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Trouble with wattr_set()
From: |
Thomas Dickey |
Subject: |
Re: Trouble with wattr_set() |
Date: |
Sat, 26 Jan 2019 11:28:11 -0500 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Sat, Jan 26, 2019 at 02:54:12PM +1100, Timothy Allen wrote:
> On Fri, 2019-01-25 at 15:08 -0600, Bryan Christ wrote:
> > I discovered that on Bionic, NCURSES_EXT_COLORS is not defined, but
> > on Fedora 29 it is. Would that matter? I wouldn't see why it should
> > since pair 766 (in my example) fits well within a short. Or is
> > NCURSES_EXT_COLORS is somehow relevant for anything greater than 8
> > bits?
>
> I'm not sure, myself.
>
> The only mention of NCURSES_EXT_COLORS I can find in documentation is
> in the NEWS file, where it just says that it means "extended colors"
> are available:
>
> https://github.com/ThomasDickey/ncurses-snapshots/blob/a9b714f69879e6e8313c116eeee474998e0583fe/NEWS#L5225
>
> Searching for "extended colors" finds a paragraph in the INSTALL file,
> which says that "extended colors" means supporting 88-colour or 256-
> colour terminals, and is part of ABI 6:
>
> https://github.com/ThomasDickey/ncurses-snapshots/blob/master/INSTALL#L1709
>
> This confuses me, because I've definitely been using the xterm-256color
> terminfo entry for a lot longer than Debian has used ABI 6.
The terminfo entry's been there, but you wouldn't have used the full
range of colors except directly via low-level terminfo functions.
Compare the definition of cchar_t in curses.h
ABI 5 (Debian 8, <ncursesw/curses.h>
--------------------------------------------------------------------------------
/*
* cchar_t stores an array of CCHARW_MAX wide characters. The first is
* normally a spacing character. The others are non-spacing. If those
* (spacing and nonspacing) do not fill the array, a null L'\0' follows.
* Otherwise, a null is assumed to follow when extracting via getcchar().
*/
#define CCHARW_MAX 5
typedef struct
{
attr_t attr;
wchar_t chars[CCHARW_MAX];
#if 0
#undef NCURSES_EXT_COLORS
#define NCURSES_EXT_COLORS 20140913
int ext_color; /* color pair, must be more than 16-bits */
#endif
}
cchar_t;
ABI 6 (my current code, <ncursesw6/curses.h>
--------------------------------------------------------------------------------
/*
* cchar_t stores an array of CCHARW_MAX wide characters. The first is
* normally a spacing character. The others are non-spacing. If those
* (spacing and nonspacing) do not fill the array, a null L'\0' follows.
* Otherwise, a null is assumed to follow when extracting via getcchar().
*/
#define CCHARW_MAX 5
typedef struct
{
attr_t attr;
wchar_t chars[CCHARW_MAX];
#if 1
#undef NCURSES_EXT_COLORS
#define NCURSES_EXT_COLORS 20190121
int ext_color; /* color pair, must be more than 16-bits */
#endif
}
cchar_t;
--------------------------------------------------------------------------------
Without that ifdef'd chunk, all of the color-pair information is stored
in 8 bits in the "attr" member.
Ubuntu 18.04 has the former: ABI 5, and does not support extended colors.
Since Ubuntu doesn't do much more than copy Debian (and not immediately),
it'll pick up Debian's incorporation of the ABI 6 changes in a later update
(someone mentioned 18.10, for instance).
--
Thomas E. Dickey <address@hidden>
https://invisible-island.net
ftp://ftp.invisible-island.net
signature.asc
Description: Digital signature
- Trouble with wattr_set(), Bryan Christ, 2019/01/18
- Re: Trouble with wattr_set(), sunnycemetery, 2019/01/19
- Re: Trouble with wattr_set(), Bryan Christ, 2019/01/21
- Re: Trouble with wattr_set(), Timothy Allen, 2019/01/21
- Re: Trouble with wattr_set(), Bryan Christ, 2019/01/25
- Re: Trouble with wattr_set(), Timothy Allen, 2019/01/25
- Re: Trouble with wattr_set(),
Thomas Dickey <=
- Re: Trouble with wattr_set(), Bryan Christ, 2019/01/26
- Re: Trouble with wattr_set(), Timothy Allen, 2019/01/26
- Re: Trouble with wattr_set(), Thomas Dickey, 2019/01/26
- Re: Trouble with wattr_set(), Bryan Christ, 2019/01/27
- Re: Trouble with wattr_set(), Tim Allen, 2019/01/27