4#ifdef USE_BINARY_SENSOR
10#ifdef USE_LVGL_ROTARY_ENCODER
31#ifdef USE_LVGL_TOUCHSCREEN
35#if defined(USE_LVGL_BUTTONMATRIX) || defined(USE_LVGL_KEYBOARD)
45#if LV_COLOR_DEPTH == 16
47#elif LV_COLOR_DEPTH == 32
68 lv_draw_img_dsc_t *dsc) {
75 lv_coord_t pivot_x, lv_coord_t pivot_y) {
80#ifdef USE_LVGL_ANIMIMG
82 auto *dsc =
static_cast<std::vector<lv_img_dsc_t *> *
>(lv_obj_get_user_data(img));
85 dsc =
new std::vector<lv_img_dsc_t *>(images.size());
86 lv_obj_set_user_data(img, dsc);
89 for (
auto &image : images) {
90 dsc->push_back(image->get_lv_img_dsc());
101 virtual void set_obj(lv_obj_t *lv_obj) { this->
obj = lv_obj; }
113 this->
obj = lv_obj_create(
nullptr);
155#ifdef USE_LVGL_ANIMIMG
160 constexpr static const char *
const TAG =
"lvgl";
164 bool resume_on_input);
165 static void static_flush_cb(lv_disp_drv_t *disp_drv,
const lv_area_t *area, lv_color_t *color_p);
168 void setup()
override;
170 void loop()
override;
176 bool is_idle(uint32_t idle_ms) {
return lv_disp_get_inactive_time(this->
disp_) > idle_ms; }
198 lv_event_code_t event3);
200 void show_page(
size_t index, lv_scr_load_anim_t anim, uint32_t time);
208 if (mark !=
nullptr) {
209 lv_group_focus_obj(mark);
219 void draw_buffer_(
const lv_area_t *area, lv_color_t *ptr);
220 void flush_cb_(lv_disp_drv_t *disp_drv,
const lv_area_t *area, lv_color_t *color_p);
277#ifdef USE_LVGL_TOUCHSCREEN
295#ifdef USE_LVGL_KEY_LISTENER
300#ifdef USE_BINARY_SENSOR
306#ifdef USE_LVGL_ROTARY_ENCODER
313 if (!this->
parent_->is_paused()) {
316 }
else if (!pressed) {
323 if (!this->
parent_->is_paused()) {
346 this->
points_ = std::move(points);
347 lv_line_set_points(this->
obj, this->
points_.data(), this->points_.size());
354#if defined(USE_LVGL_DROPDOWN) || defined(LV_USE_ROLLER)
369#ifdef USE_LVGL_DROPDOWN
373 void set_selected_index(
size_t index, lv_anim_enable_t anim)
override { lv_dropdown_set_selected(this->
obj, index); }
380#ifdef USE_LVGL_ROLLER
385 lv_roller_set_selected(this->
obj, index, anim);
391 lv_roller_mode_t
mode_{LV_ROLLER_MODE_NORMAL};
396#ifdef USE_LVGL_BUTTONMATRIX
399 void set_obj(lv_obj_t *lv_obj)
override;
408#ifdef USE_LVGL_KEYBOARD
411 void set_obj(lv_obj_t *lv_obj)
override;
BedjetMode mode
BedJet operating mode.
Base class for all automation conditions.
Helper class to easily give an object a parent of type T.
This class simplifies creating components that periodically check a state.
Base class for all binary_sensor-type classes.
void add_on_state_callback(std::function< void(bool)> &&callback)
Add a callback to be notified of state changes.
lv_img_dsc_t * get_lv_img_dsc()
interface for components that provide keypresses
const font::GlyphData * get_glyph_data(uint32_t unicode_letter)
const lv_font_t * get_lv_font()
FontEngine(font::Font *esp_font)
const font::GlyphData * last_data_
IdleTrigger(LvglComponent *parent, TemplatableValue< uint32_t > timeout)
TemplatableValue< uint32_t > timeout_
void add_button(binary_sensor::BinarySensor *button, lv_key_t key)
lv_indev_drv_t * get_drv()
LVEncoderListener(lv_indev_type_t type, uint16_t lpt, uint16_t lprt)
void event(int key, bool pressed)
void set_sensor(rotary_encoder::RotaryEncoderSensor *sensor)
void set_count(int32_t count)
lv_indev_drv_t * get_drv()
LVTouchListener(uint16_t long_press_time, uint16_t long_press_repeat_time, LvglComponent *parent)
touchscreen::TouchPoint touch_point_
void update(const touchscreen::TouchPoints_t &tpoints) override
virtual ~LvCompound()=default
virtual void set_obj(lv_obj_t *lv_obj)
size_t get_selected_index() override
void set_option_string(const char *options) override
void set_selected_index(size_t index, lv_anim_enable_t anim) override
void set_obj(lv_obj_t *lv_obj) override
void set_points(std::vector< lv_point_t > points)
std::vector< lv_point_t > points_
std::vector< lv_point_t > get_points()
void set_mode(lv_roller_mode_t mode)
void set_option_string(const char *options) override
void set_selected_index(size_t index, lv_anim_enable_t anim) override
size_t get_selected_index() override
std::vector< std::string > get_options()
void set_selected_text(const std::string &text, lv_anim_enable_t anim)
void set_options(std::vector< std::string > options)
std::string get_selected_text()
std::vector< std::string > options_
virtual void set_selected_index(size_t index, lv_anim_enable_t anim)=0
virtual size_t get_selected_index()=0
virtual void set_option_string(const char *options)=0
LvglAction(std::function< void(LvglComponent *)> &&lamb)
std::function< void(LvglComponent *)> action_
void play(Ts... x) override
Component for rendering LVGL.
void set_page_wrap(bool wrap)
void set_paused(bool paused, bool show_snow)
size_t get_current_page() const
static void static_flush_cb(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
std::vector< LvPageType * > pages_
static void add_event_cb(lv_obj_t *obj, event_callback_t callback, lv_event_code_t event)
void show_next_page(lv_scr_load_anim_t anim, uint32_t time)
void set_focus_mark(lv_group_t *group)
void dump_config() override
CallbackManager< void(uint32_t)> idle_callbacks_
void add_on_idle_callback(std::function< void(uint32_t)> &&callback)
lv_disp_draw_buf_t draw_buf_
display::DisplayRotation rotation
void show_page(size_t index, lv_scr_load_anim_t anim, uint32_t time)
void show_prev_page(lv_scr_load_anim_t anim, uint32_t time)
CallbackManager< void(bool)> pause_callbacks_
std::vector< display::Display * > displays_
static void esphome_lvgl_init()
Initialize the LVGL library and register custom events.
void flush_cb_(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
LvglComponent(std::vector< display::Display * > displays, float buffer_frac, bool full_refresh, int draw_rounding, bool resume_on_input)
void add_page(LvPageType *page)
float get_setup_priority() const override
std::map< lv_group_t *, lv_obj_t * > focus_marks_
void add_on_pause_callback(std::function< void(bool)> &&callback)
void draw_buffer_(const lv_area_t *area, lv_color_t *ptr)
void restore_focus_mark(lv_group_t *group)
bool is_idle(uint32_t idle_ms)
LvglCondition(std::function< bool(Tc *)> &&condition_lambda)
std::function< bool(Tc *)> condition_lambda_
bool check(Ts... x) override
void play(Ts... x) override
std::function< void(Ts...)> lamb_
ObjUpdateAction(std::function< void(Ts...)> &&lamb)
PauseTrigger(LvglComponent *parent, TemplatableValue< bool > paused)
TemplatableValue< bool > paused_
void register_listener(std::function< void(uint32_t)> listener)
@ DISPLAY_ROTATION_0_DEGREES
lv_meter_indicator_t * lv_meter_add_needle_img(lv_obj_t *obj, lv_meter_scale_t *scale, esphome::image::Image *src, lv_coord_t pivot_x, lv_coord_t pivot_y)
void lv_animimg_stop(lv_obj_t *obj)
std::string lv_event_code_name_for(uint8_t event_code)
std::function< void(float)> set_value_lambda_t
void lv_canvas_draw_img(lv_obj_t *canvas, lv_coord_t x, lv_coord_t y, image::Image *image, lv_draw_img_dsc_t *dsc)
void lv_disp_set_bg_image(lv_disp_t *disp, esphome::image::Image *image)
std::function< void(lv_obj_t *)> LvLambdaType
void lv_animimg_set_src(lv_obj_t *img, std::vector< image::Image * > images)
void lv_obj_set_style_bg_img_src(lv_obj_t *obj, esphome::image::Image *image, lv_style_selector_t selector)
lv_event_code_t lv_update_event
void lv_img_set_src(lv_obj_t *obj, esphome::image::Image *image)
std::function< const char *()> text_lambda_t
void(_lv_event_t *) event_callback_t
lv_event_code_t lv_api_event
const float PROCESSOR
For components that use data from sensors like displays.
std::vector< TouchPoint > TouchPoints_t
Providing packet encoding functions for exchanging data with a remote host.