mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +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 | #ifdef USE_BINARY_SENSOR | ||||||
| #include "esphome/components/binary_sensor/binary_sensor.h" | #include "esphome/components/binary_sensor/binary_sensor.h" | ||||||
| #endif  // USE_BINARY_SENSOR | #endif  // USE_BINARY_SENSOR | ||||||
|  | #ifdef USE_LVGL_IMAGE | ||||||
|  | #include "esphome/components/image/image.h" | ||||||
|  | #endif  // USE_LVGL_IMAGE | ||||||
| #ifdef USE_LVGL_ROTARY_ENCODER | #ifdef USE_LVGL_ROTARY_ENCODER | ||||||
| #include "esphome/components/rotary_encoder/rotary_encoder.h" | #include "esphome/components/rotary_encoder/rotary_encoder.h" | ||||||
| #endif  // USE_LVGL_ROTARY_ENCODER | #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; | static const display::ColorBitness LV_BITNESS = display::ColorBitness::COLOR_BITNESS_332; | ||||||
| #endif  // LV_COLOR_DEPTH | #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 | // Parent class for things that wrap an LVGL object | ||||||
| class LvCompound { | class LvCompound { | ||||||
|  public: |  public: | ||||||
|   | |||||||
| @@ -127,6 +127,11 @@ binary_sensor: | |||||||
|   - platform: lvgl |   - platform: lvgl | ||||||
|     name: LVGL checkbox |     name: LVGL checkbox | ||||||
|     widget: checkbox_id |     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: | wifi: | ||||||
|   ssid: SSID |   ssid: SSID | ||||||
|   | |||||||
| @@ -419,6 +419,7 @@ lvgl: | |||||||
|             spin_time: 2s |             spin_time: 2s | ||||||
|             align: left_mid |             align: left_mid | ||||||
|         - image: |         - image: | ||||||
|  |             id: lv_image | ||||||
|             src: cat_image |             src: cat_image | ||||||
|             align: top_left |             align: top_left | ||||||
|             y: 50 |             y: 50 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user