mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	[lvgl] Post-process size arguments in meter config (#9466)
Co-authored-by: clydebarrow <2366188+clydebarrow@users.noreply.github.com>
This commit is contained in:
		| @@ -29,9 +29,9 @@ from ..defines import ( | ||||
| ) | ||||
| from ..helpers import add_lv_use, lvgl_components_required | ||||
| from ..lv_validation import ( | ||||
|     angle, | ||||
|     get_end_value, | ||||
|     get_start_value, | ||||
|     lv_angle, | ||||
|     lv_bool, | ||||
|     lv_color, | ||||
|     lv_float, | ||||
| @@ -162,7 +162,7 @@ SCALE_SCHEMA = cv.Schema( | ||||
|         cv.Optional(CONF_RANGE_FROM, default=0.0): cv.float_, | ||||
|         cv.Optional(CONF_RANGE_TO, default=100.0): cv.float_, | ||||
|         cv.Optional(CONF_ANGLE_RANGE, default=270): cv.int_range(0, 360), | ||||
|         cv.Optional(CONF_ROTATION): angle, | ||||
|         cv.Optional(CONF_ROTATION): lv_angle, | ||||
|         cv.Optional(CONF_INDICATORS): cv.ensure_list(INDICATOR_SCHEMA), | ||||
|     } | ||||
| ) | ||||
| @@ -187,7 +187,7 @@ class MeterType(WidgetType): | ||||
|         for scale_conf in config.get(CONF_SCALES, ()): | ||||
|             rotation = 90 + (360 - scale_conf[CONF_ANGLE_RANGE]) / 2 | ||||
|             if CONF_ROTATION in scale_conf: | ||||
|                 rotation = scale_conf[CONF_ROTATION] // 10 | ||||
|                 rotation = await lv_angle.process(scale_conf[CONF_ROTATION]) | ||||
|             with LocalVariable( | ||||
|                 "meter_var", "lv_meter_scale_t", lv_expr.meter_add_scale(var) | ||||
|             ) as meter_var: | ||||
| @@ -205,21 +205,20 @@ class MeterType(WidgetType): | ||||
|                         var, | ||||
|                         meter_var, | ||||
|                         ticks[CONF_COUNT], | ||||
|                         ticks[CONF_WIDTH], | ||||
|                         ticks[CONF_LENGTH], | ||||
|                         await size.process(ticks[CONF_WIDTH]), | ||||
|                         await size.process(ticks[CONF_LENGTH]), | ||||
|                         color, | ||||
|                     ) | ||||
|                     if CONF_MAJOR in ticks: | ||||
|                         major = ticks[CONF_MAJOR] | ||||
|                         color = await lv_color.process(major[CONF_COLOR]) | ||||
|                         lv.meter_set_scale_major_ticks( | ||||
|                             var, | ||||
|                             meter_var, | ||||
|                             major[CONF_STRIDE], | ||||
|                             major[CONF_WIDTH], | ||||
|                             major[CONF_LENGTH], | ||||
|                             color, | ||||
|                             major[CONF_LABEL_GAP], | ||||
|                             await size.process(major[CONF_WIDTH]), | ||||
|                             await size.process(major[CONF_LENGTH]), | ||||
|                             await lv_color.process(major[CONF_COLOR]), | ||||
|                             await size.process(major[CONF_LABEL_GAP]), | ||||
|                         ) | ||||
|                 for indicator in scale_conf.get(CONF_INDICATORS, ()): | ||||
|                     (t, v) = next(iter(indicator.items())) | ||||
| @@ -233,7 +232,11 @@ class MeterType(WidgetType): | ||||
|                         lv_assign( | ||||
|                             ivar, | ||||
|                             lv_expr.meter_add_needle_line( | ||||
|                                 var, meter_var, v[CONF_WIDTH], color, v[CONF_R_MOD] | ||||
|                                 var, | ||||
|                                 meter_var, | ||||
|                                 await size.process(v[CONF_WIDTH]), | ||||
|                                 color, | ||||
|                                 await size.process(v[CONF_R_MOD]), | ||||
|                             ), | ||||
|                         ) | ||||
|                     if t == CONF_ARC: | ||||
| @@ -241,7 +244,11 @@ class MeterType(WidgetType): | ||||
|                         lv_assign( | ||||
|                             ivar, | ||||
|                             lv_expr.meter_add_arc( | ||||
|                                 var, meter_var, v[CONF_WIDTH], color, v[CONF_R_MOD] | ||||
|                                 var, | ||||
|                                 meter_var, | ||||
|                                 await size.process(v[CONF_WIDTH]), | ||||
|                                 color, | ||||
|                                 await size.process(v[CONF_R_MOD]), | ||||
|                             ), | ||||
|                         ) | ||||
|                     if t == CONF_TICK_STYLE: | ||||
| @@ -257,7 +264,7 @@ class MeterType(WidgetType): | ||||
|                                 color_start, | ||||
|                                 color_end, | ||||
|                                 v[CONF_LOCAL], | ||||
|                                 v[CONF_WIDTH], | ||||
|                                 size.process(v[CONF_WIDTH]), | ||||
|                             ), | ||||
|                         ) | ||||
|                     if t == CONF_IMAGE: | ||||
|   | ||||
| @@ -919,21 +919,21 @@ lvgl: | ||||
|                       text_color: 0xFFFFFF | ||||
|                       scales: | ||||
|                         - ticks: | ||||
|                             width: 1 | ||||
|                             width: !lambda return 1; | ||||
|                             count: 61 | ||||
|                             length: 20 | ||||
|                             length: 20% | ||||
|                             color: 0xFFFFFF | ||||
|                           range_from: 0 | ||||
|                           range_to: 60 | ||||
|                           angle_range: 360 | ||||
|                           rotation: 270 | ||||
|                           rotation: !lambda return 2700; | ||||
|                           indicators: | ||||
|                             - line: | ||||
|                                 opa: 50% | ||||
|                                 id: minute_hand | ||||
|                                 color: 0xFF0000 | ||||
|                                 r_mod: -1 | ||||
|                                 width: 3 | ||||
|                                 r_mod: !lambda return -1; | ||||
|                                 width: !lambda return 3; | ||||
|                         - | ||||
|                           angle_range: 330 | ||||
|                           rotation: 300 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user