我已经读过ncurses最多可以支持256种颜色和最多32k种颜色对。虽然我自己设置了256种颜色,但我无法找到有关如何设置32k颜色对的任何信息。
的结果
printf("%d - %d\n", COLORS, COLOR_PAIRS);
是
256 - 256
虽然2种颜色和2种颜色对可能足以让核心终端爱好者使用,但我想知道如何从图书馆中获取最多的颜色。
答案 0 :(得分:2)
ncurses
中的颜色对实际上是前景色和背景色的组合。您可以使用color_pair
(手册页here)对其进行操作。有32,768种组合,因为前景有256种组合,背景相同,但红+蓝(例如)为蓝+红,有256x256 / 2 = 32,768种组合。
然后,您可以使用带有棋盘图案的前景+背景对(例如░░░░░░░░░░░░
)来生成更多颜色。参见例如here
我认为你的问题可能存在一种误解。从手册页:
此 [linux] 实现将在尝试使用
范围之外的颜色对ERR
到0
范围之外的颜色值时返回COLORS-1
(默认颜色扩展名除外) ,或使用0
至COLOR_PAIR-1.
这就是说你一次只能使用COLOR_PAIR
颜色对(即可以通过init_pair()
使用) - 在你的实现上是256.但是有仍然有32,768种颜色可用 - 只是不是一次通过init_pair()
。无论如何,这就是我理解的方式。
答案 1 :(得分:2)
默认情况下,ncurses6配置启用--enable-ext-colors
。您还需要--enable-widec
(否则,不使用存储扩展颜色的cchar_t
类型)。 configure脚本警告:
checking if you want to use extended colors... yes
configure: WARNING: This option applies only to wide-character library
假设您使用扩展颜色(和宽字符)构建库,能够显示多达256种颜色和多达32767种颜色对(有符号16位中的最大值)数)。之后,它取决于您使用的终端描述(和终端仿真器)。在X Windows中运行的大多数终端仿真器可以显示256种颜色。在X之外,目前尚不清楚是否存在多数。
ncurses对这些中的每一个都有相当准确的终端描述(并且不,使用TERM=xterm-256color
不是每个的答案,因为特殊键和其他特征通常与xterm不同:FAQ {{3} } 也适用于xterm-256color
)。
以下屏幕截图显示xterm
运行ncurses
测试程序(来自Why not just use TERM set to "xterm"?)的广泛颜色: