Colors
The color module handles all color-related functions like changing color depth, creating colors from hex code, converting between color depths, mixing colors, etc.
The type lv_color_t is used to store a color in RGB888 format.
This type and format is used in almost all APIs regardless to LV_COLOR_DEPTH.
Creating colors
RGB
Create colors from Red, Green and Blue channel values:
/*All channels are 0-255*/
lv_color_t c = lv_color_make(red, green, blue);
/*Same but can be used for const initialization too */
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:
//h = 0..359, s = 0..100, v = 0..100
lv_color_t c = lv_color_hsv_to_rgb(h, s, v);
//All channels are 0-255
lv_color_hsv_t c_hsv = lv_color_rgb_to_hsv(r, g, b);
//From lv_color_t variable
lv_color_hsv_t c_hsv = lv_color_to_hsv(color);
Palette
LVGL includes Material Design's palette of colors. In this system all named colors have a nominal main color as well as four darker and five lighter variants.
The names of the colors are as follows:
LV_PALETTE_REDLV_PALETTE_PINKLV_PALETTE_PURPLELV_PALETTE_DEEP_PURPLELV_PALETTE_INDIGOLV_PALETTE_BLUELV_PALETTE_LIGHT_BLUELV_PALETTE_CYANLV_PALETTE_TEALLV_PALETTE_GREENLV_PALETTE_LIGHT_GREENLV_PALETTE_LIMELV_PALETTE_YELLOWLV_PALETTE_AMBERLV_PALETTE_ORANGELV_PALETTE_DEEP_ORANGELV_PALETTE_BROWNLV_PALETTE_BLUE_GREYLV_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:
// 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: white
lv_color_t c = lv_color_change_lightness(lv_color_t c, lv_opa_t lvl);
// Mix two colors with a given ratio 0: full c2, 255: full c1, 128: half c1 and half c2
lv_color_t c = lv_color_mix(c1, c2, ratio);
Built-in colors
lv_color_white() and lv_color_black() return 0xFFFFFF and
0x000000 respectively.
Opacity
To describe opacity the lv_opa_t type is created from uint8_t.
Some special purpose defines are also introduced:
LV_OPA_TRANSPValue: 0, means no opacity making the color completely transparentLV_OPA_10Value: 25, means the color covers only a littleLV_OPA_20 ... OPA_80follow logicallyLV_OPA_90Value: 229, means the color near completely coversLV_OPA_COVERValue: 255, means the color completely covers (full opacity)
You can also use the LV_OPA_* defines in lv_color_mix() as a
mixing ratio.