lv_style.h

Defines

LV_STYLE_SENTINEL_VALUE
LV_STYLE_PROP_FLAG_NONE

No special behavior

LV_STYLE_PROP_FLAG_INHERITABLE

Inherited

LV_STYLE_PROP_FLAG_EXT_DRAW_UPDATE

Requires ext. draw size update when changed

LV_STYLE_PROP_FLAG_LAYOUT_UPDATE

Requires layout update when changed

LV_STYLE_PROP_FLAG_PARENT_LAYOUT_UPDATE

Requires layout update on parent when changed

LV_STYLE_PROP_FLAG_LAYER_UPDATE

Affects layer handling

LV_STYLE_PROP_FLAG_TRANSFORM

Affects the object's transformation

LV_STYLE_PROP_FLAG_ALL

Indicating all flags

LV_SCALE_NONE

Value for not zooming the image

LV_STYLE_CONST_INIT(var_name, prop_array)
LV_STYLE_CONST_PROPS_END
LV_GRAD_LEFT
LV_GRAD_RIGHT
LV_GRAD_TOP
LV_GRAD_BOTTOM
LV_GRAD_CENTER
LV_ASSERT_STYLE(style_p)

Enums

enum lv_blend_mode_t

Possible options for blending opaque drawings

Values:

enumerator LV_BLEND_MODE_NORMAL

Simply mix according to the opacity value

enumerator LV_BLEND_MODE_ADDITIVE

Add the respective color channels

enumerator LV_BLEND_MODE_SUBTRACTIVE

Subtract the foreground from the background

enumerator LV_BLEND_MODE_MULTIPLY

Multiply the foreground and background

enumerator LV_BLEND_MODE_DIFFERENCE

Absolute difference between foreground and background

enum lv_text_decor_t

Some options to apply decorations on texts. 'OR'ed values can be used.

Values:

enumerator LV_TEXT_DECOR_NONE
enumerator LV_TEXT_DECOR_UNDERLINE
enumerator LV_TEXT_DECOR_STRIKETHROUGH
enum lv_border_side_t

Selects on which sides border should be drawn 'OR'ed values can be used.

Values:

enumerator LV_BORDER_SIDE_NONE
enumerator LV_BORDER_SIDE_BOTTOM
enumerator LV_BORDER_SIDE_TOP
enumerator LV_BORDER_SIDE_LEFT
enumerator LV_BORDER_SIDE_RIGHT
enumerator LV_BORDER_SIDE_FULL
enumerator LV_BORDER_SIDE_INTERNAL

FOR matrix-like objects (e.g. Button matrix)

enum [anonymous]

Enumeration of all built in style properties

Props are split into groups of 16. When adding a new prop to a group, ensure it does not overflow into the next one.

Values:

