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.

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. You may need this to 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.

颜色模块处理所有与颜色相关的功能,如更改颜色深度、从十六进制代码创建颜色、颜色深度之间的转换、混合颜色等。

lv_color_t 用于存储颜色,其字段根据 lv_conf.h 中的 LV_COLOR_DEPTH 设置。 (见下文)

你可以在 lv_conf.h 中设置 LV_COLOR_16_SWAP 来交换 RGB565 颜色的字节。您可能需要它来通过面向字节的接口(如 SPI)发送 16 位颜色。由于 16 位数字以 Little Endian 格式存储(低位字节在低位地址),因此接口将首先发送低位字节。但是,显示器通常首先需要较高的字节。字节顺序不匹配将导致颜色高度失真。

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(色调饱和值-Hue Saturation Value)

查看原文

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. In this all color have a main 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

LVGL 包括材料设计的调色板。在此所有颜色都有一个主要的以及四个较深的变体和五个较浅的变体。

颜色名称如下:

  • 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.

要获得主要颜色,请使用 lv_color_t c = lv_palette_main(LV_PALETTE_...)

对于调色板颜色的较浅变体,请使用lv_color_t c = lv_palette_lighten(LV_PALETTE_..., v)v 可以是 1..5。

对于调色板颜色的较暗变体,请使用lv_color_t c = lv_palette_darken(LV_PALETTE_..., v)v 可以是 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: black
lv_color_t c = lv_color_change_lightness(lv_color_t c, lv_opa_t lvl);


// Mix 2 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.

lv_color_white()lv_color_black() 分别返回 0xFFFFFF0x000000

Opacity(不透明度)

查看原文

To describe opacity the lv_opa_t type is created as a wrapper to uint8_t. Some defines are also introduced:

  • LV_OPA_TRANSP Value: 0, means the opacity makes the color completely transparent

  • LV_OPA_10 Value: 25, means the color covers only a little

  • LV_OPA_20 ... OPA_80 come logically

  • LV_OPA_90 Value: 229, means the color near completely covers

  • LV_OPA_COVER Value: 255, means the color completely covers

You can also use the LV_OPA_* defines in lv_color_mix() as a 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 to lv_color1/8/16/24_t depending on current color depth setting

  • lv_color_int_t uint8_t, uint16_t or uint32_t depending on color depth setting. Used to build color arrays from plain numbers.

  • lv_opa_t A simple uint8_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 channel

  • ch.green green channel

  • ch.blue blue channel

  • full* 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:

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
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

Functions

LV_EXPORT_CONST_INT(LV_COLOR_DEPTH)
LV_EXPORT_CONST_INT(LV_COLOR_16_SWAP)
typedef LV_CONCAT3 (uint, LV_COLOR_SIZE, _t) lv_color_int_t
typedef LV_CONCAT3 (lv_color, LV_COLOR_DEPTH, _t) lv_color_t
static inline uint8_t lv_color_to1(lv_color_t color)
static inline uint8_t lv_color_to8(lv_color_t color)
static inline uint16_t lv_color_to16(lv_color_t color)
static inline uint32_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

参数

color -- a color

返回

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

参数
  • h -- hue [0..359]

  • s -- saturation [0..100]

  • v -- value [0..100]

返回

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

参数
  • r8 -- 8-bit red

  • g8 -- 8-bit green

  • b8 -- 8-bit blue

返回

the given RGB color in HSV

lv_color_hsv_t lv_color_to_hsv(lv_color_t color)

Convert a color to HSV

参数

color -- color

返回

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 is some cases

返回

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

Public Members

uint8_t full
uint8_t blue
uint8_t green
uint8_t red
union lv_color1_t::[anonymous] ch
union lv_color8_t

Public Members

uint8_t blue
uint8_t green
uint8_t red
struct lv_color8_t::[anonymous] ch
uint8_t full
union lv_color16_t

Public Members

uint16_t blue
uint16_t green
uint16_t red
uint16_t green_h
uint16_t green_l
struct lv_color16_t::[anonymous] ch
uint16_t full
union lv_color32_t

Public Members

uint8_t blue
uint8_t green
uint8_t red
uint8_t alpha
struct lv_color32_t::[anonymous] ch
uint32_t full
struct lv_color_hsv_t

Public Members

uint16_t h
uint8_t s
uint8_t v
struct _lv_color_filter_dsc_t

Public Members

lv_color_filter_cb_t filter_cb
void *user_data