mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	[lvgl] Allow esphome::Image in lambda to update image source directly (#7624)
This commit is contained in:
		| @@ -4,6 +4,9 @@ | ||||
| #ifdef USE_BINARY_SENSOR | ||||
| #include "esphome/components/binary_sensor/binary_sensor.h" | ||||
| #endif  // USE_BINARY_SENSOR | ||||
| #ifdef USE_LVGL_IMAGE | ||||
| #include "esphome/components/image/image.h" | ||||
| #endif  // USE_LVGL_IMAGE | ||||
| #ifdef USE_LVGL_ROTARY_ENCODER | ||||
| #include "esphome/components/rotary_encoder/rotary_encoder.h" | ||||
| #endif  // USE_LVGL_ROTARY_ENCODER | ||||
| @@ -47,6 +50,14 @@ static const display::ColorBitness LV_BITNESS = display::ColorBitness::COLOR_BIT | ||||
| static const display::ColorBitness LV_BITNESS = display::ColorBitness::COLOR_BITNESS_332; | ||||
| #endif  // LV_COLOR_DEPTH | ||||
|  | ||||
| #ifdef USE_LVGL_IMAGE | ||||
| // Shortcut / overload, so that the source of an image can easily be updated | ||||
| // from within a lambda. | ||||
| inline void lv_img_set_src(lv_obj_t *obj, esphome::image::Image *image) { | ||||
|   lv_img_set_src(obj, image->get_lv_img_dsc()); | ||||
| } | ||||
| #endif  // USE_LVGL_IMAGE | ||||
|  | ||||
| // Parent class for things that wrap an LVGL object | ||||
| class LvCompound { | ||||
|  public: | ||||
|   | ||||
| @@ -127,6 +127,11 @@ binary_sensor: | ||||
|   - platform: lvgl | ||||
|     name: LVGL checkbox | ||||
|     widget: checkbox_id | ||||
|     on_state: | ||||
|       then: | ||||
|         - lvgl.image.update: | ||||
|             id: lv_image | ||||
|             src: !lambda if (x) return id(cat_image); else return id(dog_image); | ||||
|  | ||||
| wifi: | ||||
|   ssid: SSID | ||||
|   | ||||
| @@ -419,6 +419,7 @@ lvgl: | ||||
|             spin_time: 2s | ||||
|             align: left_mid | ||||
|         - image: | ||||
|             id: lv_image | ||||
|             src: cat_image | ||||
|             align: top_left | ||||
|             y: 50 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user