enumerator LV_STYLE_PROP_INV
enumerator LV_STYLE_WIDTH
enumerator LV_STYLE_HEIGHT
enumerator LV_STYLE_LENGTH
enumerator LV_STYLE_MIN_WIDTH
enumerator LV_STYLE_MAX_WIDTH
enumerator LV_STYLE_MIN_HEIGHT
enumerator LV_STYLE_MAX_HEIGHT
enumerator LV_STYLE_X
enumerator LV_STYLE_Y
enumerator LV_STYLE_ALIGN
enumerator LV_STYLE_RADIUS
enumerator LV_STYLE_RADIAL_OFFSET
enumerator LV_STYLE_PAD_RADIAL
enumerator LV_STYLE_PAD_TOP
enumerator LV_STYLE_PAD_BOTTOM
enumerator LV_STYLE_PAD_LEFT
enumerator LV_STYLE_PAD_RIGHT
enumerator LV_STYLE_PAD_ROW
enumerator LV_STYLE_PAD_COLUMN
enumerator LV_STYLE_LAYOUT
enumerator LV_STYLE_MARGIN_TOP
enumerator LV_STYLE_MARGIN_BOTTOM
enumerator LV_STYLE_MARGIN_LEFT
enumerator LV_STYLE_MARGIN_RIGHT
enumerator LV_STYLE_BG_COLOR
enumerator LV_STYLE_BG_OPA
enumerator LV_STYLE_BG_GRAD_DIR
enumerator LV_STYLE_BG_MAIN_STOP
enumerator LV_STYLE_BG_GRAD_STOP
enumerator LV_STYLE_BG_GRAD_COLOR
enumerator LV_STYLE_BG_MAIN_OPA
enumerator LV_STYLE_BG_GRAD_OPA
enumerator LV_STYLE_BG_GRAD
enumerator LV_STYLE_BASE_DIR
enumerator LV_STYLE_BG_IMAGE_SRC
enumerator LV_STYLE_BG_IMAGE_OPA
enumerator LV_STYLE_BG_IMAGE_RECOLOR
enumerator LV_STYLE_BG_IMAGE_RECOLOR_OPA
enumerator LV_STYLE_BG_IMAGE_TILED
enumerator LV_STYLE_CLIP_CORNER
enumerator LV_STYLE_BORDER_WIDTH
enumerator LV_STYLE_BORDER_COLOR
enumerator LV_STYLE_BORDER_OPA
enumerator LV_STYLE_BORDER_SIDE
enumerator LV_STYLE_BORDER_POST
enumerator LV_STYLE_OUTLINE_WIDTH
enumerator LV_STYLE_OUTLINE_COLOR
enumerator LV_STYLE_OUTLINE_OPA
enumerator LV_STYLE_OUTLINE_PAD
enumerator LV_STYLE_SHADOW_WIDTH
enumerator LV_STYLE_SHADOW_COLOR
enumerator LV_STYLE_SHADOW_OPA
enumerator LV_STYLE_SHADOW_OFFSET_X
enumerator LV_STYLE_SHADOW_OFFSET_Y
enumerator LV_STYLE_SHADOW_SPREAD
enumerator LV_STYLE_IMAGE_OPA
enumerator LV_STYLE_IMAGE_RECOLOR
enumerator LV_STYLE_IMAGE_RECOLOR_OPA
enumerator LV_STYLE_LINE_WIDTH
enumerator LV_STYLE_LINE_DASH_WIDTH
enumerator LV_STYLE_LINE_DASH_GAP
enumerator LV_STYLE_LINE_ROUNDED
enumerator LV_STYLE_LINE_COLOR
enumerator LV_STYLE_LINE_OPA
enumerator LV_STYLE_ARC_WIDTH
enumerator LV_STYLE_ARC_ROUNDED
enumerator LV_STYLE_ARC_COLOR
enumerator LV_STYLE_ARC_OPA
enumerator LV_STYLE_ARC_IMAGE_SRC
enumerator LV_STYLE_TEXT_COLOR
enumerator LV_STYLE_TEXT_OPA
enumerator LV_STYLE_TEXT_FONT
enumerator LV_STYLE_TEXT_LETTER_SPACE
enumerator LV_STYLE_TEXT_LINE_SPACE
enumerator LV_STYLE_TEXT_DECOR
enumerator LV_STYLE_TEXT_ALIGN
enumerator LV_STYLE_OPA
enumerator LV_STYLE_OPA_LAYERED
enumerator LV_STYLE_COLOR_FILTER_DSC
enumerator LV_STYLE_COLOR_FILTER_OPA
enumerator LV_STYLE_ANIM
enumerator LV_STYLE_ANIM_DURATION
enumerator LV_STYLE_TRANSITION
enumerator LV_STYLE_BLEND_MODE
enumerator LV_STYLE_TRANSFORM_WIDTH
enumerator LV_STYLE_TRANSFORM_HEIGHT
enumerator LV_STYLE_TRANSLATE_X
enumerator LV_STYLE_TRANSLATE_Y
enumerator LV_STYLE_TRANSFORM_SCALE_X
enumerator LV_STYLE_TRANSFORM_SCALE_Y
enumerator LV_STYLE_TRANSFORM_ROTATION
enumerator LV_STYLE_TRANSFORM_PIVOT_X
enumerator LV_STYLE_TRANSFORM_PIVOT_Y
enumerator LV_STYLE_TRANSFORM_SKEW_X
enumerator LV_STYLE_TRANSFORM_SKEW_Y
enumerator LV_STYLE_BITMAP_MASK_SRC
enumerator LV_STYLE_ROTARY_SENSITIVITY
enumerator LV_STYLE_TRANSLATE_RADIAL
enumerator LV_STYLE_FLEX_FLOW
enumerator LV_STYLE_FLEX_MAIN_PLACE
enumerator LV_STYLE_FLEX_CROSS_PLACE
enumerator LV_STYLE_FLEX_TRACK_PLACE
enumerator LV_STYLE_FLEX_GROW
enumerator LV_STYLE_GRID_COLUMN_ALIGN
enumerator LV_STYLE_GRID_ROW_ALIGN
enumerator LV_STYLE_GRID_ROW_DSC_ARRAY
enumerator LV_STYLE_GRID_COLUMN_DSC_ARRAY
enumerator LV_STYLE_GRID_CELL_COLUMN_POS
enumerator LV_STYLE_GRID_CELL_COLUMN_SPAN
enumerator LV_STYLE_GRID_CELL_X_ALIGN
enumerator LV_STYLE_GRID_CELL_ROW_POS
enumerator LV_STYLE_GRID_CELL_ROW_SPAN
enumerator LV_STYLE_GRID_CELL_Y_ALIGN
enumerator LV_STYLE_LAST_BUILT_IN_PROP
enumerator LV_STYLE_NUM_BUILT_IN_PROPS
enumerator LV_STYLE_PROP_ANY
enumerator LV_STYLE_PROP_CONST
enum lv_style_res_t

