The color module handles all color-related functions like changing color depth, creating colors from hex code, converting between color depths, mixing colors, etc.
`lv_color_t` is used to store a color. Its fileds are set according to `LV_COLOR_DEPTH` in `lv_conf.h`. (See below)
You may set `LV_COLOR_16_SWAP` in `lv_conf.h` to swap the bytes of *RGB565* colors. It's useful if you send the 16-bit colors via a byte-oriented interface like SPI.
As 16-bit numbers are stored in Little Endian format (lower byte on the lower address), the interface will send the lower byte first. However, displays usually need the higher byte first.
A mismatch in the byte order will result in highly distorted colors.
## Creating colors
### RGB
Create colors from Red, Green and Blue channel values
```c
//All channels are 0-255
lv_color_t c = lv_color_make(red, green, blue);
//From hex code 0x000000..0xFFFFFF interpreted as RED + GREEN + BLUE
lv_color_t c = lv_color_hex(0x123456);
//From 3 digits. Same as lv_color_hex(0x112233)
lv_color_t c = lv_color_hex3(0x123);
```
### HSV
Create colors from Hue, Saturation and Value values
LVGL includes [material design's palette](https://vuetifyjs.com/en/styles/colors/#material-colors). In this all color has a main, 4 darker and 5 lighter variants.
The name of the palettes are the follwings:
-`LV_PALETTE_RED`
-`LV_PALETTE_PINK`
-`LV_PALETTE_PURPLE`
-`LV_PALETTE_DEEP_PURPLE`
-`LV_PALETTE_INDIGO`
-`LV_PALETTE_BLUE`
-`LV_PALETTE_LIGHT_BLUE`
-`LV_PALETTE_CYAN`
-`LV_PALETTE_TEAL`
-`LV_PALETTE_GREEN`
-`LV_PALETTE_LIGHT_GREEN`
-`LV_PALETTE_LIME`
-`LV_PALETTE_YELLOW`
-`LV_PALETTE_AMBER`
-`LV_PALETTE_ORANGE`
-`LV_PALETTE_DEEP_ORANGE`
-`LV_PALETTE_BROWN`
-`LV_PALETTE_BLUE_GREY`
-`LV_PALETTE_GREY`
To get the main color use `lv_color_t c = lv_palette_main(LV_PALETTE_...)`.
For the lighter variants of a palette color use `lv_color_t c = lv_palette_lighten(LV_PALETTE_..., v)`. `v` can be 1..5.
For the darker variants of a palette color use `lv_color_t c = lv_palette_darken(LV_PALETTE_..., v)`. `v` can be 1..4.
### Modify and mix colors
The following functions can modify a color:
```c
//Lighten a color. 0: no change, 255: white
lv_color_t c = lv_color_lighten(c, lvl);
//Darken a color. 0: no change, 255: black
lv_color_t c = lv_color_darken(lv_color_t c, lv_opa_t lvl);
//Lighten or darken a color. 0: black, 128: no change 255: black
lv_color_t c = lv_color_change_lightness(lv_color_t c, lv_opa_t lvl);
Mix 2 color with a given ratio 0: full c2, 255: full c1, 128: half c1 and half c2