5

Quite often, especially in X11-related things (X resources, Roxterm themes, etc) I see colours specified as 48-bit numbers: #2e2e34343636, #cccc00000000 instead of the usual 24-bit #2e3436 and #cc0000. What are the extra bits used for?

3 Answers 3

4

I found the answer in Xlib documentation under "Color strings". It seems that Xlib actually uses 16 bit RGB values for colors:

RGB Device String Specification

[...] an older syntax for RGB Device is supported, but its continued use is not encouraged. The syntax is an initial sharp sign character followed by a numeric specification, in one of the following formats:

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

The R, G, and B represent single hexadecimal digits. When fewer than 16 bits each are specified, they represent the most significant bits of the value (unlike the “rgb:” syntax, in which values are scaled). For example, the string “#3a7” is the same as “#3000a0007000”.

1

I can't speak to X11's use of them, but generally: additional color values which cannot be produced at lesser bit depths and alpha channels.

1

From the examples you give they are not being used at all since the 24 bit value is simply being repeated (a bit like the practice of using only 3 hex characters to represent "websafe" colours so #c00 means the same as #cc0000 or 204,0,0, extended to #cccc00000000).

32-bit values would usually use the last byte for alpha channel (transparency). I guess it's possible that the 48-bit values are using 24-bit colours with an independent alpha per colour, but the examples you give don't support this.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .