support 16 colors, 256 colors, and arbitrary rgb colors