add_files

This commit is contained in:
lyon 2022-08-22 18:44:14 +08:00
parent e984c598b2
commit 027f06710e
4 changed files with 63 additions and 177 deletions

View File

@ -1,138 +0,0 @@
# Visual Studio simulator project for LVGL embedded GUI Library
![Screenshot](Screenshot.png)
## Introduction
This is a pre-configured Visual Studio project to try LVGL on a Windows PC. The
project only depend on Win32 API, C Runtime and C++ STL, so you can compile it
without any extra dependencies.
The project is currently maintained using Visual Studio 2019. It may well work
without modification in Visual Studio 2017 but it is not actively supported
with that version, so please install and test with Visual Studio 2019 before
reporting any bugs.
Some one will notice that this repository had been renamed from
`lv_sim_visual_studio_sdl` to `lv_sim_visual_studio`. You can read
[here](https://github.com/lvgl/lvgl/issues/2043) and know why.
**This project is not for Visual Studio Code, it is for Visual Studio 2019.**
Instructions for cloning, building and running the application are found below.
## Known Issues
- The LV_MEM_SIZE macro in lv_conf.h should be 128KiB or larger because you may
meet the out of memory issue when you are using the 64-bit simulator.
- Note: In this project, the size is set to 1024KiB.
- Users need to check the target selected in Visual Studio, because the
simulator project support ARM64 and Visual Studio will choose ARM64 in the
first time because of the alphabetical order.
## Supported Features
This repo is designed for keeping the simulator behavior. If you wonder to
adapt your LVGL application to Windows, please visit
[lvgl/lv_port_windows](https://github.com/lvgl/lv_port_windows).
- [x] Only depends on Win32 API, C Runtime and C++ STL.
- [x] Native support for x86, x64 and ARM64 Windows.
- [x] Support compiling with [VC-LTL](https://github.com/Chuyu-Team/VC-LTL)
toolchain to make the binary size as smaller as using MinGW.
- [x] Support Per-monitor DPI Aware.
- [x] Support Windows keyboard and mouse wheel event in the HAL level.
- [x] FreeType integration.
## Drop the ARM32 Windows support
For my deliberate consideration, The lv_port_windows project will drop the ARM32
support on the Windows platform. Here are the reasons:
- The latest version of ARM32 version for Windows desktop is Redstone 2 Insider
Build 15035. I know Windows RT 8.1 and Windows 10 IoT Core aren't in the
stage of end of support, but most of daily users are drop their devices
(Windows RT 8.x tablets) or have a better solution (Windows 10 IoT Core users
on Raspberry Pi devices should migrate to Linux or ARM64 version for Windows
10 desktop).
- Future ARM processors are deprecating ARM32 ISA support, and Apple Silicon M1
had dropped the ARM32 support at all. So we can't run ARM32 version of Windows
desktop applications on these devices.
- Reduce the size of release package and make the continuous integration faster.
## How to Clone
This repository contains other, necessary LVGL software repositories as
[git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules). Those
submodules are not pulled in with the normal git clone command and they will be
needed. There are a couple of techniques to pull in the submodules.
### Everything at Once
This command will clone the lv_sim_visual_studio repository and all submodules
in a single step.
```
git clone --recurse-submodules https://github.com/lvgl/lv_sim_visual_studio.git
```
### Main Repository First, Submodules Second
If you've already cloned the main repository you can pull in the submodules
with a second command. Both commands are shown below.
```
git clone https://github.com/lvgl/lv_sim_visual_studio.git
cd lv_sim_visual_studio
git submodule update --init --recursive
```
### Keeping Your Clone Up-To-Date
If you have cloned this repository and would like to pull in the latest
changes, you will have to do this in two steps. The first step will pull in
updates to the main repo, including updated _references_ to the submodules. The
second step will update the code in the submodules to match those references.
The two commands needed to accomplish this are shown below, run these commands
from inside the main repository's directory (top level `lv_sim_visual_studio`
directory works fine).
```
git pull
git submodule update --init --recursive
```
If you have chosen to fork this repository then updating the fork from upstream
will require a different, more involved procedure.
## How To Build & Run
Open the `LVGL.Simulator.sln` solution file in Visual Studio. Set the
`LVGL.Simulator` project as the startup project. Click on the `Local Windows
Debugger` button in the top toolbar. The included project will be built and
run, launching from a cmd window.
## Trying Things Out
There are a list of possible test applications in the
[LVGL.Simulator.cpp](LVGL.Simulator/LVGL.Simulator.cpp) file. Each test or demo
is launched via a single function call. By default the `lv_demo_widgets`
function is the one that runs, but you can comment that one out and choose any
of the others to compile and run.
Use these examples to start building your own application test code inside the
simulator.
## A Note About Versions
This repository has its submodule references updated shortly afk with minor
version updates. When submodule updates take place a matching version tag is
added tter the release of new, major releases of LittlevGL's core
[lvgl](https://github.com/lvgl/lvgl) project. Occasionally it is updated to
woro this repository.
If you need to pull in bug fixes in more recent changes to the submodules you
will have to update the references on your own. If source files are added or
removed in the submodules then the visual studio project will likely need
adjusting. See the commit log for examples of submodule updates and associated
visual studio file changes to guide you.

View File

@ -0,0 +1,37 @@
#include "lvgl.h"
#include "pika_lvgl_lv_timer_t.h"
PikaEventListener* g_pika_lv_timer_event_listener;
#define LV_TIMER_EVENT_ID 0
void __pika_timer_cb(lv_timer_t* timer) {
PikaObj* eventHandleObj = pks_eventLisener_getEventHandleObj(
g_pika_lv_timer_event_listener, LV_TIMER_EVENT_ID);
obj_newDirectObj(eventHandleObj, "timer", New_pika_lvgl_lv_timer_t);
obj_setPtr(obj_getPtr(eventHandleObj, "timer"), "lv_timer", timer);
obj_run(eventHandleObj, "eventCallBack(timer)");
}
void pika_lvgl_lv_timer_t_set_period(PikaObj* self, int period) {
lv_timer_t* lv_timer = obj_getPtr(self, "lv_timer");
lv_timer_set_period(lv_timer, period);
}
void pika_lvgl_lv_timer_t_set_cb(PikaObj* self, Arg* cb) {
obj_setArg(self, "eventCallBack", cb);
/* init event_listener for the first time */
if (NULL == g_pika_lv_timer_event_listener) {
pks_eventLisener_init(&g_pika_lv_timer_event_listener);
}
pks_eventLicener_registEvent(g_pika_lv_timer_event_listener,
LV_TIMER_EVENT_ID, self);
lv_timer_t* lv_timer = obj_getPtr(self, "lv_timer");
lv_timer_set_cb(lv_timer, __pika_timer_cb);
}
void pika_lvgl_lv_timer_t__del(PikaObj *self){
lv_timer_t* lv_timer = obj_getPtr(self, "lv_timer");
lv_timer_del(lv_timer);
}

View File

@ -11,6 +11,7 @@
#include "pika_lvgl_lv_color_t.h"
#include "pika_lvgl_lv_obj.h"
#include "pika_lvgl_indev_t.h"
#include "pika_lvgl_lv_timer_t.h"
PikaObj* pika_lv_event_listener_g;
@ -182,3 +183,11 @@ PikaObj* pika_lvgl_indev_get_act(PikaObj *self){
obj_setPtr(new_obj,"lv_indev", lv_indev);
return new_obj;
}
PikaObj* pika_lvgl_timer_create_basic(PikaObj *self){
PikaObj* new_obj = newNormalObj(New_pika_lvgl_lv_timer_t);
lv_timer_t *lv_timer = lv_timer_create_basic();
obj_setPtr(new_obj,"lv_timer", lv_timer);
return new_obj;
}

View File

@ -1,10 +1,8 @@
from PikaObj import *
def __init__(): ...
class EVENT(TinyObj):
class EVENT:
ALL: int
PRESSED: int
PRESSING: int
@ -53,8 +51,7 @@ class EVENT(TinyObj):
PREPROCESS: int
def __init__(self): ...
class ALIGN(TinyObj):
class ALIGN:
DEFAULT: int
TOP_LEFT: int
TOP_MID: int
@ -79,8 +76,7 @@ class ALIGN(TinyObj):
OUT_RIGHT_BOTTOM: int
def __init__(self): ...
class PALETTE(TinyObj):
class PALETTE:
RED: int
PINK: int
PURPLE: int
@ -103,37 +99,34 @@ class PALETTE(TinyObj):
NONE: int
def __init__(self): ...
class OPA(TinyObj):
class OPA:
TRANSP: int
COVER: int
def __init__(self): ...
class ANIM(TinyObj):
class ANIM:
OFF: int
ON: int
def __init__(self): ...
class STATE(TinyObj):
class STATE:
def __init__(self): ...
class lv_event(TinyObj):
class lv_event:
def get_code(self) -> int: ...
def get_target(self) -> lv_obj: ...
class lv_color_t: ...
class lv_color_t(TinyObj):
...
class lv_timer_t:
def set_period(period: int): ...
def set_cb(cb: any): ...
def _del(self): ...
def palette_lighten(p: int, lvl: int) -> lv_color_t: ...
def palette_main(p: int) -> lv_color_t: ...
class style_t(TinyObj):
class style_t:
def __init__(self): ...
def init(self): ...
def set_radius(self, radius: int): ...
@ -146,8 +139,7 @@ class style_t(TinyObj):
def set_shadow_spread(self, s: int): ...
def set_shadow_color(self, color: lv_color_t): ...
class lv_obj(TinyObj):
class lv_obj:
def center(self): ...
def set_size(self, size_x: int, size_y: int): ...
def align(self, align: int, x_ofs: int, y_ofs: int): ...
@ -161,45 +153,36 @@ class lv_obj(TinyObj):
def get_y(self) -> int: ...
def set_pos(self, x: int, y: int): ...
class indev_t(TinyObj):
class indev_t:
def get_vect(self, point: point_t): ...
def obj(parent: lv_obj) -> lv_obj: ...
def indev_get_act() -> indev_t: ...
class point_t(TinyObj):
class point_t:
def __init__(self): ...
class arc(lv_obj):
def __init__(self, parent: lv_obj): ...
def set_end_angle(self, angle: int): ...
def set_bg_angles(self, start: int, end: int): ...
def set_angles(self, start: int, end: int): ...
class bar(lv_obj):
def __init__(self, parent: lv_obj): ...
def set_value(self, value: int, anim: int): ...
class btn(lv_obj):
def __init__(self, parent: lv_obj): ...
class checkbox(lv_obj):
def __init__(self, parent: lv_obj): ...
def set_text(self, txt: str): ...
class dropdown(lv_obj):
def __init__(self, parent: lv_obj): ...
def set_options(self, options: str): ...
class label(lv_obj):
def __init__(self, parent: lv_obj): ...
def set_text(self, txt: str): ...
@ -207,29 +190,24 @@ class label(lv_obj):
def set_recolor(self, en: int): ...
def set_style_text_align(self, value: int, selector: int): ...
class roller(lv_obj):
def __init__(self, parent: lv_obj): ...
def set_options(self, options: str, mode: int): ...
def set_visible_row_count(self, row_cnt: int): ...
class slider(lv_obj):
def __init__(self, parent: lv_obj): ...
class switch(lv_obj):
def __init__(self, parent: lv_obj): ...
class table(lv_obj):
def __init__(self, parent: lv_obj): ...
def set_cell_value(self, row: int, col: int, txt: str): ...
class textarea(lv_obj):
def __init__(self, parent: lv_obj): ...
def set_one_line(en: int): ...
def scr_act() -> lv_obj: ...
def timer_create_basic() -> lv_timer_t: ...