/*
 * @file
 *
 **********************************************************************
 *                            DO NOT EDIT
 * This file is automatically generated by "style_api_gen.py"
 **********************************************************************
 */


#ifndef LV_OBJ_STYLE_GEN_H
#define LV_OBJ_STYLE_GEN_H

#ifdef __cplusplus
extern "C" {
#endif

#include "../misc/lv_area.h"
#include "../misc/lv_style.h"
#include "../core/lv_obj_style.h"
#include "../misc/lv_types.h"

/**
 * Gets width of Widget. Pixel, percentage and `LV_SIZE_CONTENT` values can be used.
 * Percentage values are relative to the width of the parent's content area.
 * Default: Widget dependent, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_width(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_WIDTH);
    return (int32_t)v.num;
}

/**
 * Gets a minimal width. Pixel and percentage values can be used. Percentage values
 * are relative to the width of the parent's content area.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_min_width(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_MIN_WIDTH);
    return (int32_t)v.num;
}

/**
 * Gets a maximal width. Pixel and percentage values can be used. Percentage values
 * are relative to the width of the parent's content area.
 * Default: LV_COORD_MAX, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_max_width(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_MAX_WIDTH);
    return (int32_t)v.num;
}

/**
 * Gets height of Widget. Pixel, percentage and `LV_SIZE_CONTENT` can be used.
 * Percentage values are relative to the height of the parent's content area.
 * Default: Widget dependent, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_height(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_HEIGHT);
    return (int32_t)v.num;
}

/**
 * Gets a minimal height. Pixel and percentage values can be used. Percentage values
 * are relative to the height of the parent's content area.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_min_height(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_MIN_HEIGHT);
    return (int32_t)v.num;
}

/**
 * Gets a maximal height. Pixel and percentage values can be used. Percentage values
 * are relative to the height of the parent's content area.
 * Default: LV_COORD_MAX, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_max_height(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_MAX_HEIGHT);
    return (int32_t)v.num;
}

/**
 * Its meaning depends on the type of Widget. For example in case of lv_scale it means
 * the length of the ticks.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_length(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_LENGTH);
    return (int32_t)v.num;
}

/**
 * Get X coordinate of Widget considering the ``align`` setting. Pixel and percentage
 * values can be used. Percentage values are relative to the width of the parent's
 * content area.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_x(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_X);
    return (int32_t)v.num;
}

/**
 * Get Y coordinate of Widget considering the ``align`` setting. Pixel and percentage
 * values can be used. Percentage values are relative to the height of the parent's
 * content area.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_y(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_Y);
    return (int32_t)v.num;
}

/**
 * Get the alignment which tells from which point of the parent the X and Y
 * coordinates should be interpreted. Possible values are: `LV_ALIGN_DEFAULT`,
 * `LV_ALIGN_TOP_LEFT/MID/RIGHT`, `LV_ALIGN_BOTTOM_LEFT/MID/RIGHT`,
 * `LV_ALIGN_LEFT/RIGHT_MID`, `LV_ALIGN_CENTER`. `LV_ALIGN_DEFAULT` means
 * `LV_ALIGN_TOP_LEFT` with LTR base direction and `LV_ALIGN_TOP_RIGHT` with RTL base
 * direction.
 * Default: `LV_ALIGN_DEFAULT`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_align_t lv_obj_get_style_align(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_ALIGN);
    return (lv_align_t)v.num;
}

/**
 * Make Widget wider on both sides with this value. Pixel and percentage (with
 * `lv_pct(x)`) values can be used. Percentage values are relative to Widget's width.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_transform_width(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSFORM_WIDTH);
    return (int32_t)v.num;
}

/**
 * Make Widget higher on both sides with this value. Pixel and percentage (with
 * `lv_pct(x)`) values can be used. Percentage values are relative to Widget's height.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_transform_height(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSFORM_HEIGHT);
    return (int32_t)v.num;
}

/**
 * Move Widget with this value in X direction. Applied after layouts, aligns and other
 * positioning. Pixel and percentage (with `lv_pct(x)`) values can be used. Percentage
 * values are relative to Widget's width.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_translate_x(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSLATE_X);
    return (int32_t)v.num;
}

/**
 * Move Widget with this value in Y direction. Applied after layouts, aligns and other
 * positioning. Pixel and percentage (with `lv_pct(x)`) values can be used. Percentage
 * values are relative to Widget's height.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_translate_y(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSLATE_Y);
    return (int32_t)v.num;
}

/**
 * Move object around the centre of the parent object (e.g. around the circumference
 * of a scale).
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_translate_radial(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSLATE_RADIAL);
    return (int32_t)v.num;
}

/**
 * Zoom Widget horizontally. The value 256 (or `LV_SCALE_NONE`) means normal size, 128
 * half size, 512 double size, and so on.
 * Default: 0, inherited: No, layout: Yes, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_transform_scale_x(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSFORM_SCALE_X);
    return (int32_t)v.num;
}

/**
 * Zoom Widget vertically. The value 256 (or `LV_SCALE_NONE`) means normal size, 128
 * half size, 512 double size, and so on.
 * Default: 0, inherited: No, layout: Yes, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_transform_scale_y(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSFORM_SCALE_Y);
    return (int32_t)v.num;
}

/**
 * Rotate Widget. The value is interpreted in 0.1 degree units. E.g. 450 means 45 deg.
 * Default: 0, inherited: No, layout: Yes, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_transform_rotation(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSFORM_ROTATION);
    return (int32_t)v.num;
}

/**
 * Get pivot point's X coordinate for transformations. Relative to Widget's top left corner.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_transform_pivot_x(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSFORM_PIVOT_X);
    return (int32_t)v.num;
}

/**
 * Get pivot point's Y coordinate for transformations. Relative to Widget's top left corner.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_transform_pivot_y(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSFORM_PIVOT_Y);
    return (int32_t)v.num;
}

/**
 * Skew Widget horizontally. The value is interpreted in 0.1 degree units. E.g. 450
 * means 45 deg.
 * Default: 0, inherited: No, layout: Yes, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_transform_skew_x(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSFORM_SKEW_X);
    return (int32_t)v.num;
}

/**
 * Skew Widget vertically. The value is interpreted in 0.1 degree units. E.g. 450
 * means 45 deg.
 * Default: 0, inherited: No, layout: Yes, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_transform_skew_y(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSFORM_SKEW_Y);
    return (int32_t)v.num;
}

/**
 * Gets the padding on the top. It makes the content area smaller in this direction.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_pad_top(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_PAD_TOP);
    return (int32_t)v.num;
}

/**
 * Gets the padding on the bottom. It makes the content area smaller in this direction.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_pad_bottom(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_PAD_BOTTOM);
    return (int32_t)v.num;
}

/**
 * Gets the padding on the left. It makes the content area smaller in this direction.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_pad_left(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_PAD_LEFT);
    return (int32_t)v.num;
}

/**
 * Gets the padding on the right. It makes the content area smaller in this direction.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_pad_right(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_PAD_RIGHT);
    return (int32_t)v.num;
}

/**
 * Gets the padding between the rows. Used by the layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_pad_row(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_PAD_ROW);
    return (int32_t)v.num;
}

/**
 * Gets the padding between the columns. Used by the layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_pad_column(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_PAD_COLUMN);
    return (int32_t)v.num;
}

/**
 * Pad text labels away from the scale ticks/remainder of the ``LV_PART_``.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_pad_radial(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_PAD_RADIAL);
    return (int32_t)v.num;
}

/**
 * Gets margin on the top. Widget will keep this space from its siblings in layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_margin_top(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_MARGIN_TOP);
    return (int32_t)v.num;
}

/**
 * Gets margin on the bottom. Widget will keep this space from its siblings in layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_margin_bottom(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_MARGIN_BOTTOM);
    return (int32_t)v.num;
}

/**
 * Gets margin on the left. Widget will keep this space from its siblings in layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_margin_left(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_MARGIN_LEFT);
    return (int32_t)v.num;
}

/**
 * Gets margin on the right. Widget will keep this space from its siblings in layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_margin_right(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_MARGIN_RIGHT);
    return (int32_t)v.num;
}

/**
 * Get background color of Widget.
 * Default: `0xffffff`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_bg_color(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_COLOR);
    return v.color;
}

/**
 * Get background color of Widget.
 * Default: `0xffffff`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_bg_color_filtered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_BG_COLOR));
    return v.color;
}

/**
 * Get opacity of the background. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_TRANSP`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_bg_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get gradient color of the background. Used only if `grad_dir` is not `LV_GRAD_DIR_NONE`.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_bg_grad_color(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD_COLOR);
    return v.color;
}

/**
 * Get gradient color of the background. Used only if `grad_dir` is not `LV_GRAD_DIR_NONE`.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_bg_grad_color_filtered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD_COLOR));
    return v.color;
}

/**
 * Get direction of the gradient of the background. Possible values are
 * `LV_GRAD_DIR_NONE/HOR/VER`.
 * Default: `LV_GRAD_DIR_NONE`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_grad_dir_t lv_obj_get_style_bg_grad_dir(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD_DIR);
    return (lv_grad_dir_t)v.num;
}

/**
 * Get point from which background color should start for gradients. 0 means to
 * top/left side, 255 the bottom/right side, 128 the center, and so on.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_bg_main_stop(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_MAIN_STOP);
    return (int32_t)v.num;
}

/**
 * Get point from which background's gradient color should start. 0 means to top/left
 * side, 255 the bottom/right side, 128 the center, and so on.
 * Default: 255, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_bg_grad_stop(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD_STOP);
    return (int32_t)v.num;
}

/**
 * Get opacity of the first gradient color.
 * Default: 255, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_bg_main_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_MAIN_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get opacity of the second gradient color.
 * Default: 255, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_bg_grad_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get gradient definition. The pointed instance must exist while Widget is alive.
 * NULL to disable. It wraps `BG_GRAD_COLOR`, `BG_GRAD_DIR`, `BG_MAIN_STOP` and
 * `BG_GRAD_STOP` into one descriptor and allows creating gradients with more colors
 * as well. If it's set other gradient related properties will be ignored.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline const lv_grad_dsc_t * lv_obj_get_style_bg_grad(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD);
    return (const lv_grad_dsc_t *)v.ptr;
}

/**
 * Get a background image. Can be a pointer to `lv_image_dsc_t`, a path to a file or
 * an `LV_SYMBOL_...`.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline const void * lv_obj_get_style_bg_image_src(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_IMAGE_SRC);
    return (const void *)v.ptr;
}

/**
 * Get opacity of the background image. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means
 * fully transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other
 * values or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_bg_image_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_IMAGE_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get a color to mix to the background image.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_bg_image_recolor(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_IMAGE_RECOLOR);
    return v.color;
}

/**
 * Get a color to mix to the background image.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_bg_image_recolor_filtered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_BG_IMAGE_RECOLOR));
    return v.color;
}

/**
 * Get intensity of background image recoloring. Value 0, `LV_OPA_0` or
 * `LV_OPA_TRANSP` means no mixing, 255, `LV_OPA_100` or `LV_OPA_COVER` means full
 * recoloring, other values or LV_OPA_10, LV_OPA_20, etc are interpreted
 * proportionally.
 * Default: `LV_OPA_TRANSP`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_bg_image_recolor_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_IMAGE_RECOLOR_OPA);
    return (lv_opa_t)v.num;
}

/**
 * If enabled the background image will be tiled. Possible values are `true` or `false`.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline bool lv_obj_get_style_bg_image_tiled(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_IMAGE_TILED);
    return (bool)v.num;
}

/**
 * Get color of the border.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_border_color(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BORDER_COLOR);
    return v.color;
}

/**
 * Get color of the border.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_border_color_filtered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_BORDER_COLOR));
    return v.color;
}

/**
 * Get opacity of the border. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_border_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BORDER_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get width of the border. Only pixel values can be used.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_border_width(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BORDER_WIDTH);
    return (int32_t)v.num;
}

/**
 * Get only which side(s) the border should be drawn. Possible values are
 * `LV_BORDER_SIDE_NONE/TOP/BOTTOM/LEFT/RIGHT/INTERNAL`. OR-ed values can be used as
 * well, e.g. `LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_LEFT`.
 * Default: `LV_BORDER_SIDE_FULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_border_side_t lv_obj_get_style_border_side(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BORDER_SIDE);
    return (lv_border_side_t)v.num;
}

/**
 * Gets whether the border should be drawn before or after the children are drawn.
 * `true`: after children, `false`: before children.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline bool lv_obj_get_style_border_post(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BORDER_POST);
    return (bool)v.num;
}

/**
 * Get width of outline in pixels.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_outline_width(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_OUTLINE_WIDTH);
    return (int32_t)v.num;
}

/**
 * Get color of outline.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_outline_color(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_OUTLINE_COLOR);
    return v.color;
}

/**
 * Get color of outline.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_outline_color_filtered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_OUTLINE_COLOR));
    return v.color;
}

/**
 * Get opacity of outline. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_outline_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_OUTLINE_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get padding of outline, i.e. the gap between Widget and the outline.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_outline_pad(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_OUTLINE_PAD);
    return (int32_t)v.num;
}

/**
 * Get width of the shadow in pixels. The value should be >= 0.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_shadow_width(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_SHADOW_WIDTH);
    return (int32_t)v.num;
}

/**
 * Get an offset on the shadow in pixels in X direction.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_shadow_offset_x(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_SHADOW_OFFSET_X);
    return (int32_t)v.num;
}

/**
 * Get an offset on the shadow in pixels in Y direction.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_shadow_offset_y(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_SHADOW_OFFSET_Y);
    return (int32_t)v.num;
}

/**
 * Make shadow calculation to use a larger or smaller rectangle as base. The value can
 * be in pixels to make the area larger/smaller.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_shadow_spread(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_SHADOW_SPREAD);
    return (int32_t)v.num;
}

/**
 * Get color of shadow.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_shadow_color(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_SHADOW_COLOR);
    return v.color;
}

/**
 * Get color of shadow.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_shadow_color_filtered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_SHADOW_COLOR));
    return v.color;
}

/**
 * Get opacity of shadow. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_shadow_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_SHADOW_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get opacity of an image. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_image_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_IMAGE_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get color to mix with the image.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_image_recolor(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_IMAGE_RECOLOR);
    return v.color;
}

/**
 * Get color to mix with the image.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_image_recolor_filtered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_IMAGE_RECOLOR));
    return v.color;
}

/**
 * Get intensity of color mixing. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_image_recolor_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_IMAGE_RECOLOR_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get image colorkey definition. The lv_image_colorkey_t contains two color values:
 * `high_color` and `low_color`. the color of pixels ranging from `low_color` to
 * `high_color` will be transparent.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline const lv_image_colorkey_t * lv_obj_get_style_image_colorkey(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_IMAGE_COLORKEY);
    return (const lv_image_colorkey_t *)v.ptr;
}

/**
 * Get width of lines in pixels.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_line_width(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_LINE_WIDTH);
    return (int32_t)v.num;
}

/**
 * Get width of dashes in pixels. Note that dash works only on horizontal and vertical lines.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_line_dash_width(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_LINE_DASH_WIDTH);
    return (int32_t)v.num;
}

/**
 * Get gap between dashes in pixels. Note that dash works only on horizontal and
 * vertical lines.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_line_dash_gap(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_LINE_DASH_GAP);
    return (int32_t)v.num;
}

/**
 * Make end points of the lines rounded. `true`: rounded, `false`: perpendicular line ending.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline bool lv_obj_get_style_line_rounded(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_LINE_ROUNDED);
    return (bool)v.num;
}

/**
 * Get color of lines.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_line_color(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_LINE_COLOR);
    return v.color;
}

/**
 * Get color of lines.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_line_color_filtered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_LINE_COLOR));
    return v.color;
}

/**
 * Get opacity of lines.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_line_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_LINE_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get width (thickness) of arcs in pixels.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_arc_width(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_ARC_WIDTH);
    return (int32_t)v.num;
}

/**
 * Make end points of arcs rounded. `true`: rounded, `false`: perpendicular line ending.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline bool lv_obj_get_style_arc_rounded(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_ARC_ROUNDED);
    return (bool)v.num;
}

/**
 * Get color of arc.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_arc_color(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_ARC_COLOR);
    return v.color;
}

/**
 * Get color of arc.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_arc_color_filtered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_ARC_COLOR));
    return v.color;
}

/**
 * Get opacity of arcs.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_arc_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_ARC_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get an image from which arc will be masked out. It's useful to display complex
 * effects on the arcs. Can be a pointer to `lv_image_dsc_t` or a path to a file.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline const void * lv_obj_get_style_arc_image_src(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_ARC_IMAGE_SRC);
    return (const void *)v.ptr;
}

/**
 * Gets color of text.
 * Default: `0x000000`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_text_color(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_COLOR);
    return v.color;
}

/**
 * Gets color of text.
 * Default: `0x000000`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_text_color_filtered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_COLOR));
    return v.color;
}

/**
 * Get opacity of text. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_text_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get font of text (a pointer `lv_font_t *`).
 * Default: `LV_FONT_DEFAULT`, inherited: Yes, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline const lv_font_t * lv_obj_get_style_text_font(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_FONT);
    return (const lv_font_t *)v.ptr;
}

/**
 * Get letter space in pixels.
 * Default: 0, inherited: Yes, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_text_letter_space(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_LETTER_SPACE);
    return (int32_t)v.num;
}

/**
 * Get line space in pixels.
 * Default: 0, inherited: Yes, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_text_line_space(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_LINE_SPACE);
    return (int32_t)v.num;
}

/**
 * Get decoration for the text. Possible values are
 * `LV_TEXT_DECOR_NONE/UNDERLINE/STRIKETHROUGH`. OR-ed values can be used as well.
 * Default: `LV_TEXT_DECOR_NONE`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_text_decor_t lv_obj_get_style_text_decor(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_DECOR);
    return (lv_text_decor_t)v.num;
}

/**
 * Get how to align the lines of the text. Note that it doesn't align the Widget
 * itself, only the lines inside the Widget. Possible values are
 * `LV_TEXT_ALIGN_LEFT/CENTER/RIGHT/AUTO`. `LV_TEXT_ALIGN_AUTO` detect the text base
 * direction and uses left or right alignment accordingly.
 * Default: `LV_TEXT_ALIGN_AUTO`, inherited: Yes, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_text_align_t lv_obj_get_style_text_align(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_ALIGN);
    return (lv_text_align_t)v.num;
}

/**
 * Gets the color of letter outline stroke.
 * Default: `0x000000`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_text_outline_stroke_color(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_OUTLINE_STROKE_COLOR);
    return v.color;
}

/**
 * Gets the color of letter outline stroke.
 * Default: `0x000000`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_text_outline_stroke_color_filtered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_OUTLINE_STROKE_COLOR));
    return v.color;
}

/**
 * Get the letter outline stroke width in pixels.
 * Default: 0, inherited: Yes, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_text_outline_stroke_width(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_OUTLINE_STROKE_WIDTH);
    return (int32_t)v.num;
}

/**
 * Get the opacity of the letter outline stroke. Value 0, `LV_OPA_0` or
 * `LV_OPA_TRANSP` means fully transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means
 * fully covering, other values or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_text_outline_stroke_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_OUTLINE_STROKE_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Gets the intensity of blurring. Applied on each lv_part separately before the
 * children are rendered.
 * Default: `0`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_blur_radius(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BLUR_RADIUS);
    return (int32_t)v.num;
}

/**
 * If `true` the background of the widget will be blurred. The part should have < 100%
 * opacity to make it visible. If `false` the given part will be blurred when it's
 * rendered but before drawing the children.
 * Default: `false`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline bool lv_obj_get_style_blur_backdrop(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BLUR_BACKDROP);
    return (bool)v.num;
}

/**
 * Setting to `LV_BLUR_QUALITY_SPEED` the blurring algorithm will prefer speed over
 * quality. `LV_BLUR_QUALITY_PRECISION` will force using higher quality but slower
 * blur. With `LV_BLUR_QUALITY_AUTO` the quality will be selected automatically.
 * Default: `LV_BLUR_QUALITY_AUTO`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_blur_quality_t lv_obj_get_style_blur_quality(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BLUR_QUALITY);
    return (lv_blur_quality_t)v.num;
}

/**
 * Gets the intensity of blurring. Applied on each lv_part separately before the
 * children are rendered.
 * Default: `0`, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_drop_shadow_radius(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_DROP_SHADOW_RADIUS);
    return (int32_t)v.num;
}

/**
 * Get an offset on the shadow in pixels in X direction.
 * Default: `0`, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_drop_shadow_offset_x(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_DROP_SHADOW_OFFSET_X);
    return (int32_t)v.num;
}

/**
 * Get an offset on the shadow in pixels in Y direction.
 * Default: `0`, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_drop_shadow_offset_y(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_DROP_SHADOW_OFFSET_Y);
    return (int32_t)v.num;
}

/**
 * Get the color of the shadow.
 * Default: `0`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_drop_shadow_color(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_DROP_SHADOW_COLOR);
    return v.color;
}

/**
 * Get the color of the shadow.
 * Default: `0`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_drop_shadow_color_filtered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_DROP_SHADOW_COLOR));
    return v.color;
}

/**
 * Get the opacity of the shadow.
 * Default: `0`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_drop_shadow_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_DROP_SHADOW_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Setting to `LV_BLUR_QUALITY_SPEED` the blurring algorithm will prefer speed over
 * quality. `LV_BLUR_QUALITY_PRECISION` will force using higher quality but slower
 * blur. With `LV_BLUR_QUALITY_AUTO` the quality will be selected automatically.
 * Default: `LV_BLUR_QUALITY_PRECISION`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_blur_quality_t lv_obj_get_style_drop_shadow_quality(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_DROP_SHADOW_QUALITY);
    return (lv_blur_quality_t)v.num;
}

/**
 * Get radius on every corner. The value is interpreted in pixels (>= 0) or
 * `LV_RADIUS_CIRCLE` for max radius.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_radius(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_RADIUS);
    return (int32_t)v.num;
}

/**
 * Move start point of object (e.g. scale tick) radially.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_radial_offset(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_RADIAL_OFFSET);
    return (int32_t)v.num;
}

/**
 * Enable clipping of content that overflows rounded corners of parent Widget. Can be
 * `true` or `false`.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline bool lv_obj_get_style_clip_corner(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_CLIP_CORNER);
    return (bool)v.num;
}

/**
 * Scale down all opacity values of the Widget by this factor. Value 0, `LV_OPA_0` or
 * `LV_OPA_TRANSP` means fully transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means
 * fully covering, other values or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_OPA);
    return (lv_opa_t)v.num;
}

/**
 * First draw Widget on the layer, then scale down layer opacity factor. Value 0,
 * `LV_OPA_0` or `LV_OPA_TRANSP` means fully transparent, 255, `LV_OPA_100` or
 * `LV_OPA_COVER` means fully covering, other values or LV_OPA_10, LV_OPA_20, etc
 * means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_opa_layered(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_OPA_LAYERED);
    return (lv_opa_t)v.num;
}

/**
 * Mix a color with all colors of the Widget.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline const lv_color_filter_dsc_t * lv_obj_get_style_color_filter_dsc(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_COLOR_FILTER_DSC);
    return (const lv_color_filter_dsc_t *)v.ptr;
}

/**
 * The intensity of mixing of color filter.
 * Default: `LV_OPA_TRANSP`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_color_filter_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_COLOR_FILTER_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Get a color to mix to the obj.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_color_t lv_obj_get_style_recolor(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_RECOLOR);
    return v.color;
}

/**
 * Gets the intensity of color mixing. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means
 * fully transparent. A value of  255, `LV_OPA_100` or `LV_OPA_COVER` means fully
 * opaque. Intermediate values like LV_OPA_10, LV_OPA_20, etc result in
 * semi-transparency.
 * Default: `LV_OPA_TRANSP`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_opa_t lv_obj_get_style_recolor_opa(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_RECOLOR_OPA);
    return (lv_opa_t)v.num;
}

/**
 * Animation template for Widget's animation. Should be a pointer to `lv_anim_t`. The
 * animation parameters are widget specific, e.g. animation time could be the E.g.
 * blink time of the cursor on the Text Area or scroll time of a roller. See Widgets'
 * documentation to learn more.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline const lv_anim_t * lv_obj_get_style_anim(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_ANIM);
    return (const lv_anim_t *)v.ptr;
}

/**
 * Animation duration in milliseconds. Its meaning is widget specific. E.g. blink time
 * of the cursor on the Text Area or scroll time of a roller. See Widgets'
 * documentation to learn more.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline uint32_t lv_obj_get_style_anim_duration(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_ANIM_DURATION);
    return (uint32_t)v.num;
}

/**
 * An initialized ``lv_style_transition_dsc_t`` to describe a transition.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline const lv_style_transition_dsc_t * lv_obj_get_style_transition(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSITION);
    return (const lv_style_transition_dsc_t *)v.ptr;
}

/**
 * Describes how to blend the colors to the background. Possible values are
 * `LV_BLEND_MODE_NORMAL/ADDITIVE/SUBTRACTIVE/MULTIPLY/DIFFERENCE`.
 * Default: `LV_BLEND_MODE_NORMAL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_blend_mode_t lv_obj_get_style_blend_mode(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BLEND_MODE);
    return (lv_blend_mode_t)v.num;
}

/**
 * Get layout of Widget. Children will be repositioned and resized according to
 * policies set for the layout. For possible values see documentation of the layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline uint16_t lv_obj_get_style_layout(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_LAYOUT);
    return (uint16_t)v.num;
}

/**
 * Get base direction of Widget. Possible values are `LV_BIDI_DIR_LTR/RTL/AUTO`.
 * Default: `LV_BASE_DIR_AUTO`, inherited: Yes, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_base_dir_t lv_obj_get_style_base_dir(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BASE_DIR);
    return (lv_base_dir_t)v.num;
}

/**
 * If set, a layer will be created for the widget and the layer will be masked with
 * this A8 bitmap mask.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline const void * lv_obj_get_style_bitmap_mask_src(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BITMAP_MASK_SRC);
    return (const void *)v.ptr;
}

/**
 * Adjust sensitivity for rotary encoders in 1/256 unit. It means, 128: slow down the
 * rotary to half, 512: speeds up to double, 256: no change.
 * Default: `256`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline uint32_t lv_obj_get_style_rotary_sensitivity(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_ROTARY_SENSITIVITY);
    return (uint32_t)v.num;
}

#if LV_USE_FLEX
/**
 * Defines in which direction the flex layout should arrange the children.
 * Default: `LV_FLEX_FLOW_NONE`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_flex_flow_t lv_obj_get_style_flex_flow(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_FLEX_FLOW);
    return (lv_flex_flow_t)v.num;
}

/**
 * Defines how to align the children in the direction of flex flow.
 * Default: `LV_FLEX_ALIGN_NONE`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_flex_align_t lv_obj_get_style_flex_main_place(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_FLEX_MAIN_PLACE);
    return (lv_flex_align_t)v.num;
}

/**
 * Defines how to align the children perpendicular to the direction of flex flow.
 * Default: `LV_FLEX_ALIGN_NONE`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_flex_align_t lv_obj_get_style_flex_cross_place(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_FLEX_CROSS_PLACE);
    return (lv_flex_align_t)v.num;
}

/**
 * Defines how to align the tracks of the flow.
 * Default: `LV_FLEX_ALIGN_NONE`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_flex_align_t lv_obj_get_style_flex_track_place(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_FLEX_TRACK_PLACE);
    return (lv_flex_align_t)v.num;
}

/**
 * Defines how much space to take proportionally from the free space of the Widget's track.
 * Default: `0`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline uint8_t lv_obj_get_style_flex_grow(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_FLEX_GROW);
    return (uint8_t)v.num;
}

#endif /* LV_USE_FLEX */

#if LV_USE_GRID
/**
 * An array to describe the columns of the grid. Should be LV_GRID_TEMPLATE_LAST terminated.
 * Default: `NULL`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline const int32_t * lv_obj_get_style_grid_column_dsc_array(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_COLUMN_DSC_ARRAY);
    return (const int32_t *)v.ptr;
}

/**
 * Defines how to distribute the columns.
 * Default: `LV_GRID_ALIGN_START`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_grid_align_t lv_obj_get_style_grid_column_align(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_COLUMN_ALIGN);
    return (lv_grid_align_t)v.num;
}

/**
 * An array to describe the rows of the grid. Should be LV_GRID_TEMPLATE_LAST terminated.
 * Default: `NULL`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline const int32_t * lv_obj_get_style_grid_row_dsc_array(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_ROW_DSC_ARRAY);
    return (const int32_t *)v.ptr;
}

/**
 * Defines how to distribute the rows.
 * Default: `LV_GRID_ALIGN_START`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_grid_align_t lv_obj_get_style_grid_row_align(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_ROW_ALIGN);
    return (lv_grid_align_t)v.num;
}

/**
 * Get column in which Widget should be placed.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_grid_cell_column_pos(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_CELL_COLUMN_POS);
    return (int32_t)v.num;
}

/**
 * Get how to align Widget horizontally.
 * Default: `LV_GRID_ALIGN_START`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_grid_align_t lv_obj_get_style_grid_cell_x_align(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_CELL_X_ALIGN);
    return (lv_grid_align_t)v.num;
}

/**
 * Get how many columns Widget should span. Needs to be >= 1.
 * Default: 1, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_grid_cell_column_span(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_CELL_COLUMN_SPAN);
    return (int32_t)v.num;
}

/**
 * Get row in which Widget should be placed.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_grid_cell_row_pos(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_CELL_ROW_POS);
    return (int32_t)v.num;
}

/**
 * Get how to align Widget vertically.
 * Default: `LV_GRID_ALIGN_START`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline lv_grid_align_t lv_obj_get_style_grid_cell_y_align(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_CELL_Y_ALIGN);
    return (lv_grid_align_t)v.num;
}

/**
 * Get how many rows Widget should span. Needs to be >= 1.
 * Default: 1, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj    Pointer to Widget
 * @param  part   One of the `LV_PART_...` enum values
 */
static inline int32_t lv_obj_get_style_grid_cell_row_span(const lv_obj_t * obj, lv_part_t part)
{
    lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_CELL_ROW_SPAN);
    return (int32_t)v.num;
}

