• Stars
    star
    572
  • Rank 77,995 (Top 2 %)
  • Language
    C
  • License
    MIT License
  • Created almost 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Visual Studio projects for LVGL embedded graphics library. Recommended on Windows. Linux support with Wayland is work in progress.

LVGL for Windows Visual Studio port

IMPORTANT NOTE The next major version (v9.0.0) is developed in the master branch. The last stable version is available in the release/v8.3 branch.

WARNING The compilation for the master branch will be failed in the recent days because the maintainer, or Kenji Mouri are making a new Win32 support for the new LVGL driver architecture.

Screenshot

In order to better maintain LVGL for Windows Visual Studio port, I have planned to do a big refactoring for this repository. I think it may be the biggest refactoring since I become the maintainer of this repository. For more information, please read #53.

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 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

Simulator Mode

  • Only depends on Win32 API, C Runtime and C++ STL.
  • Native support for x86, x64 and ARM64 Windows.
  • Support compiling with VC-LTL toolchain to make the binary size as smaller as using MinGW.
  • Support Per-monitor DPI Aware.
  • Support Windows keyboard and mouse wheel event in the HAL level.
  • FreeType integration.

Application Mode

  • Only depends on Win32 API, C Runtime and C++ STL.
  • Native support for x86, x64 and ARM64 Windows.
  • Support compiling with VC-LTL toolchain to make the binary size as smaller as using MinGW.
  • Support resizing the Window in the HAL level.
  • Support Per-monitor DPI Aware in the HAL level.
  • Support Windows keyboard and mouse wheel event in the HAL level.
  • Provide the easy way to reference lvgl, lv_examples project for Visual Studio.
  • Provide Windows GDI font engine support.
  • Support Windows touch input in the HAL level.
  • Support Windows IME input in the HAL level.

How to Clone

This repository contains other, necessary LVGL software repositories as git 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_port_win_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 LvglWindowsSimulator.sln solution file in Visual Studio. Set the LvglWindowsSimulator 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 LvglWindowsSimulator.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 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.

Documents

More Repositories

1

lvgl

Embedded graphics library to create beautiful UIs for any MCU, MPU and display type.
C
16,168
star
2

lv_port_esp32

LVGL ported to ESP32 including various display and touchpad drivers
C
1,011
star
3

lv_binding_rust

LVGL bindings for Rust. A powerful and easy-to-use embedded GUI with many widgets, advanced visual effects (opacity, antialiasing, animations) and low memory requirements (16K RAM, 64K Flash).
Rust
676
star
4

lv_demos

Examples, tutorials and applications for the LVGL embedded GUI library
C
480
star
5

lvgl_esp32_drivers

Drivers for ESP32 to be used with LVGL
C
321
star
6

lv_drivers

TFT and touch pad drivers for LVGL embedded GUI library
C
295
star
7

lv_binding_micropython

LVGL binding for MicroPython
C
250
star
8

lv_port_pc_vscode

C
244
star
9

lv_platformio

PlatformIO project example for LVGL
C
241
star
10

lv_port_linux

LVGL configured to work with a standard Linux framebuffer
C
237
star
11

lv_port_pc_eclipse

PC simulator project for LVGL embedded GUI Library. Recommended on Linux and Mac.
C
235
star
12

lv_font_conv

Converts TTF/WOFF fonts to compact bitmap format
JavaScript
175
star
13

lv_arduino

LVGL as Arduino Library + example sketch
C
147
star
14

lv_port_win_codeblocks

Windows PC simulator project for LVGL embedded GUI Library
C
145
star
15

lv_binding_js

React bindings for LVGL ⚛️
C++
141
star
16

lv_port_windows

LVGL ported to Windows
C
83
star
17

lv_img_conv

Image converter for LVGL, written in JS
TypeScript
72
star
18

lv_port_stm32f429_disco

LVGL ported to STM32F429I-DISC1 using SW4STM32 (Ac6) IDE
C
71
star
19