Values:

enumerator LV_STYLE_RES_NOT_FOUND
enumerator LV_STYLE_RES_FOUND

Functions

void lv_style_init(lv_style_t *style)

Initialize a style

Note

Do not call lv_style_init on styles that already have some properties because this function won't free the used memory, just sets a default state for the style. In other words be sure to initialize styles only once!

Parameters:

style – pointer to a style to initialize

void lv_style_reset(lv_style_t *style)

Clear all properties from a style and free all allocated memories.

Parameters:

style – pointer to a style

void lv_style_copy(lv_style_t *dst, const lv_style_t *src)

Copy all properties of a style to an other. It has the same affect callying the same lv_set_style_... functions on both styles. It means new memory will be allocated to store the properties in the destination style. After the copy the destination style is fully independent of the source and source can removed without affecting the destination style.

Parameters:
  • dst – the destination to copy into (can not the a constant style)

  • src – the source style to copy from.

static inline bool lv_style_is_const(const lv_style_t *style)

Check if a style is constant

Parameters:

style – pointer to a style

Returns:

true: the style is constant

lv_style_prop_t lv_style_register_prop(uint8_t flag)

Register a new style property for custom usage

Example:

lv_style_prop_t MY_PROP;
static inline void lv_style_set_my_prop(lv_style_t * style, lv_color_t value) {
lv_style_value_t v = {.color = value}; lv_style_set_prop(style, MY_PROP, v); }

...
MY_PROP = lv_style_register_prop();
...
lv_style_set_my_prop(&style1, lv_palette_main(LV_PALETTE_RED));

Returns:

a new property ID, or LV_STYLE_PROP_INV if there are no more available.

lv_style_prop_t lv_style_get_num_custom_props(void)

Get the number of custom properties that have been registered thus far.

bool lv_style_remove_prop(lv_style_t *style, lv_style_prop_t prop)

Remove a property from a style

Parameters:
  • style – pointer to a style

  • prop – a style property ORed with a state.

Returns:

true: the property was found and removed; false: the property wasn't found

void lv_style_set_prop(lv_style_t *style, lv_style_prop_t prop, lv_style_value_t value)

Set the value of property in a style. This function shouldn't be used directly by the user. Instead use lv_style_set_<prop_name>(). E.g. lv_style_set_bg_color()

Parameters:
  • style – pointer to style

  • prop – the ID of a property (e.g. LV_STYLE_BG_COLOR)

  • valuelv_style_value_t variable in which a field is set according to the type of prop

lv_style_res_t lv_style_get_prop(const lv_style_t *style, lv_style_prop_t prop, lv_style_value_t *value)

Get the value of a property

Note

For performance reasons there are no sanity check on style

Parameters:
  • style – pointer to a style

  • prop – the ID of a property

  • value – pointer to a lv_style_value_t variable to store the value

Returns:

LV_RESULT_INVALID: the property wasn't found in the style (value is unchanged) LV_RESULT_OK: the property was fond, and value is set accordingly

void lv_style_transition_dsc_init(lv_style_transition_dsc_t *tr, const lv_style_prop_t props[], lv_anim_path_cb_t path_cb, uint32_t time, uint32_t delay, void *user_data)

Initialize a transition descriptor.

Example:

