The BGR233 Color Space

This page displays the colors of the tiny BGR233 color space. This is a true-color color model, i.e. each pixel value carries its complete color value, as opposed to models based on color look-up tables.

What makes BGR233 useful is that it provides true-color color semantics in a very small amount of storage space or bandwidth; each pixel is just a single 8-bit byte. The color channels are allocated out of these 8 bits like this:

Bit 7 6 5 4 3 2 1 0
Name b1 b0 g2 g1 g0 r2 r1 r0

So, the eight bits of each pixel value gives 2 bits (b1b0) of blue, and three bits of green (g2g1g0) and red (r2r1r0), respectively. The bit-level endianness is of course not very interesting, the bits could be reordered into a "RGB332" color space for instance. This is of course the "secret" behind the name BGR233. Notice that this means there are only four different levels of blue, while there are eight levels of green and red available. This discrepancy makes it hard to express gradients using this color model.

The full color space, all 256 possible colors, is shown below. The text in each box gives the hexadecimal value for that particular color.

00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f
80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f
90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f
a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af
b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf
c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf
d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df
e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef
f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff

For display purposes, the background color of each box shows the BGR233 color expanded into the more typical 24-bit color space RGB888. This expansion is done simply by replicating the bits, like so:

RGB888 Bit 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BGR233 Bit r2 r1 r0 r2 r1 r0 r2 r1 g2 g1 g0 g2 g1 g0 g2 g1 b1 b0 b1 b0 b1 b0 b1 b0

Each component of the BGR233 color is simply repeated into the 8-bit space of the corresponding RGB888 component, by first left-adjusting it and then repeating the bit sequence down towards the least significant bits.

Here are the "pure" red, green and blue gradients expressible in BGR233. Note that since the number of bits allocated to blue is just two, there are only four shades of pure blue available. Black has been omitted from all the gradients, since its simply 0x00.

Red 01 02 03 04 05 06 07
Green 08 10 18 20 28 30 38
Blue 40 80 c0

The primary use of the BGR233 color space is for the remote framebuffer protocol used in VNC.