#endif /* LV_USE_GRID */

/**
 * Sets width of Widget. Pixel, percentage and `LV_SIZE_CONTENT` values can be used.
 * Percentage values are relative to the width of the parent's content area.
 * Default: Widget dependent, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_width(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets a minimal width. Pixel and percentage values can be used. Percentage values
 * are relative to the width of the parent's content area.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_min_width(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets a maximal width. Pixel and percentage values can be used. Percentage values
 * are relative to the width of the parent's content area.
 * Default: LV_COORD_MAX, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_max_width(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets height of Widget. Pixel, percentage and `LV_SIZE_CONTENT` can be used.
 * Percentage values are relative to the height of the parent's content area.
 * Default: Widget dependent, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_height(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets a minimal height. Pixel and percentage values can be used. Percentage values
 * are relative to the height of the parent's content area.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_min_height(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets a maximal height. Pixel and percentage values can be used. Percentage values
 * are relative to the height of the parent's content area.
 * Default: LV_COORD_MAX, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_max_height(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Its meaning depends on the type of Widget. For example in case of lv_scale it means
 * the length of the ticks.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_length(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set X coordinate of Widget considering the ``align`` setting. Pixel and percentage
 * values can be used. Percentage values are relative to the width of the parent's
 * content area.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_x(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set Y coordinate of Widget considering the ``align`` setting. Pixel and percentage
 * values can be used. Percentage values are relative to the height of the parent's
 * content area.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_y(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set the alignment which tells from which point of the parent the X and Y
 * coordinates should be interpreted. Possible values are: `LV_ALIGN_DEFAULT`,
 * `LV_ALIGN_TOP_LEFT/MID/RIGHT`, `LV_ALIGN_BOTTOM_LEFT/MID/RIGHT`,
 * `LV_ALIGN_LEFT/RIGHT_MID`, `LV_ALIGN_CENTER`. `LV_ALIGN_DEFAULT` means
 * `LV_ALIGN_TOP_LEFT` with LTR base direction and `LV_ALIGN_TOP_RIGHT` with RTL base
 * direction.
 * Default: `LV_ALIGN_DEFAULT`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_align(lv_obj_t * obj, lv_align_t value, lv_style_selector_t selector);

/**
 * Make Widget wider on both sides with this value. Pixel and percentage (with
 * `lv_pct(x)`) values can be used. Percentage values are relative to Widget's width.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_transform_width(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Make Widget higher on both sides with this value. Pixel and percentage (with
 * `lv_pct(x)`) values can be used. Percentage values are relative to Widget's height.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_transform_height(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Move Widget with this value in X direction. Applied after layouts, aligns and other
 * positioning. Pixel and percentage (with `lv_pct(x)`) values can be used. Percentage
 * values are relative to Widget's width.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_translate_x(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Move Widget with this value in Y direction. Applied after layouts, aligns and other
 * positioning. Pixel and percentage (with `lv_pct(x)`) values can be used. Percentage
 * values are relative to Widget's height.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_translate_y(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Move object around the centre of the parent object (e.g. around the circumference
 * of a scale).
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_translate_radial(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Zoom Widget horizontally. The value 256 (or `LV_SCALE_NONE`) means normal size, 128
 * half size, 512 double size, and so on.
 * Default: 0, inherited: No, layout: Yes, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_transform_scale_x(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Zoom Widget vertically. The value 256 (or `LV_SCALE_NONE`) means normal size, 128
 * half size, 512 double size, and so on.
 * Default: 0, inherited: No, layout: Yes, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_transform_scale_y(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Rotate Widget. The value is interpreted in 0.1 degree units. E.g. 450 means 45 deg.
 * Default: 0, inherited: No, layout: Yes, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_transform_rotation(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set pivot point's X coordinate for transformations. Relative to Widget's top left corner.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_transform_pivot_x(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set pivot point's Y coordinate for transformations. Relative to Widget's top left corner.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_transform_pivot_y(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Skew Widget horizontally. The value is interpreted in 0.1 degree units. E.g. 450
 * means 45 deg.
 * Default: 0, inherited: No, layout: Yes, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_transform_skew_x(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Skew Widget vertically. The value is interpreted in 0.1 degree units. E.g. 450
 * means 45 deg.
 * Default: 0, inherited: No, layout: Yes, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_transform_skew_y(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets the padding on the top. It makes the content area smaller in this direction.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_pad_top(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets the padding on the bottom. It makes the content area smaller in this direction.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_pad_bottom(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets the padding on the left. It makes the content area smaller in this direction.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_pad_left(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets the padding on the right. It makes the content area smaller in this direction.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_pad_right(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets the padding between the rows. Used by the layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_pad_row(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets the padding between the columns. Used by the layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_pad_column(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Pad text labels away from the scale ticks/remainder of the ``LV_PART_``.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_pad_radial(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets margin on the top. Widget will keep this space from its siblings in layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_margin_top(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets margin on the bottom. Widget will keep this space from its siblings in layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_margin_bottom(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets margin on the left. Widget will keep this space from its siblings in layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_margin_left(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Sets margin on the right. Widget will keep this space from its siblings in layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_margin_right(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set background color of Widget.
 * Default: `0xffffff`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_color(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Set opacity of the background. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_TRANSP`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set gradient color of the background. Used only if `grad_dir` is not `LV_GRAD_DIR_NONE`.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_grad_color(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Set direction of the gradient of the background. Possible values are
 * `LV_GRAD_DIR_NONE/HOR/VER`.
 * Default: `LV_GRAD_DIR_NONE`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_grad_dir(lv_obj_t * obj, lv_grad_dir_t value, lv_style_selector_t selector);

/**
 * Set point from which background color should start for gradients. 0 means to
 * top/left side, 255 the bottom/right side, 128 the center, and so on.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_main_stop(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set point from which background's gradient color should start. 0 means to top/left
 * side, 255 the bottom/right side, 128 the center, and so on.
 * Default: 255, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_grad_stop(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set opacity of the first gradient color.
 * Default: 255, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_main_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set opacity of the second gradient color.
 * Default: 255, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_grad_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set gradient definition. The pointed instance must exist while Widget is alive.
 * NULL to disable. It wraps `BG_GRAD_COLOR`, `BG_GRAD_DIR`, `BG_MAIN_STOP` and
 * `BG_GRAD_STOP` into one descriptor and allows creating gradients with more colors
 * as well. If it's set other gradient related properties will be ignored.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Pointer to gradient descriptor
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_grad(lv_obj_t * obj, const lv_grad_dsc_t * value, lv_style_selector_t selector);

/**
 * Set a background image. Can be a pointer to `lv_image_dsc_t`, a path to a file or
 * an `LV_SYMBOL_...`.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Pointer to image source
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_image_src(lv_obj_t * obj, const void * value, lv_style_selector_t selector);

/**
 * Set opacity of the background image. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means
 * fully transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other
 * values or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_image_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set a color to mix to the background image.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_image_recolor(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Set intensity of background image recoloring. Value 0, `LV_OPA_0` or
 * `LV_OPA_TRANSP` means no mixing, 255, `LV_OPA_100` or `LV_OPA_COVER` means full
 * recoloring, other values or LV_OPA_10, LV_OPA_20, etc are interpreted
 * proportionally.
 * Default: `LV_OPA_TRANSP`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_image_recolor_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * If enabled the background image will be tiled. Possible values are `true` or `false`.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bg_image_tiled(lv_obj_t * obj, bool value, lv_style_selector_t selector);

/**
 * Set color of the border.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_border_color(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Set opacity of the border. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_border_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set width of the border. Only pixel values can be used.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_border_width(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set only which side(s) the border should be drawn. Possible values are
 * `LV_BORDER_SIDE_NONE/TOP/BOTTOM/LEFT/RIGHT/INTERNAL`. OR-ed values can be used as
 * well, e.g. `LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_LEFT`.
 * Default: `LV_BORDER_SIDE_FULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_border_side(lv_obj_t * obj, lv_border_side_t value, lv_style_selector_t selector);

/**
 * Sets whether the border should be drawn before or after the children are drawn.
 * `true`: after children, `false`: before children.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_border_post(lv_obj_t * obj, bool value, lv_style_selector_t selector);

/**
 * Set width of outline in pixels.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_outline_width(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set color of outline.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_outline_color(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Set opacity of outline. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_outline_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set padding of outline, i.e. the gap between Widget and the outline.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_outline_pad(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set width of the shadow in pixels. The value should be >= 0.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_shadow_width(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set an offset on the shadow in pixels in X direction.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_shadow_offset_x(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set an offset on the shadow in pixels in Y direction.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_shadow_offset_y(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Make shadow calculation to use a larger or smaller rectangle as base. The value can
 * be in pixels to make the area larger/smaller.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_shadow_spread(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set color of shadow.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_shadow_color(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Set opacity of shadow. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_shadow_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set opacity of an image. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_image_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set color to mix with the image.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_image_recolor(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Set intensity of color mixing. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_image_recolor_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set image colorkey definition. The lv_image_colorkey_t contains two color values:
 * `high_color` and `low_color`. the color of pixels ranging from `low_color` to
 * `high_color` will be transparent.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Pointer to image color key
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_image_colorkey(lv_obj_t * obj, const lv_image_colorkey_t * value, lv_style_selector_t selector);

/**
 * Set width of lines in pixels.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_line_width(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set width of dashes in pixels. Note that dash works only on horizontal and vertical lines.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_line_dash_width(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set gap between dashes in pixels. Note that dash works only on horizontal and
 * vertical lines.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_line_dash_gap(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Make end points of the lines rounded. `true`: rounded, `false`: perpendicular line ending.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_line_rounded(lv_obj_t * obj, bool value, lv_style_selector_t selector);

/**
 * Set color of lines.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_line_color(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Set opacity of lines.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_line_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set width (thickness) of arcs in pixels.
 * Default: 0, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_arc_width(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Make end points of arcs rounded. `true`: rounded, `false`: perpendicular line ending.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_arc_rounded(lv_obj_t * obj, bool value, lv_style_selector_t selector);

/**
 * Set color of arc.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_arc_color(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Set opacity of arcs.
 * Default: `LV_OPA_COVER`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_arc_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set an image from which arc will be masked out. It's useful to display complex
 * effects on the arcs. Can be a pointer to `lv_image_dsc_t` or a path to a file.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Pointer to image source
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_arc_image_src(lv_obj_t * obj, const void * value, lv_style_selector_t selector);

/**
 * Sets color of text.
 * Default: `0x000000`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_text_color(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Set opacity of text. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully
 * transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values
 * or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_text_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set font of text (a pointer `lv_font_t *`).
 * Default: `LV_FONT_DEFAULT`, inherited: Yes, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Pointer to font
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_text_font(lv_obj_t * obj, const lv_font_t * value, lv_style_selector_t selector);

/**
 * Set letter space in pixels.
 * Default: 0, inherited: Yes, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_text_letter_space(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set line space in pixels.
 * Default: 0, inherited: Yes, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_text_line_space(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set decoration for the text. Possible values are
 * `LV_TEXT_DECOR_NONE/UNDERLINE/STRIKETHROUGH`. OR-ed values can be used as well.
 * Default: `LV_TEXT_DECOR_NONE`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_text_decor(lv_obj_t * obj, lv_text_decor_t value, lv_style_selector_t selector);

/**
 * Set how to align the lines of the text. Note that it doesn't align the Widget
 * itself, only the lines inside the Widget. Possible values are
 * `LV_TEXT_ALIGN_LEFT/CENTER/RIGHT/AUTO`. `LV_TEXT_ALIGN_AUTO` detect the text base
 * direction and uses left or right alignment accordingly.
 * Default: `LV_TEXT_ALIGN_AUTO`, inherited: Yes, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_text_align(lv_obj_t * obj, lv_text_align_t value, lv_style_selector_t selector);

/**
 * Sets the color of letter outline stroke.
 * Default: `0x000000`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_text_outline_stroke_color(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Set the letter outline stroke width in pixels.
 * Default: 0, inherited: Yes, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_text_outline_stroke_width(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set the opacity of the letter outline stroke. Value 0, `LV_OPA_0` or
 * `LV_OPA_TRANSP` means fully transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means
 * fully covering, other values or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_text_outline_stroke_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Sets the intensity of blurring. Applied on each lv_part separately before the
 * children are rendered.
 * Default: `0`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_blur_radius(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * If `true` the background of the widget will be blurred. The part should have < 100%
 * opacity to make it visible. If `false` the given part will be blurred when it's
 * rendered but before drawing the children.
 * Default: `false`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_blur_backdrop(lv_obj_t * obj, bool value, lv_style_selector_t selector);

/**
 * Setting to `LV_BLUR_QUALITY_SPEED` the blurring algorithm will prefer speed over
 * quality. `LV_BLUR_QUALITY_PRECISION` will force using higher quality but slower
 * blur. With `LV_BLUR_QUALITY_AUTO` the quality will be selected automatically.
 * Default: `LV_BLUR_QUALITY_AUTO`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_blur_quality(lv_obj_t * obj, lv_blur_quality_t value, lv_style_selector_t selector);

/**
 * Sets the intensity of blurring. Applied on each lv_part separately before the
 * children are rendered.
 * Default: `0`, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_drop_shadow_radius(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set an offset on the shadow in pixels in X direction.
 * Default: `0`, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_drop_shadow_offset_x(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set an offset on the shadow in pixels in Y direction.
 * Default: `0`, inherited: No, layout: No, ext. draw: Yes.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_drop_shadow_offset_y(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set the color of the shadow.
 * Default: `0`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_drop_shadow_color(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Set the opacity of the shadow.
 * Default: `0`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_drop_shadow_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Setting to `LV_BLUR_QUALITY_SPEED` the blurring algorithm will prefer speed over
 * quality. `LV_BLUR_QUALITY_PRECISION` will force using higher quality but slower
 * blur. With `LV_BLUR_QUALITY_AUTO` the quality will be selected automatically.
 * Default: `LV_BLUR_QUALITY_PRECISION`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_drop_shadow_quality(lv_obj_t * obj, lv_blur_quality_t value, lv_style_selector_t selector);

/**
 * Set radius on every corner. The value is interpreted in pixels (>= 0) or
 * `LV_RADIUS_CIRCLE` for max radius.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_radius(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Move start point of object (e.g. scale tick) radially.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_radial_offset(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Enable clipping of content that overflows rounded corners of parent Widget. Can be
 * `true` or `false`.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_clip_corner(lv_obj_t * obj, bool value, lv_style_selector_t selector);

/**
 * Scale down all opacity values of the Widget by this factor. Value 0, `LV_OPA_0` or
 * `LV_OPA_TRANSP` means fully transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means
 * fully covering, other values or LV_OPA_10, LV_OPA_20, etc means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * First draw Widget on the layer, then scale down layer opacity factor. Value 0,
 * `LV_OPA_0` or `LV_OPA_TRANSP` means fully transparent, 255, `LV_OPA_100` or
 * `LV_OPA_COVER` means fully covering, other values or LV_OPA_10, LV_OPA_20, etc
 * means semi transparency.
 * Default: `LV_OPA_COVER`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_opa_layered(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Mix a color with all colors of the Widget.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Pointer to color-filter descriptor
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_color_filter_dsc(lv_obj_t * obj, const lv_color_filter_dsc_t * value, lv_style_selector_t selector);

/**
 * The intensity of mixing of color filter.
 * Default: `LV_OPA_TRANSP`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_color_filter_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Set a color to mix to the obj.
 * Default: `0x000000`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Color to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_recolor(lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);

/**
 * Sets the intensity of color mixing. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means
 * fully transparent. A value of  255, `LV_OPA_100` or `LV_OPA_COVER` means fully
 * opaque. Intermediate values like LV_OPA_10, LV_OPA_20, etc result in
 * semi-transparency.
 * Default: `LV_OPA_TRANSP`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_recolor_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);

/**
 * Animation template for Widget's animation. Should be a pointer to `lv_anim_t`. The
 * animation parameters are widget specific, e.g. animation time could be the E.g.
 * blink time of the cursor on the Text Area or scroll time of a roller. See Widgets'
 * documentation to learn more.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Pointer to animation descriptor
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_anim(lv_obj_t * obj, const lv_anim_t * value, lv_style_selector_t selector);

/**
 * Animation duration in milliseconds. Its meaning is widget specific. E.g. blink time
 * of the cursor on the Text Area or scroll time of a roller. See Widgets'
 * documentation to learn more.
 * Default: 0, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_anim_duration(lv_obj_t * obj, uint32_t value, lv_style_selector_t selector);

/**
 * An initialized ``lv_style_transition_dsc_t`` to describe a transition.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Pointer to transition descriptor
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_transition(lv_obj_t * obj, const lv_style_transition_dsc_t * value, lv_style_selector_t selector);

/**
 * Describes how to blend the colors to the background. Possible values are
 * `LV_BLEND_MODE_NORMAL/ADDITIVE/SUBTRACTIVE/MULTIPLY/DIFFERENCE`.
 * Default: `LV_BLEND_MODE_NORMAL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_blend_mode(lv_obj_t * obj, lv_blend_mode_t value, lv_style_selector_t selector);

/**
 * Set layout of Widget. Children will be repositioned and resized according to
 * policies set for the layout. For possible values see documentation of the layouts.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_layout(lv_obj_t * obj, uint16_t value, lv_style_selector_t selector);

/**
 * Set base direction of Widget. Possible values are `LV_BIDI_DIR_LTR/RTL/AUTO`.
 * Default: `LV_BASE_DIR_AUTO`, inherited: Yes, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_base_dir(lv_obj_t * obj, lv_base_dir_t value, lv_style_selector_t selector);

/**
 * If set, a layer will be created for the widget and the layer will be masked with
 * this A8 bitmap mask.
 * Default: `NULL`, inherited: No, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Pointer to A8 bitmap mask
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_bitmap_mask_src(lv_obj_t * obj, const void * value, lv_style_selector_t selector);

/**
 * Adjust sensitivity for rotary encoders in 1/256 unit. It means, 128: slow down the
 * rotary to half, 512: speeds up to double, 256: no change.
 * Default: `256`, inherited: Yes, layout: No, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_rotary_sensitivity(lv_obj_t * obj, uint32_t value, lv_style_selector_t selector);

#if LV_USE_FLEX
/**
 * Defines in which direction the flex layout should arrange the children.
 * Default: `LV_FLEX_FLOW_NONE`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_flex_flow(lv_obj_t * obj, lv_flex_flow_t value, lv_style_selector_t selector);

/**
 * Defines how to align the children in the direction of flex flow.
 * Default: `LV_FLEX_ALIGN_NONE`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_flex_main_place(lv_obj_t * obj, lv_flex_align_t value, lv_style_selector_t selector);

/**
 * Defines how to align the children perpendicular to the direction of flex flow.
 * Default: `LV_FLEX_ALIGN_NONE`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_flex_cross_place(lv_obj_t * obj, lv_flex_align_t value, lv_style_selector_t selector);

/**
 * Defines how to align the tracks of the flow.
 * Default: `LV_FLEX_ALIGN_NONE`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_flex_track_place(lv_obj_t * obj, lv_flex_align_t value, lv_style_selector_t selector);

/**
 * Defines how much space to take proportionally from the free space of the Widget's track.
 * Default: `0`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_flex_grow(lv_obj_t * obj, uint8_t value, lv_style_selector_t selector);

#endif /* LV_USE_FLEX */

