[lvgl] Fix image property processing (#8691)

This commit is contained in:
Clyde Stubbs 2025-05-05 10:31:22 +10:00 committed by Jesse Hills
parent 1294e8ccd5
commit d7c615ec43
No known key found for this signature in database
GPG Key ID: BEAAE804EFD8E83A
2 changed files with 21 additions and 8 deletions

View File

@ -10,7 +10,7 @@ from ..defines import (
CONF_ZOOM, CONF_ZOOM,
LvConstant, LvConstant,
) )
from ..lv_validation import angle, lv_bool, lv_image, size, zoom from ..lv_validation import lv_angle, lv_bool, lv_image, size, zoom
from ..lvcode import lv from ..lvcode import lv
from ..types import lv_img_t from ..types import lv_img_t
from . import Widget, WidgetType from . import Widget, WidgetType
@ -22,7 +22,7 @@ BASE_IMG_SCHEMA = cv.Schema(
{ {
cv.Optional(CONF_PIVOT_X): size, cv.Optional(CONF_PIVOT_X): size,
cv.Optional(CONF_PIVOT_Y): size, cv.Optional(CONF_PIVOT_Y): size,
cv.Optional(CONF_ANGLE): angle, cv.Optional(CONF_ANGLE): lv_angle,
cv.Optional(CONF_ZOOM): zoom, cv.Optional(CONF_ZOOM): zoom,
cv.Optional(CONF_OFFSET_X): size, cv.Optional(CONF_OFFSET_X): size,
cv.Optional(CONF_OFFSET_Y): size, cv.Optional(CONF_OFFSET_Y): size,
@ -66,17 +66,19 @@ class ImgType(WidgetType):
if (pivot_x := config.get(CONF_PIVOT_X)) and ( if (pivot_x := config.get(CONF_PIVOT_X)) and (
pivot_y := config.get(CONF_PIVOT_Y) pivot_y := config.get(CONF_PIVOT_Y)
): ):
lv.img_set_pivot(w.obj, pivot_x, pivot_y) lv.img_set_pivot(
w.obj, await size.process(pivot_x), await size.process(pivot_y)
)
if (cf_angle := config.get(CONF_ANGLE)) is not None: if (cf_angle := config.get(CONF_ANGLE)) is not None:
lv.img_set_angle(w.obj, cf_angle) lv.img_set_angle(w.obj, await lv_angle.process(cf_angle))
if (img_zoom := config.get(CONF_ZOOM)) is not None: if (img_zoom := config.get(CONF_ZOOM)) is not None:
lv.img_set_zoom(w.obj, img_zoom) lv.img_set_zoom(w.obj, await zoom.process(img_zoom))
if (offset := config.get(CONF_OFFSET_X)) is not None: if (offset := config.get(CONF_OFFSET_X)) is not None:
lv.img_set_offset_x(w.obj, offset) lv.img_set_offset_x(w.obj, await size.process(offset))
if (offset := config.get(CONF_OFFSET_Y)) is not None: if (offset := config.get(CONF_OFFSET_Y)) is not None:
lv.img_set_offset_y(w.obj, offset) lv.img_set_offset_y(w.obj, await size.process(offset))
if CONF_ANTIALIAS in config: if CONF_ANTIALIAS in config:
lv.img_set_antialias(w.obj, config[CONF_ANTIALIAS]) lv.img_set_antialias(w.obj, await lv_bool.process(config[CONF_ANTIALIAS]))
if mode := config.get(CONF_MODE): if mode := config.get(CONF_MODE):
await w.set_property("size_mode", mode) await w.set_property("size_mode", mode)

View File

@ -134,6 +134,15 @@ lvgl:
id: style_test id: style_test
bg_color: blue bg_color: blue
bg_opa: !lambda return 0.5; bg_opa: !lambda return 0.5;
- lvgl.image.update:
id: lv_image
zoom: !lambda return 512;
angle: !lambda return 100;
pivot_x: !lambda return 20;
pivot_y: !lambda return 20;
offset_x: !lambda return 20;
offset_y: !lambda return 20;
antialias: !lambda return true;
- id: simple_msgbox - id: simple_msgbox
title: Simple title: Simple
@ -486,6 +495,8 @@ lvgl:
align: top_left align: top_left
y: "50" y: "50"
mode: real mode: real
zoom: 2.0
angle: 45
- tileview: - tileview:
id: tileview_id id: tileview_id
scrollbar_mode: active scrollbar_mode: active