ncurses:为什么 RGB 颜色值的范围是 0 - 1000?
ncurses: Why is the RGB color value range from 0 - 1000?
RGB 三元组中每个值的 RGB 颜色值范围为 0-255。为什么 ncurses 为 RGB 三元组中的每个值设置范围 0-1000?是否有一种简单的方法可以将 0-255 范围转换为 0-1000 范围,从而使颜色在 0-255 范围内保持真实?
最简单的翻译就是将它乘以 0.255:
r = r * 0.255
g = g * 0.255
b = b * 0.255
至于为什么做出这个决定,我怀疑这完全是武断的,尽管我没有任何事实支持。
Curses 是从头开始构建的,与终端无关,包括您希望使用的任何颜色编码方案。有些终端可能只提供十六种固定颜色,有些可能是灰度,有些可能是严格的黑白,有些可能提供万亿种颜色。
来自SCO documentation(原始 SCO,而不是成为开源世界贱民的重命名的 Caldera):
Like the rest of curses, the color manipulation routines have been designed to be terminal independent. But it must be remembered that the capabilities of terminals vary.
因此,颜色混合能力被认为足以满足您的任何要求,允许十亿种不同的混合,然后可以映射到任何东西的实际能力您正在使用的终端。
我,一方面,肯定无法区分 #808080
和 #808081
:-)
如果您想将 0-1000
范围的 Curses 转换为更大的 "conventional" 范围,您可以这样做:
red = red * 51 / 200; // 51/200 == 255/1000
(其他颜色分量同上)。
RGB 三元组中每个值的 RGB 颜色值范围为 0-255。为什么 ncurses 为 RGB 三元组中的每个值设置范围 0-1000?是否有一种简单的方法可以将 0-255 范围转换为 0-1000 范围,从而使颜色在 0-255 范围内保持真实?
最简单的翻译就是将它乘以 0.255:
r = r * 0.255
g = g * 0.255
b = b * 0.255
至于为什么做出这个决定,我怀疑这完全是武断的,尽管我没有任何事实支持。
Curses 是从头开始构建的,与终端无关,包括您希望使用的任何颜色编码方案。有些终端可能只提供十六种固定颜色,有些可能是灰度,有些可能是严格的黑白,有些可能提供万亿种颜色。
来自SCO documentation(原始 SCO,而不是成为开源世界贱民的重命名的 Caldera):
Like the rest of curses, the color manipulation routines have been designed to be terminal independent. But it must be remembered that the capabilities of terminals vary.
因此,颜色混合能力被认为足以满足您的任何要求,允许十亿种不同的混合,然后可以映射到任何东西的实际能力您正在使用的终端。
我,一方面,肯定无法区分 #808080
和 #808081
:-)
如果您想将 0-1000
范围的 Curses 转换为更大的 "conventional" 范围,您可以这样做:
red = red * 51 / 200; // 51/200 == 255/1000
(其他颜色分量同上)。