ncurses:为什么RGB颜色值在0到1000之间?

ncurses:为什么RGB颜色值在0到1000之间?,c,ncurses,C,Ncurses,对于RGB三元组中的每个值,RGB颜色值范围为0-255。为什么ncurses将RGB三元组中每个值的范围设为0-1000?有没有一种简单的方法可以将0-255范围转换为0-1000范围,从而使颜色保持在0-255范围内?最简单的转换就是将其乘以.255的系数: r = r * 0.255 g = g * 0.255 b = b * 0.255 至于为什么会做出这样的决定,我怀疑这是完全武断的,尽管我没有任何事实来支持这一点。诅咒自始至终都是建立在终端独立的基础上的,这包括你希望使用的任何颜色

对于RGB三元组中的每个值,RGB颜色值范围为0-255。为什么ncurses将RGB三元组中每个值的范围设为0-1000?有没有一种简单的方法可以将0-255范围转换为0-1000范围,从而使颜色保持在0-255范围内?

最简单的转换就是将其乘以.255的系数:

r = r * 0.255
g = g * 0.255
b = b * 0.255
至于为什么会做出这样的决定,我怀疑这是完全武断的,尽管我没有任何事实来支持这一点。

诅咒自始至终都是建立在终端独立的基础上的,这包括你希望使用的任何颜色编码方案。有些终端可能只提供16种固定颜色,有些可能是灰度,有些可能是严格意义上的黑白,有些可能提供数万亿种颜色

来自(最初的SCO,而不是成为开源世界贱民的重新命名的火山口):

与其他curses一样,颜色操作例程被设计为与终端无关。但必须记住,终端的功能各不相同

因此,颜色混合功能被认为是足够好的,可以满足您的任何要求,允许十亿种不同的混合,然后可以映射到您使用的任何终端的实际功能

一、 首先,我们当然无法区分
808080
808081
:-)之间的区别

如果要将
0-1000
诅咒范围转换为更“传统”的范围,可以执行以下操作:

red = red * 51 / 200;  // 51/200 == 255/1000
(对于其他颜色组件,同上)