update lvgl simulator on ubuntu

This commit is contained in:
kingham
2025-09-11 16:36:41 +08:00
parent b7e746a7c2
commit 9086eca198
2800 changed files with 610723 additions and 0 deletions

View File

@@ -0,0 +1,90 @@
#include "PageManager.h"
#include <string.h>
// 定义全局实例
PageManager_t PageManager;
/**
* 初始化页面管理器
*/
void PageManager_init(void) {
memset(&PageManager, 0, sizeof(PageManager));
}
/**
* 注册一个新页面
* @param page 页面结构体指针
*/
void PageManager_register(Page_t* page) {
if (PageManager.count >= MAX_PAGES) {
LV_LOG_WARN("PageManager: page list is full!");
return;
}
PageManager.pages[PageManager.count++] = page;
}
/**
* 切换到下一个页面(循环)
*/
void PageManager_next(void) {
if (PageManager.count == 0) return;
Page_t* current = PageManager.pages[PageManager.current_index];
Page_t* next = PageManager.pages[(PageManager.current_index + 1) % PageManager.count];
// 反初始化当前页
if (current->deinit) current->deinit();
// 更新索引
PageManager.current_index = (PageManager.current_index + 1) % PageManager.count;
// 初始化新页面并切换
if (next->init) next->init();
lv_scr_load_anim(*next->page_obj, LV_SCR_LOAD_ANIM_MOVE_LEFT, 200, 0, true);
}
/**
* 切换到上一个页面(循环)
*/
void PageManager_prev(void) {
if (PageManager.count == 0) return;
Page_t* current = PageManager.pages[PageManager.current_index];
uint8_t prev_index = (PageManager.current_index == 0) ?
PageManager.count - 1 : PageManager.current_index - 1;
Page_t* prev = PageManager.pages[prev_index];
if (current->deinit) current->deinit();
PageManager.current_index = prev_index;
if (prev->init) prev->init();
lv_scr_load_anim(*prev->page_obj, LV_SCR_LOAD_ANIM_MOVE_RIGHT, 200, 0, true);
}
/**
* 跳转到指定索引页面
* @param index 目标页面索引
*/
void PageManager_goto(uint8_t index) {
if (index >= PageManager.count || PageManager.count == 0) return;
Page_t* current = PageManager.pages[PageManager.current_index];
Page_t* target = PageManager.pages[index];
if (current != target) {
if (current->deinit) current->deinit();
PageManager.current_index = index;
if (target->init) target->init();
lv_scr_load_anim(*target->page_obj, LV_SCR_LOAD_ANIM_FADE_IN, 200, 0, true);
}
}
/**
* 获取当前页面
* @return 当前页面指针
*/
Page_t* PageManager_get_current_page(void) {
if (PageManager.count == 0) return NULL;
return PageManager.pages[PageManager.current_index];
}

View File

@@ -0,0 +1,35 @@
#ifndef PAGE_MANAGER_H
#define PAGE_MANAGER_H
#include "lvgl.h"
// 最大支持页面数量
#define MAX_PAGES 5
// 页面结构体
typedef struct {
void (*init)(void);
void (*deinit)(void);
lv_obj_t** page_obj; // 指向页面对象指针的指针
const char* name; // 可选:用于调试
} Page_t;
// 页面管理器结构体
typedef struct {
Page_t* pages[MAX_PAGES];
uint8_t count;
uint8_t current_index;
} PageManager_t;
// 全局管理器实例(声明)
extern PageManager_t PageManager;
// API 函数声明
void PageManager_init(void);
void PageManager_register(Page_t* page);
void PageManager_next(void);
void PageManager_prev(void);
void PageManager_goto(uint8_t index);
Page_t* PageManager_get_current_page(void);
#endif // PAGE_MANAGER_H

44
lv_sim_linux/GUI/ui.c Normal file
View File

@@ -0,0 +1,44 @@
// LVGL version: 9.2
// Project name: PowerPico
#include "ui.h"
///////////////////// VARIABLES ////////////////////
// pages
///////////////////// TEST LVGL SETTINGS ////////////////////
#if LV_COLOR_DEPTH != 16
#error "LV_COLOR_DEPTH should be 16bit to match SquareLine Studio's settings"
#endif
/////////////////////// Timer //////////////////////
/**
* Main timer for Refreshing the screens
*/
static void main_timer(lv_timer_t * timer)
{
// printf("timer\r\n");
}
/////////////////////// ui_initialize //////////////////////
void ui_init(void)
{
lv_disp_t * dispp = lv_display_get_default();
lv_theme_t * theme = lv_theme_default_init(dispp, lv_palette_main(LV_PALETTE_BLUE), lv_palette_main(LV_PALETTE_RED),
true, LV_FONT_DEFAULT);
lv_disp_set_theme(dispp, theme);
PageManager_init();
// PageManager_register(&xxxpage);
// test
lv_obj_t * test_page = lv_obj_create(NULL);
lv_obj_t * btn1 = lv_button_create(test_page);
lv_obj_align(btn1, LV_ALIGN_CENTER, 0, 0);
lv_disp_load_scr(test_page);
//timer
lv_timer_t * ui_MainTimer = lv_timer_create(main_timer, 1000, NULL);
}

23
lv_sim_linux/GUI/ui.h Normal file
View File

@@ -0,0 +1,23 @@
// LVGL VERSION: 8.2.0
#ifndef _UI_H
#define _UI_H
#ifdef __cplusplus
extern "C" {
#endif
#include "lvgl.h"
#include "stdio.h"
#include "./PageManager.h"
void ui_init(void);
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif