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. Its fields are set according to LV_COLOR_DEPTH
in lv_conf.h
. (See below)
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);
//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_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:
// 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_TRANSP
Value: 0, means no opacity making the color completely transparentLV_OPA_10
Value: 25, means the color covers only a littleLV_OPA_20 ... OPA_80
follow logicallyLV_OPA_90
Value: 229, means the color near completely coversLV_OPA_COVER
Value: 255, means the color completely covers (full opacity)
You can also use the LV_OPA_*
defines in lv_color_mix()
as a mixing ratio.
Color types¶
The following variable types are defined by the color module:
lv_color1_t
Monochrome color. Also has R, G, B fields for compatibility but they are always the same value (1 byte)lv_color8_t
A structure to store R (3 bit),G (3 bit),B (2 bit) components for 8-bit colors (1 byte)lv_color16_t
A structure to store R (5 bit),G (6 bit),B (5 bit) components for 16-bit colors (2 byte)lv_color32_t
A structure to store R (8 bit),G (8 bit), B (8 bit) components for 24-bit colors (4 byte)lv_color_t
Equal tolv_color1/8/16/24_t
depending on the configured color depth settinglv_color_int_t
uint8_t
,uint16_t
oruint32_t
depending on the color depth setting. Used to build color arrays from plain numbers.lv_opa_t
A simpleuint8_t
type to describe opacity.
The lv_color_t
, lv_color1_t
, lv_color8_t
, lv_color16_t
and lv_color32_t
types have four fields:
ch.red
red channelch.green
green channelch.blue
blue channelfull*
red + green + blue as one number
You can set the current color depth in lv_conf.h, by setting the LV_COLOR_DEPTH
define to 1 (monochrome), 8, 16 or 32.
Convert color¶
You can convert a color from the current color depth to another. The converter functions return with a number, so you have to use the full
field to map a converted color back into a structure:
lv_color_t c;
c.red = 0x38;
c.green = 0x70;
c.blue = 0xCC;
lv_color1_t c1;
c1.full = lv_color_to1(c); /*Return 1 for light colors, 0 for dark colors*/
lv_color8_t c8;
c8.full = lv_color_to8(c); /*Give a 8 bit number with the converted color*/
lv_color16_t c16;
c16.full = lv_color_to16(c); /*Give a 16 bit number with the converted color*/
lv_color32_t c24;
c32.full = lv_color_to32(c); /*Give a 32 bit number with the converted color*/
API¶
Typedefs
-
typedef lv_color_t (*lv_color_filter_cb_t)(const struct _lv_color_filter_dsc_t*, lv_color_t, lv_opa_t)¶
-
typedef struct _lv_color_filter_dsc_t lv_color_filter_dsc_t¶
Enums
-
enum [anonymous]¶
Opacity percentages.
Values:
-
enumerator LV_OPA_TRANSP¶
-
enumerator LV_OPA_0¶
-
enumerator LV_OPA_10¶
-
enumerator LV_OPA_20¶
-
enumerator LV_OPA_30¶
-
enumerator LV_OPA_40¶
-
enumerator LV_OPA_50¶
-
enumerator LV_OPA_60¶
-
enumerator LV_OPA_70¶
-
enumerator LV_OPA_80¶
-
enumerator LV_OPA_90¶
-
enumerator LV_OPA_100¶
-
enumerator LV_OPA_COVER¶
-
enumerator LV_OPA_TRANSP¶
-
enum lv_color_format_t¶
Values:
-
enumerator LV_COLOR_FORMAT_UNKNOWN¶
-
enumerator LV_COLOR_FORMAT_L8¶
-
enumerator LV_COLOR_FORMAT_A8¶
-
enumerator LV_COLOR_FORMAT_I1¶
-
enumerator LV_COLOR_FORMAT_I2¶
-
enumerator LV_COLOR_FORMAT_I4¶
-
enumerator LV_COLOR_FORMAT_I8¶
-
enumerator LV_COLOR_FORMAT_A8L8¶
-
enumerator LV_COLOR_FORMAT_ARGB2222¶
-
enumerator LV_COLOR_FORMAT_RGB565¶
-
enumerator LV_COLOR_FORMAT_RGB565_CHROMA_KEYED¶
-
enumerator LV_COLOR_FORMAT_ARGB1555¶
-
enumerator LV_COLOR_FORMAT_ARGB4444¶
-
enumerator LV_COLOR_FORMAT_RGB565A8¶
Color array followed by Alpha array
-
enumerator LV_COLOR_FORMAT_ARGB8565¶
-
enumerator LV_COLOR_FORMAT_RGB888¶
-
enumerator LV_COLOR_FORMAT_RGB888_CHROMA_KEYED¶
-
enumerator LV_COLOR_FORMAT_ARGB8888¶
-
enumerator LV_COLOR_FORMAT_XRGB8888¶
-
enumerator LV_COLOR_FORMAT_XRGB8888_CHROMA_KEYED¶
-
enumerator LV_COLOR_FORMAT_NATIVE¶
-
enumerator LV_COLOR_FORMAT_NATIVE_CHROMA_KEYED¶
-
enumerator LV_COLOR_FORMAT_NATIVE_ALPHA¶
-
enumerator LV_COLOR_FORMAT_NATIVE
-
enumerator LV_COLOR_FORMAT_NATIVE_CHROMA_KEYED
-
enumerator LV_COLOR_FORMAT_NATIVE_ALPHA
-
enumerator LV_COLOR_FORMAT_NATIVE
-
enumerator LV_COLOR_FORMAT_NATIVE_CHROMA_KEYED
-
enumerator LV_COLOR_FORMAT_NATIVE_ALPHA
-
enumerator LV_COLOR_FORMAT_NATIVE
-
enumerator LV_COLOR_FORMAT_NATIVE_CHROMA_KEYED
-
enumerator LV_COLOR_FORMAT_NATIVE_ALPHA
-
enumerator LV_COLOR_FORMAT_NATIVE_REVERSED¶
-
enumerator LV_COLOR_FORMAT_NATIVE_ALPHA_REVERSED¶
-
enumerator LV_COLOR_FORMAT_RAW¶
-
enumerator LV_COLOR_FORMAT_RAW_ALPHA¶
-
enumerator LV_COLOR_FORMAT_UNKNOWN¶
-
enum lv_palette_t¶
Values:
-
enumerator LV_PALETTE_RED¶
-
enumerator LV_PALETTE_PINK¶
-
enumerator LV_PALETTE_PURPLE¶
-
enumerator LV_PALETTE_DEEP_PURPLE¶
-
enumerator LV_PALETTE_INDIGO¶
-
enumerator LV_PALETTE_BLUE¶
-
enumerator LV_PALETTE_LIGHT_BLUE¶
-
enumerator LV_PALETTE_CYAN¶
-
enumerator LV_PALETTE_TEAL¶
-
enumerator LV_PALETTE_GREEN¶
-
enumerator LV_PALETTE_LIGHT_GREEN¶
-
enumerator LV_PALETTE_LIME¶
-
enumerator LV_PALETTE_YELLOW¶
-
enumerator LV_PALETTE_AMBER¶
-
enumerator LV_PALETTE_ORANGE¶
-
enumerator LV_PALETTE_DEEP_ORANGE¶
-
enumerator LV_PALETTE_BROWN¶
-
enumerator LV_PALETTE_BLUE_GREY¶
-
enumerator LV_PALETTE_GREY¶
-
enumerator _LV_PALETTE_LAST¶
-
enumerator LV_PALETTE_NONE¶
-
enumerator LV_PALETTE_RED¶
Functions
-
LV_EXPORT_CONST_INT(LV_COLOR_DEPTH)¶
- typedef LV_CONCAT3 (lv_color, LV_COLOR_DEPTH, _t) lv_color_t
-
void lv_color_to_native(const uint8_t *src_buf, lv_color_format_t src_cf, lv_color_t *c_out, lv_opa_t *a_out, lv_color_t alpha_color, uint32_t px_cnt)¶
-
void lv_color_from_native(const lv_color_t *src_buf, uint8_t *dest_buf, lv_color_format_t dest_cf, uint32_t px_cnt)¶
-
void lv_color_from_native_alpha(const uint8_t *src_buf, uint8_t *dest_buf, lv_color_format_t dest_cf, uint32_t px_cnt)¶
-
uint8_t lv_color_format_get_size(lv_color_format_t src_cf)¶
Get the pixel size of a color format in bits
- Parameters
cf -- a color format (
LV_IMG_CF_...
)- Returns
the pixel size in bits
-
bool lv_color_format_has_alpha(lv_color_format_t src_cf)¶
Check if a color format has alpha channel or not
- Parameters
cf -- a color format (
LV_IMG_CF_...
)- Returns
true: has alpha channel; false: doesn't have alpha channel
-
static inline void lv_color8_set_int(lv_color8_t *c, uint8_t v)¶
-
static inline void lv_color16_set_int(lv_color16_t *c, uint16_t v)¶
-
static inline void lv_color24_set_int(lv_color24_t *c, uint32_t v)¶
-
static inline void lv_color32_set_int(lv_color32_t *c, uint32_t v)¶
-
static inline void lv_color_set_int(lv_color_t *c, uint32_t v)¶
-
static inline uint8_t lv_color8_to_int(lv_color8_t c)¶
-
static inline uint16_t lv_color16_to_int(lv_color16_t c)¶
-
static inline uint32_t lv_color24_to_int(lv_color24_t c)¶
-
static inline uint32_t lv_color32_to_int(lv_color32_t c)¶
-
static inline uint32_t lv_color_to_int(lv_color_t c)¶
-
static inline lv_color8_t lv_color8_from_buf(const uint8_t *buf)¶
-
static inline lv_color16_t lv_color16_from_buf(const uint8_t *buf)¶
-
static inline lv_color24_t lv_color24_from_buf(const uint8_t *buf)¶
-
static inline lv_color32_t lv_color32_from_buf(const uint8_t *buf)¶
-
static inline lv_color_t lv_color_from_buf(const uint8_t *buf)¶
-
static inline bool lv_color_eq(lv_color_t c1, lv_color_t c2)¶
-
static inline lv_color8_t lv_color_to8(lv_color_t color)¶
-
static inline lv_color16_t lv_color_to16(lv_color_t color)¶
-
static inline lv_color24_t lv_color_to24(lv_color_t color)¶
-
static inline lv_color32_t lv_color_to32(lv_color_t color)¶
-
static inline uint8_t lv_color_brightness(lv_color_t color)¶
Get the brightness of a color
- Parameters
color -- a color
- Returns
the brightness [0..255]
-
static inline lv_color_t lv_color_make(uint8_t r, uint8_t g, uint8_t b)¶
-
static inline lv_color_t lv_color_hex(uint32_t c)¶
-
static inline lv_color_t lv_color_hex3(uint32_t c)¶
-
static inline void lv_color_filter_dsc_init(lv_color_filter_dsc_t *dsc, lv_color_filter_cb_t cb)¶
-
lv_color_t lv_color_lighten(lv_color_t c, lv_opa_t lvl)¶
-
lv_color_t lv_color_darken(lv_color_t c, lv_opa_t lvl)¶
-
lv_color_t lv_color_change_lightness(lv_color_t c, lv_opa_t lvl)¶
-
lv_color_t lv_color_hsv_to_rgb(uint16_t h, uint8_t s, uint8_t v)¶
Convert a HSV color to RGB
- Parameters
h -- hue [0..359]
s -- saturation [0..100]
v -- value [0..100]
- Returns
the given RGB color in RGB (with LV_COLOR_DEPTH depth)
-
lv_color_hsv_t lv_color_rgb_to_hsv(uint8_t r8, uint8_t g8, uint8_t b8)¶
Convert a 32-bit RGB color to HSV
- Parameters
r8 -- 8-bit red
g8 -- 8-bit green
b8 -- 8-bit blue
- Returns
the given RGB color in HSV
-
lv_color_hsv_t lv_color_to_hsv(lv_color_t color)¶
Convert a color to HSV
- Parameters
color -- color
- Returns
the given color in HSV
-
static inline lv_color_t lv_color_chroma_key(void)¶
Just a wrapper around LV_COLOR_CHROMA_KEY because it might be more convenient to use a function in some cases
- Returns
LV_COLOR_CHROMA_KEY
-
lv_color_t lv_palette_main(lv_palette_t p)¶
-
static inline lv_color_t lv_color_white(void)¶
-
static inline lv_color_t lv_color_black(void)¶
-
lv_color_t lv_palette_lighten(lv_palette_t p, uint8_t lvl)¶
-
lv_color_t lv_palette_darken(lv_palette_t p, uint8_t lvl)¶
-
union lv_color1_t¶
-
union lv_color8_t¶
-
struct lv_color16_t¶
-
struct lv_color24_t¶
-
struct lv_color32_t¶
-
struct lv_color_hsv_t¶
-
struct _lv_color_filter_dsc_t¶