const static lv_style_prop_t trans_props[] = { LV_STYLE_BG_OPA, LV_STYLE_BG_COLOR, 0 };
static lv_style_transition_dsc_t trans1;
lv_style_transition_dsc_init(&trans1, trans_props, NULL, 300, 0, NULL);

Parameters:
  • tr – pointer to a transition descriptor to initialize

  • props – an array with the properties to transition. The last element must be zero.

  • path_cb – an animation path (ease) callback. If NULL liner path will be used.

  • time – duration of the transition in [ms]

  • delay – delay before the transition in [ms]

  • user_data – any custom data that will be saved in the transition animation and will be available when path_cb is called

lv_style_value_t lv_style_prop_get_default(lv_style_prop_t prop)

Get the default value of a property

Parameters:

prop – the ID of a property

Returns:

the default value

static inline lv_style_res_t lv_style_get_prop_inlined(const lv_style_t *style, lv_style_prop_t prop, lv_style_value_t *value)

Get the value of a property

Note

For performance reasons there are no sanity check on style

Note

This function is the same as lv_style_get_prop but inlined. Use it only on performance critical places

Parameters:
  • style – pointer to a style

  • prop – the ID of a property

  • value – pointer to a lv_style_value_t variable to store the value

Returns:

LV_RESULT_INVALID: the property wasn't found in the style (value is unchanged) LV_RESULT_OK: the property was fond, and value is set accordingly

bool lv_style_is_empty(const lv_style_t *style)

Checks if a style is empty (has no properties)

Parameters:

style – pointer to a style

Returns:

true if the style is empty

static inline uint32_t lv_style_get_prop_group(lv_style_prop_t prop)

Tell the group of a property. If the a property from a group is set in a style the (1 << group) bit of style->has_group is set. It allows early skipping the style if the property is not exists in the style at all.

Parameters:

prop – a style property

Returns:

the group [0..30] 30 means all the custom properties with index > 120

uint8_t lv_style_prop_lookup_flags(lv_style_prop_t prop)

Get the flags of a built-in or custom property.

Parameters:

prop – a style property

Returns:

the flags of the property

static inline void lv_style_set_size(lv_style_t *style, int32_t width, int32_t height)
static inline void lv_style_set_pad_all(lv_style_t *style, int32_t value)
static inline void lv_style_set_pad_hor(lv_style_t *style, int32_t value)
static inline void lv_style_set_pad_ver(lv_style_t *style, int32_t value)
static inline void lv_style_set_pad_gap(lv_style_t *style, int32_t value)
static inline void lv_style_set_margin_hor(lv_style_t *style, int32_t value)
static inline void lv_style_set_margin_ver(lv_style_t *style, int32_t value)
static inline void lv_style_set_margin_all(lv_style_t *style, int32_t value)
static inline void lv_style_set_transform_scale(lv_style_t *style, int32_t value)
static inline bool lv_style_prop_has_flag(lv_style_prop_t prop, uint8_t flag)

Check if the style property has a specified behavioral flag.

Do not pass multiple flags to this function as backwards-compatibility is not guaranteed for that.

Parameters:
  • prop – Property ID

  • flag – Flag

Returns:

true if the flag is set for this property

Variables

const lv_style_prop_t lv_style_const_prop_id_inv
union lv_style_value_t
#include <lv_style.h>

A common type to handle all the property types in the same way.

Public Members

int32_t num

Number integer number (opacity, enums, booleans or "normal" numbers)

const void *ptr

Constant pointers (font, cone text, etc)

lv_color_t color

Colors

struct lv_style_transition_dsc_t
#include <lv_style.h>

Descriptor for style transitions

Public Members

const lv_style_prop_t *props

An array with the properties to animate.

void *user_data

A custom user data that will be passed to the animation's user_data

lv_anim_path_cb_t path_xcb

A path for the animation.

uint32_t time

Duration of the transition in [ms]

uint32_t delay

Delay before the transition in [ms]

struct lv_style_const_prop_t
#include <lv_style.h>

Descriptor of a constant style property.

Public Members

lv_style_prop_t prop
lv_style_value_t value
struct lv_style_t
#include <lv_style.h>

Descriptor of a style (a collection of properties and values).

Public Members

uint32_t sentinel
void *values_and_props
uint32_t has_group
uint8_t prop_cnt

255 means it's a constant style