ncurses:为什么RGB颜色值范围是0-1000?

4

RGB颜色值范围是RGB三元组中每个值的0-255。为什么ncurses将RGB三元组中每个值的范围设置为0-1000?是否有一种简单的方法将0-255范围内的颜色转换为0-1000范围内的颜色,使颜色保持与0-255范围相同?


也许@Thomas Dickey可以回答这个问题。 - Dennis Williamson
他在这里的评论中提到了这个链接 - Dennis Williamson
2个回答

1
Curses是从零开始构建的,可以独立于终端,包括您希望使用的任何颜色编码方案。某些终端可能仅提供16种固定的颜色,某些可能是灰度,某些可能严格是黑白色,而有些则可能提供数万种颜色。
来自SCO文档(原始的SCO,而不是被开源世界视为叛徒的改名为Caldera):
就像curses的其余部分一样,色彩处理例程被设计成与终端无关。但必须记住,终端的功能是不同的。
因此,颜色混合能力被认为足够好,可以用于任何你想要的东西,允许亿万不同的混合,然后将其映射到您使用的任何终端的实际能力。
因为我肯定看不出#808080和#808081之间的区别 :-)
如果你想将Curses的0-1000范围翻译成更“常规”的范围,可以这样做:
red = red * 51 / 200;  // 51/200 == 255/1000

(而其他颜色组件也是一样)。

1
最简单的翻译方法就是将其乘以0.255的因子:
r = r * 0.255
g = g * 0.255
b = b * 0.255

关于为什么做出这个决定,我认为它完全是随意的,尽管我没有任何事实来支持这一点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接