#if LV_USE_GRID
/**
 * An array to describe the columns of the grid. Should be LV_GRID_TEMPLATE_LAST terminated.
 * Default: `NULL`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Pointer to grid-column descriptor array
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_grid_column_dsc_array(lv_obj_t * obj, const int32_t * value, lv_style_selector_t selector);

/**
 * Defines how to distribute the columns.
 * Default: `LV_GRID_ALIGN_START`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_grid_column_align(lv_obj_t * obj, lv_grid_align_t value, lv_style_selector_t selector);

/**
 * An array to describe the rows of the grid. Should be LV_GRID_TEMPLATE_LAST terminated.
 * Default: `NULL`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Pointer to grid-row descriptor array
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_grid_row_dsc_array(lv_obj_t * obj, const int32_t * value, lv_style_selector_t selector);

/**
 * Defines how to distribute the rows.
 * Default: `LV_GRID_ALIGN_START`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_grid_row_align(lv_obj_t * obj, lv_grid_align_t value, lv_style_selector_t selector);

/**
 * Set column in which Widget should be placed.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_grid_cell_column_pos(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set how to align Widget horizontally.
 * Default: `LV_GRID_ALIGN_START`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_grid_cell_x_align(lv_obj_t * obj, lv_grid_align_t value, lv_style_selector_t selector);

/**
 * Set how many columns Widget should span. Needs to be >= 1.
 * Default: 1, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_grid_cell_column_span(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set row in which Widget should be placed.
 * Default: 0, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_grid_cell_row_pos(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

/**
 * Set how to align Widget vertically.
 * Default: `LV_GRID_ALIGN_START`, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_grid_cell_y_align(lv_obj_t * obj, lv_grid_align_t value, lv_style_selector_t selector);

/**
 * Set how many rows Widget should span. Needs to be >= 1.
 * Default: 1, inherited: No, layout: Yes, ext. draw: No.
 * @param  obj        Pointer to Widget
 * @param  value      Value to submit
 * @param  selector   A joint type for `lv_part_t` and `lv_state_t`. Example values:
 *                        - `0`: means `LV_PART_MAIN | LV_STATE_DEFAULT`
 *                        - `LV_STATE_PRESSED`
 *                        - `LV_PART_KNOB`
 *                        - `LV_PART_KNOB | LV_STATE_PRESSED | LV_STATE_CHECKED`
 */
void lv_obj_set_style_grid_cell_row_span(lv_obj_t * obj, int32_t value, lv_style_selector_t selector);

#endif /* LV_USE_GRID */


#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* LV_OBJ_STYLE_GEN_H */
