Skip to content

Commit fcf1060

Browse files
committed
1 parent bc8307d commit fcf1060

File tree

5 files changed

+30
-9
lines changed

5 files changed

+30
-9
lines changed

packages/eez-studio-types/index.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -628,8 +628,8 @@ export interface IWasmFlowRuntime {
628628
_lvglCreatePanel(parentObj: number, index: number, x: number, y: number, w: number, h: number): number;
629629
_lvglCreateUserWidget(parentObj: number, index: number, x: number, y: number, w: number, h: number): number;
630630

631-
_lvglCreateImage(parentObj: number, index: number, x: number, y: number, w: number, h: number, img_src: number, pivotX: number, pivotY: number, zoom: number, angle: number, innerAlign: number): number;
632-
_lvglSetImageSrc(parentObj: number, img_src: number, pivotX: number, pivotY: number, zoom: number, angle: number, innerAlign: number): void;
631+
_lvglCreateImage(parentObj: number, index: number, x: number, y: number, w: number, h: number, img_src: number, setPivot: boolean, pivotX: number, pivotY: number, zoom: number, angle: number, innerAlign: number): number;
632+
_lvglSetImageSrc(parentObj: number, img_src: number, setPivot: boolean, pivotX: number, pivotY: number, zoom: number, angle: number, innerAlign: number): void;
633633

634634
_lvglCreateLine(parentObj: number, index: number, x: number, y: number, w: number, h: number): number;
635635
_lvglCreateSlider(parentObj: number, index: number, x: number, y: number, w: number, h: number, min: number, max: number, mode: number, value: number, value_left: number): number;

packages/project-editor/flow/runtime/cpp/lvgl-runtime/common/src/studio_api.cpp

+8-4
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ EM_PORT_API(lv_obj_t *) lvglCreateUserWidget(lv_obj_t *parentObj, int32_t index,
128128
return obj;
129129
}
130130

131-
EM_PORT_API(lv_obj_t *) lvglCreateImage(lv_obj_t *parentObj, int32_t index, lv_coord_t x, lv_coord_t y, lv_coord_t w, lv_coord_t h, const void *img_src, lv_coord_t pivotX, lv_coord_t pivotY, uint16_t zoom, int16_t angle, int inner_align) {
131+
EM_PORT_API(lv_obj_t *) lvglCreateImage(lv_obj_t *parentObj, int32_t index, lv_coord_t x, lv_coord_t y, lv_coord_t w, lv_coord_t h, const void *img_src, bool setPivot, lv_coord_t pivotX, lv_coord_t pivotY, uint16_t zoom, int16_t angle, int inner_align) {
132132
lv_obj_t *obj = lv_img_create(parentObj);
133133
lv_obj_set_pos(obj, x, y);
134134
lv_obj_set_size(obj, w, h);
@@ -138,17 +138,21 @@ EM_PORT_API(lv_obj_t *) lvglCreateImage(lv_obj_t *parentObj, int32_t index, lv_c
138138
lv_image_set_inner_align(obj, (lv_image_align_t)inner_align);
139139
#endif
140140
}
141-
lv_img_set_pivot(obj, pivotX, pivotY);
141+
if (setPivot) {
142+
lv_img_set_pivot(obj, pivotX, pivotY);
143+
}
142144
lv_img_set_zoom(obj, zoom);
143145
lv_img_set_angle(obj, angle);
144146
lv_obj_update_layout(obj);
145147
setObjectIndex(obj, index);
146148
return obj;
147149
}
148150

149-
EM_PORT_API(void) lvglSetImageSrc(lv_obj_t *obj, const void *img_src, lv_coord_t pivotX, lv_coord_t pivotY, uint16_t zoom, int16_t angle, int inner_align) {
151+
EM_PORT_API(void) lvglSetImageSrc(lv_obj_t *obj, const void *img_src, bool setPivot, lv_coord_t pivotX, lv_coord_t pivotY, uint16_t zoom, int16_t angle, int inner_align) {
150152
lv_img_set_src(obj, img_src);
151-
lv_img_set_pivot(obj, pivotX, pivotY);
153+
if (setPivot) {
154+
lv_img_set_pivot(obj, pivotX, pivotY);
155+
}
152156
lv_img_set_zoom(obj, zoom);
153157
lv_img_set_angle(obj, angle);
154158
lv_obj_update_layout(obj);
Binary file not shown.
Binary file not shown.

packages/project-editor/lvgl/widgets/Image.tsx

+20-3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { LV_IMAGE_ALIGN } from "../lvgl-constants";
2424

2525
export class LVGLImageWidget extends LVGLWidget {
2626
image: string;
27+
setPivot: boolean;
2728
pivotX: number;
2829
pivotY: number;
2930
zoom: number;
@@ -57,17 +58,25 @@ export class LVGLImageWidget extends LVGLWidget {
5758
referencedObjectCollectionPath: "bitmaps",
5859
propertyGridGroup: specificGroup
5960
},
61+
{
62+
name: "setPivot",
63+
displayName: "Change pivot point (default is center)",
64+
type: PropertyType.Boolean,
65+
propertyGridGroup: specificGroup
66+
},
6067
{
6168
name: "pivotX",
6269
displayName: "Pivot X",
6370
type: PropertyType.Number,
64-
propertyGridGroup: specificGroup
71+
propertyGridGroup: specificGroup,
72+
disabled: (widget: LVGLImageWidget) => !widget.setPivot
6573
},
6674
{
6775
name: "pivotY",
6876
displayName: "Pivot Y",
6977
type: PropertyType.Number,
70-
propertyGridGroup: specificGroup
78+
propertyGridGroup: specificGroup,
79+
disabled: (widget: LVGLImageWidget) => !widget.setPivot
7180
},
7281
{
7382
name: "zoom",
@@ -103,6 +112,7 @@ export class LVGLImageWidget extends LVGLWidget {
103112
height: 100,
104113
widthUnit: "content",
105114
heightUnit: "content",
115+
setPivot: false,
106116
pivotX: 0,
107117
pivotY: 0,
108118
zoom: 256,
@@ -116,6 +126,10 @@ export class LVGLImageWidget extends LVGLWidget {
116126
if (jsObject.innerAlign == undefined) {
117127
jsObject.innerAlign = "CENTER";
118128
}
129+
130+
if (jsObject.setPivot == undefined) {
131+
jsObject.setPivot = true;
132+
}
119133
},
120134

121135
icon: (
@@ -165,6 +179,7 @@ export class LVGLImageWidget extends LVGLWidget {
165179

166180
makeObservable(this, {
167181
image: observable,
182+
setPivot: observable,
168183
pivotX: observable,
169184
pivotY: observable,
170185
zoom: observable,
@@ -189,6 +204,7 @@ export class LVGLImageWidget extends LVGLWidget {
189204
rect.height,
190205

191206
0,
207+
this.setPivot,
192208
this.pivotX,
193209
this.pivotY,
194210
this.zoom,
@@ -204,6 +220,7 @@ export class LVGLImageWidget extends LVGLWidget {
204220
runtime.wasm._lvglSetImageSrc(
205221
obj,
206222
bitmapPtr,
223+
this.setPivot,
207224
this.pivotX,
208225
this.pivotY,
209226
this.zoom,
@@ -236,7 +253,7 @@ export class LVGLImageWidget extends LVGLWidget {
236253
}
237254
}
238255

239-
if (this.pivotX != 0 || this.pivotY != 0) {
256+
if (this.setPivot) {
240257
build.line(
241258
`lv_img_set_pivot(obj, ${this.pivotX}, ${this.pivotY});`
242259
);

0 commit comments

Comments
 (0)