4

Довольно часто, особенно в вещах, связанных с X11 (ресурсы X, темы Roxterm и т.д.), Я вижу цвета, указанные в виде 48-разрядных чисел: #2e2e34343636 , #cccc00000000 вместо обычных 24-разрядных #2e3436 и #cc0000 . Для чего используются дополнительные биты?

3 ответа3

2

Я нашел ответ в документации Xlib в разделе "Цветные строки". Кажется, что Xlib на самом деле использует 16-битные значения RGB для цветов:

Спецификация строки устройства RGB

[...] поддерживается более старый синтаксис для RGB Device, но его дальнейшее использование не приветствуется. Синтаксис - это начальный символ с четким знаком, за которым следует числовая спецификация в одном из следующих форматов:

#RGB          (4 bits each)
#RRGGBB       (8 bits each)
#RRRGGGBBB    (12 bits each)
#RRRRGGGGBBBB (16 bits each)

R, G и B представляют собой одно шестнадцатеричные цифры. Когда указано менее 16 битов, они представляют наиболее значимые биты значения (в отличие от синтаксиса «rgb:», в котором значения масштабируются). Например, строка « #3a7 » совпадает с « #3000a0007000 ».

1

Я не могу говорить об их использовании в X11, но в целом: дополнительные цветовые значения, которые не могут быть получены на меньших битовых глубинах и альфа-каналах.

1

Из приведенных вами примеров они вообще не используются, поскольку 24-битное значение просто повторяется (немного похоже на практику использования только 3 шестнадцатеричных символов для представления «веб-безопасных» цветов, поэтому # c00 означает то же самое, что и # cc0000 или 204 , 0,0, расширен до # cccc00000000).

32-битные значения обычно используют последний байт для альфа-канала (прозрачность). Я предполагаю, что возможно, что 48-битные значения используют 24-битные цвета с независимой альфа-версией для каждого цвета, но примеры, которые вы приводите, не поддерживают это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .