121 lines
2.9 KiB
C
121 lines
2.9 KiB
C
/**
|
|
*@file lv_theme.h
|
|
*
|
|
*/
|
|
|
|
#ifndef LV_THEME_H
|
|
#define LV_THEME_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*********************
|
|
* INCLUDES
|
|
*********************/
|
|
#include "../core/lv_obj.h"
|
|
|
|
/*********************
|
|
* DEFINES
|
|
*********************/
|
|
|
|
/**********************
|
|
* TYPEDEFS
|
|
**********************/
|
|
|
|
struct _lv_theme_t;
|
|
struct _lv_disp_t;
|
|
|
|
typedef void (*lv_theme_apply_cb_t)(struct _lv_theme_t *, lv_obj_t *);
|
|
|
|
typedef struct _lv_theme_t {
|
|
lv_theme_apply_cb_t apply_cb;
|
|
struct _lv_theme_t * parent; /**< Apply the current theme's style on top of this theme.*/
|
|
void * user_data;
|
|
struct _lv_disp_t * disp;
|
|
lv_color_t color_primary;
|
|
lv_color_t color_secondary;
|
|
const lv_font_t * font_small;
|
|
const lv_font_t * font_normal;
|
|
const lv_font_t * font_large;
|
|
uint32_t flags; /*Any custom flag used by the theme*/
|
|
} lv_theme_t;
|
|
|
|
/**********************
|
|
* GLOBAL PROTOTYPES
|
|
**********************/
|
|
|
|
/**
|
|
* Get the theme assigned to the display of the object
|
|
* @param obj pointer to a theme object
|
|
* @return the theme of the object's display (can be NULL)
|
|
*/
|
|
lv_theme_t * lv_theme_get_from_obj(lv_obj_t * obj);
|
|
|
|
/**
|
|
* Apply the active theme on an object
|
|
* @param obj pointer to an object
|
|
*/
|
|
void lv_theme_apply(lv_obj_t * obj);
|
|
|
|
/**
|
|
* Set a base theme for a theme.
|
|
* The styles from the base them will be added before the styles of the current theme.
|
|
* Arbitrary long chain of themes can be created by setting base themes.
|
|
* @param new_theme pointer to theme which base should be set
|
|
* @param parent pointer to the base theme
|
|
*/
|
|
void lv_theme_set_parent(lv_theme_t * new_theme, lv_theme_t * parent);
|
|
|
|
/**
|
|
* Set an apply callback for a theme.
|
|
* The apply callback is used to add styles to different objects
|
|
* @param theme pointer to theme which callback should be set
|
|
* @param apply_cb pointer to the callback
|
|
*/
|
|
void lv_theme_set_apply_cb(lv_theme_t * theme, lv_theme_apply_cb_t apply_cb);
|
|
|
|
/**
|
|
* Get the small font of the theme
|
|
* @param obj pointer to an object
|
|
* @return pointer to the font
|
|
*/
|
|
const lv_font_t * lv_theme_get_font_small(lv_obj_t * obj);
|
|
/**
|
|
* Get the normal font of the theme
|
|
* @param obj pointer to an object
|
|
* @return pointer to the font
|
|
*/
|
|
const lv_font_t * lv_theme_get_font_normal(lv_obj_t * obj);
|
|
|
|
/**
|
|
* Get the subtitle font of the theme
|
|
* @param obj pointer to an object
|
|
* @return pointer to the font
|
|
*/
|
|
const lv_font_t * lv_theme_get_font_large(lv_obj_t * obj);
|
|
|
|
/**
|
|
* Get the primary color of the theme
|
|
* @param obj pointer to an object
|
|
* @return the color
|
|
*/
|
|
lv_color_t lv_theme_get_color_primary(lv_obj_t * obj);
|
|
|
|
/**
|
|
* Get the secondary color of the theme
|
|
* @param obj pointer to an object
|
|
* @return the color
|
|
*/
|
|
lv_color_t lv_theme_get_color_secondary(lv_obj_t * obj);
|
|
|
|
/**********************
|
|
* MACROS
|
|
**********************/
|
|
|
|
#ifdef __cplusplus
|
|
} /*extern "C"*/
|
|
#endif
|
|
|
|
#endif /*LV_THEME_H*/
|