lv_lib_png

PNG decoder for LVGL
C
60
star
20

lv_i18n

Internationalization (i18n) for LVGL
JavaScript
58
star
21

lv_web_emscripten

LVGL ported to Emscripten to be converted to JavaScript
C
55
star
22

lv_port_stm32f746_disco

LVGL ported to STM32F746G-DISCO using STM32CubeIDE
C
50
star
23

lv_lib_qrcode

QR code generation with LVGL
C
50
star
24

lv_utils

Convert images or system fonts to C arrays. Written for LVGL embedded GUI library
PHP
49
star
25

lv_lib_freetype

Interface to FreeType to generate font bitmaps run time
C
47
star
26

lv_binding_cpp

[WIP] C++ binding for LVGL
C++
45
star
27

docs_old

DEPRECATED: Documentation for LVGL is now located in the main repository: https://github.com/lvgl/lvgl
HTML
42
star
28

lv_fs_if

LVGL interfaces to various file systems (PC, FatFS)
C
40
star
29

lv_lib_split_jpg

JPG decoder for LVGL
C
32
star
30

lv_lib_gif

GIF library for LVGL
C
32
star
31

lv_lib_rlottie

Lottie animation support for LVGL
C
29
star
32

lv_port_stm32f769_disco

LVGL ported to STM32F769 Discovery using CubeIDE
C
26
star
33

lv_gui_builder

[WIP] Drag end drop GUI designer for LVGL
24
star
34

lv_lib_tinygl

EXPERIMENTAL - 3D extension for lvgl using TinyGL
C
21
star
35

lv_port_raspberry_pi_pico_mdk

An MDK template for Raspberry Pi Pico + LVGL
C
19
star
36

blog

Post, News and Tutorials about LVGL embedded GUI library
C
19
star
37

lv_port_stm32f469_disco

LVGL ported to STM32F469 Discovery using SWSTM32 (Ac6) IDE
C
14
star
38

lv_lib_bmp

BMP decoder library for LVGL
C
12
star
39

lv_binding_pikascript

C
11
star
40

lv_port_stm32h7b3i_disco

This repository contains the Light and Versatile Graphics Library (LVGL) port for the STM32H7B3I-DK development board.
C
11
star
41

lv_port_stm32h745i_disco

LVGL ported to STM32H745I DISCO
C
11
star
42

lv_apps

Ready to use UIs and high level components for applications
C
10
star
43

lv_port_maixduino

Maixduino GUI project with LVGL
C
10
star
44

docs

Meta repository for compiled documentation. Do not send PRs here - they will be closed. The Markdown files are now located in the main repository: https://github.com/lvgl/lvgl
HTML
10
star
45

lvgl-project-creator

Create LVGL projects quickly and easily
Python
9
star
46

sim

Meta repository for online LVGL simulators
JavaScript
8
star
47

lv_port_xilinx_zedboard_vitis

This repository contains a template AMP project for the Zedboard using VGA, FreeRTOS, LVGL and USB peripherals
C
8
star
48

lv_port_aurix

LVGL ported to Aurix TFT board
C
7
star
49

lv_port_an547_cm55_sim

A LVGL porting for Cortex-M55 running on an Arm official FPGA prototyping development board called MPS3 (AN547), see Figure 1. It is also possible to run the project template on an emulator called Corstone-300-FVP, which is free. Topics Resources
C
7
star
50

lv_port_stm_nucleo_g071rb

LVGL ported to ST's NUCLEO G071RB board
C
3
star
51

lv_binding_berry

Binding to Berry language
C
3
star
52

lv_port_stm32f746_disco_atollic

DEPRECATED: LittlevGL ported to STM32F746G-DISCO using Atollic IDE
C
2
star
53

template

Template repo with README and CI settings
2
star
54

markup_temporary

Temporary repository to evaluate the markup language support
1
star
55

pic32mx_r61581_no_os

LittlevGL ported to PIC32MX with R61581 display controller
C
1
star