feat(lvgl-module): complete canvas API export for GameBoy emulator

- canvas: add missing getters/setters (get_buf, get_image, get_px, get_draw_buf,
  set_palette, copy_buf, init_layer, finish_layer, buf_size)
- draw_buf: export create/destroy/init/dup/copy/goto/width_to_stride/align/palette/from_image/to_image
- draw layer: create + alloc_buf
- image: scale/rotation/pivot/offset for GB integer upscaling
- style: transform_scale/pivot for fallback path

Enables ELF apps to use full LVGL9 canvas docs API:
- 160x144 raw buffer + lv_image_set_scale 2x/3x
- layer init/finish for direct draw calls
- palette for indexed GB modes

Test: GameBoy app builds clean (0 missing symbols) vs 5.5.2 SDK
Fixes missing symbol errors that previously required commented-out scaling workaround
This commit is contained in:
Adolfo Reyna
2026-07-20 00:21:01 -04:00
parent c0d9168e20
commit 3310a3a43e
+42 -4
View File
@@ -199,12 +199,50 @@ const struct ModuleSymbol lvgl_module_symbols[] = {
DEFINE_MODULE_SYMBOL(lv_buttonmatrix_set_button_width),
DEFINE_MODULE_SYMBOL(lv_buttonmatrix_set_selected_button),
DEFINE_MODULE_SYMBOL(lv_buttonmatrix_clear_button_ctrl),
// lv_canvas
// lv_canvas - full API for emulator framebuffer use-cases (GameBoy 160x144)
DEFINE_MODULE_SYMBOL(lv_canvas_create),
DEFINE_MODULE_SYMBOL(lv_canvas_fill_bg),
DEFINE_MODULE_SYMBOL(lv_canvas_set_draw_buf),
DEFINE_MODULE_SYMBOL(lv_canvas_set_buffer),
DEFINE_MODULE_SYMBOL(lv_canvas_set_draw_buf),
DEFINE_MODULE_SYMBOL(lv_canvas_set_px),
DEFINE_MODULE_SYMBOL(lv_canvas_set_palette),
DEFINE_MODULE_SYMBOL(lv_canvas_get_draw_buf),
DEFINE_MODULE_SYMBOL(lv_canvas_get_px),
DEFINE_MODULE_SYMBOL(lv_canvas_get_image),
DEFINE_MODULE_SYMBOL(lv_canvas_get_buf),
DEFINE_MODULE_SYMBOL(lv_canvas_copy_buf),
DEFINE_MODULE_SYMBOL(lv_canvas_fill_bg),
DEFINE_MODULE_SYMBOL(lv_canvas_init_layer),
DEFINE_MODULE_SYMBOL(lv_canvas_finish_layer),
DEFINE_MODULE_SYMBOL(lv_canvas_buf_size),
// lv_draw_buf - LVGL9 buffers (was lv_img_buf)
DEFINE_MODULE_SYMBOL(lv_draw_buf_create),
DEFINE_MODULE_SYMBOL(lv_draw_buf_destroy),
DEFINE_MODULE_SYMBOL(lv_draw_buf_init),
DEFINE_MODULE_SYMBOL(lv_draw_buf_dup),
DEFINE_MODULE_SYMBOL(lv_draw_buf_copy),
DEFINE_MODULE_SYMBOL(lv_draw_buf_goto_xy),
DEFINE_MODULE_SYMBOL(lv_draw_buf_clear),
DEFINE_MODULE_SYMBOL(lv_draw_buf_width_to_stride),
DEFINE_MODULE_SYMBOL(lv_draw_buf_align),
DEFINE_MODULE_SYMBOL(lv_draw_buf_set_palette),
DEFINE_MODULE_SYMBOL(lv_draw_buf_from_image),
DEFINE_MODULE_SYMBOL(lv_draw_buf_to_image),
// lv_draw layer helpers
DEFINE_MODULE_SYMBOL(lv_draw_layer_create),
DEFINE_MODULE_SYMBOL(lv_draw_layer_alloc_buf),
// lv_image transform/scale - critical for GB 2x/3x scaling (image as canvas)
DEFINE_MODULE_SYMBOL(lv_image_set_scale),
DEFINE_MODULE_SYMBOL(lv_image_set_scale_x),
DEFINE_MODULE_SYMBOL(lv_image_set_scale_y),
DEFINE_MODULE_SYMBOL(lv_image_set_rotation),
DEFINE_MODULE_SYMBOL(lv_image_set_pivot),
DEFINE_MODULE_SYMBOL(lv_image_set_offset_x),
DEFINE_MODULE_SYMBOL(lv_image_set_offset_y),
// generic obj transform styles (fallback scaling path)
DEFINE_MODULE_SYMBOL(lv_obj_set_style_transform_scale_x),
DEFINE_MODULE_SYMBOL(lv_obj_set_style_transform_scale_y),
DEFINE_MODULE_SYMBOL(lv_obj_set_style_transform_pivot_x),
DEFINE_MODULE_SYMBOL(lv_obj_set_style_transform_pivot_y),
// lv_label
DEFINE_MODULE_SYMBOL(lv_label_create),
DEFINE_MODULE_SYMBOL(lv_label_cut_text),
@@ -431,7 +469,7 @@ const struct ModuleSymbol lvgl_module_symbols[] = {
DEFINE_MODULE_SYMBOL(lv_draw_task_get_draw_dsc),
DEFINE_MODULE_SYMBOL(lv_draw_task_get_label_dsc),
DEFINE_MODULE_SYMBOL(lv_draw_task_get_fill_dsc),
DEFINE_MODULE_SYMBOL(lv_draw_buf_create),
// lv_draw_buf_create moved to canvas block (duplicate removed)
// lv_image
DEFINE_MODULE_SYMBOL(lv_image_create),
DEFINE_MODULE_SYMBOL(lv_image_set_src),