Odpowiedzi:
Odpowiedź znalazłem w dokumentacji Xlib w „Kolorach łańcuchów”. Wydaje się, że Xlib faktycznie używa 16-bitowych wartości RGB dla kolorów:
Specyfikacja ciągu urządzeń RGB
[...] obsługiwana jest starsza składnia urządzenia RGB, ale nie zaleca się jego dalszego używania. Składnia jest początkowym znakiem ostrego znaku, po którym następuje numeryczna specyfikacja w jednym z następujących formatów:
#RGB (4 bits each) #RRGGBB (8 bits each) #RRRGGGBBB (12 bits each) #RRRRGGGGBBBB (16 bits each)
R, G i B reprezentują pojedyncze cyfry szesnastkowe. Gdy podano mniej niż 16 bitów, reprezentują one najbardziej znaczące bity wartości (w przeciwieństwie do składni „rgb:”, w której wartości są skalowane). Na przykład ciąg „
#3a7
" jest taki sam jak "#3000a0007000
”
Nie mogę mówić o używaniu ich przez X11, ale ogólnie: dodatkowe wartości kolorów, które nie mogą być produkowane w mniejszej głębi bitowej i kanałach alfa.
Z podanych przykładów nie są w ogóle używane, ponieważ wartość 24-bitowa jest po prostu powtarzana (trochę jak praktyka używania tylko 3 znaków szesnastkowych do reprezentowania kolorów „bezpiecznych”, więc # c00 oznacza to samo, co # cc0000 lub 204 , 0,0, rozszerzony na # cccc00000000).
Wartości 32-bitowe zwykle używają ostatniego bajtu dla kanału alfa (przezroczystość). Sądzę, że możliwe jest, że wartości 48-bitowe wykorzystują 24-bitowe kolory z niezależną alfa na kolor, ale podane przykłady nie obsługują tego.