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