4#ifdef USE_BINARY_SENSOR
10#ifdef USE_LVGL_ROTARY_ENCODER
29#ifdef USE_ESP32_VARIANT_ESP32P4
30#include "driver/ppa.h"
40#if defined(USE_LVGL_BUTTONMATRIX) || defined(USE_LVGL_KEYBOARD)
46#if LV_COLOR_DEPTH == 16
49#if LV_COLOR_DEPTH == 32
60 lv_color_t color_end,
int width,
bool local);
62#if LV_COLOR_DEPTH == 16
64#elif LV_COLOR_DEPTH == 32
70#if defined(USE_FONT) && defined(USE_LVGL_FONT)
78#if defined(USE_LVGL_IMAGE) && defined(USE_IMAGE)
92#ifdef USE_LVGL_ANIMIMG
94 auto *dsc =
static_cast<std::vector<lv_image_dsc_t *> *
>(lv_obj_get_user_data(img));
97 dsc =
new std::vector<lv_image_dsc_t *>(images.size());
98 lv_obj_set_user_data(img, dsc);
101 for (
auto &image : images) {
102 dsc->push_back(image->get_lv_image_dsc());
116 virtual void set_obj(lv_obj_t *lv_obj) { this->
obj = lv_obj; }
128 this->
obj = lv_obj_create(
nullptr);
161#ifdef USE_LVGL_ANIMIMG
171 constexpr static const char *
const TAG =
"lvgl";
175 bool resume_on_input,
bool update_when_display_idle,
RotationType rotation_type);
176 static void static_flush_cb(lv_display_t *disp_drv,
const lv_area_t *area, uint8_t *color_p);
179 void setup()
override;
181 void loop()
override;
210 lv_event_code_t event3);
222 if (mark !=
nullptr) {
223 lv_group_focus_obj(mark);
237 uint16_t
get_width()
const {
return lv_display_get_horizontal_resolution(this->
disp_); }
238 uint16_t
get_height()
const {
return lv_display_get_vertical_resolution(this->
disp_); }
249#ifdef USE_ESP32_VARIANT_ESP32P4
253 void flush_cb_(lv_display_t *disp_drv,
const lv_area_t *area, uint8_t *color_p);
281#ifdef USE_ESP32_VARIANT_ESP32P4
313#ifdef USE_LVGL_TOUCHSCREEN
337 void set_obj(lv_obj_t *lv_obj)
override;
342 void update_length_();
345 lv_point_precise_t points_[2]{};
349#ifdef USE_LVGL_KEY_LISTENER
354#ifdef USE_BINARY_SENSOR
360#ifdef USE_LVGL_ROTARY_ENCODER
367 if (!this->
parent_->is_paused()) {
370 }
else if (!pressed) {
377 if (!this->
parent_->is_paused()) {
399 this->
points_ = std::move(points);
400 lv_line_set_points(this->
obj, this->
points_.
begin(), this->points_.size());
407#if defined(USE_LVGL_DROPDOWN) || defined(LV_USE_ROLLER)
422#ifdef USE_LVGL_DROPDOWN
426 void set_selected_index(
size_t index, lv_anim_enable_t anim)
override { lv_dropdown_set_selected(this->
obj, index); }
433#ifdef USE_LVGL_ROLLER
438 lv_roller_set_selected(this->
obj, index, anim);
444 lv_roller_mode_t
mode_{LV_ROLLER_MODE_NORMAL};
449#ifdef USE_LVGL_BUTTONMATRIX
452 void set_obj(lv_obj_t *lv_obj)
override;
461#ifdef USE_LVGL_KEYBOARD
464 void set_obj(lv_obj_t *lv_obj)
override;
BedjetMode mode
BedJet operating mode.
Base class for all automation conditions.
Fixed-capacity vector - allocates once at runtime, never reallocates This avoids std::vector template...
Helper class to easily give an object a parent of type T.
This class simplifies creating components that periodically check a state.
void add_on_state_callback(F &&callback)
Function-pointer-only templatable storage (4 bytes on 32-bit).
void trigger(const Ts &...x) ESPHOME_ALWAYS_INLINE
Inform the parent automation that the event has triggered.
Base class for all binary_sensor-type classes.
const lv_font_t * get_lv_font() const
lv_image_dsc_t * get_lv_image_dsc()
interface for components that provide keypresses
TemplatableFn< uint32_t > timeout_
IdleTrigger(LvglComponent *parent, TemplatableFn< uint32_t > timeout)
void set_obj(lv_obj_t *lv_obj) override
void set_value(int value)
void add_button(binary_sensor::BinarySensor *button, lv_key_t key)
void event(int key, bool pressed)
void set_sensor(rotary_encoder::RotaryEncoderSensor *sensor)
LVEncoderListener(lv_indev_type_t type, uint16_t long_press_time, uint16_t long_press_repeat_time)
void set_count(int32_t count)
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
LvLambdaComponent(void(*callback)())
float get_setup_priority() const override
void set_points(FixedVector< lv_point_precise_t > points)
FixedVector< lv_point_precise_t > 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
const 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
void play(const Ts &...x) override
LvglAction(std::function< void(LvglComponent *)> &&lamb)
std::function< void(LvglComponent *)> action_
Component for rendering LVGL.
void set_page_wrap(bool wrap)
RotationType rotation_type_
void set_paused(bool paused, bool show_snow)
size_t get_current_page() const
void set_pause_trigger(Trigger<> *trigger)
display::DisplayRotation rotation_
Trigger * pause_callback_
void rotate_coordinates(int32_t &x, int32_t &y) const
Trigger * resume_callback_
std::vector< LvPageType * > pages_
void set_rotation(display::DisplayRotation rotation)
void set_resolution_() const
static void add_event_cb(lv_obj_t *obj, event_callback_t callback, lv_event_code_t event)
void set_focus_mark(lv_group_t *group)
bool ppa_rotate_(const lv_color_data *src, lv_color_data *dst, uint16_t width, uint16_t height, uint32_t height_rounded)
bool update_when_display_idle_
void set_draw_end_trigger(Trigger<> *trigger)
void dump_config() override
CallbackManager< void(uint32_t)> idle_callbacks_
lv_obj_t * get_screen_active()
void set_big_endian(bool big_endian)
void show_next_page(lv_screen_load_anim_t anim, uint32_t time)
Trigger * draw_start_callback_
Trigger * draw_end_callback_
void set_resume_trigger(Trigger<> *trigger)
uint16_t get_width() const
std::vector< display::Display * > displays_
lv_display_t * get_disp()
static void esphome_lvgl_init()
Initialize the LVGL library and register custom events.
void show_prev_page(lv_screen_load_anim_t anim, uint32_t time)
ppa_client_handle_t ppa_client_
LvglComponent(std::vector< display::Display * > displays, float buffer_frac, bool full_refresh, int draw_rounding, bool resume_on_input, bool update_when_display_idle, RotationType rotation_type)
static void render_start_cb(lv_event_t *event)
void add_on_idle_callback(F &&callback)
void add_page(LvPageType *page)
float get_setup_priority() const override
static void static_flush_cb(lv_display_t *disp_drv, const lv_area_t *area, uint8_t *color_p)
std::map< lv_group_t *, lv_obj_t * > focus_marks_
static void render_end_cb(lv_event_t *event)
void draw_buffer_(const lv_area_t *area, lv_color_data *ptr)
uint16_t get_height() const
void show_page(size_t index, lv_screen_load_anim_t anim, uint32_t time)
display::DisplayRotation get_rotation() const
void set_draw_start_trigger(Trigger<> *trigger)
void restore_focus_mark(lv_group_t *group)
void flush_cb_(lv_display_t *disp_drv, const lv_area_t *area, uint8_t *color_p)
LvglCondition(std::function< bool(Tc *)> &&condition_lambda)
bool check(const Ts &...x) override
std::function< bool(Tc *)> condition_lambda_
void play(const Ts &...x) override
std::function< void(Ts...)> lamb_
ObjUpdateAction(std::function< void(Ts...)> &&lamb)
void register_listener(F &&listener)
@ DISPLAY_ROTATION_0_DEGREES
void lv_obj_set_style_bitmap_mask_src(lv_obj_t *obj, image::Image *image, lv_style_selector_t selector)
int16_t lv_get_needle_angle_for_value(lv_obj_t *obj, int value)
void lv_style_set_text_font(lv_style_t *style, const font::Font *font)
void lv_animimg_stop(lv_obj_t *obj)
void(lv_event_t *) event_callback_t
void lv_animimg_set_src(lv_obj_t *img, std::vector< image::Image * > images)
void lv_image_set_src(lv_obj_t *obj, image::Image *image)
void lv_obj_set_style_text_font(lv_obj_t *obj, const font::Font *font, lv_style_selector_t part)
void lv_obj_set_style_bg_image_src(lv_obj_t *obj, image::Image *image, lv_style_selector_t selector)
lv_event_code_t lv_update_event
lv_obj_t * lv_container_create(lv_obj_t *parent)
std::string lv_event_code_name_for(lv_event_t *event)
void lv_scale_draw_event_cb(lv_event_t *e, int16_t range_start, int16_t range_end, lv_color_t color_start, lv_color_t color_end, int width, bool local)
Function to apply colors to ticks based on position.
lv_event_code_t lv_api_event
constexpr float PROCESSOR
For components that use data from sensors like displays.
std::vector< TouchPoint > TouchPoints_t