diff --git a/docs/src/details/integration/pc/browser.rst b/docs/src/details/integration/pc/browser.rst
index 743367a15b..08be592b1c 100644
--- a/docs/src/details/integration/pc/browser.rst
+++ b/docs/src/details/integration/pc/browser.rst
@@ -2,11 +2,51 @@
Browser
=======
-.. develop in browser or run the UI in browser
- emscripten
- overview: how it works, advantages, see lvgl.io/demos
- usage
- github codespace
- why, how
- Editor's online preview
- what is it, why, how
+Overview
+********
+
+There are multiple ways to view LVGL UIs in a browser or even develop UIs directly in a browser environment:
+
+- Compile UI to HTML using **Emscripten**
+- Develop in online VSCode using **GitHub Codespaces**
+- Preview UIs in the **LVGL UI Editor’s online preview**
+
+Compile UIs to HTML (Emscripten)
+********************************
+
+`Emscripten `__ can compile C source files into a single HTML output that runs in a browser. This is a convenient way to share developed UIs with stakeholders, as they can test the interface without needing a developer setup.
+
+Instead of producing a binary, Emscripten produces WebAssembly, which is supported across modern browsers.
+
+The `lv_web_emscripten `__ project provides a ready-to-use setup for compiling any LVGL UI into a browser-capable HTML file.
+
+It uses a specialized, :ref:`build_cmake`‑based build system—check the README for full setup details.
+
+Develop in Online VSCode (GitHub Codespaces)
+********************************************
+
+GitHub Codespaces offer a cloud-hosted VSCode environment that runs entirely in the browser.
+
+LVGL provides a preconfigured Codespace environment, which you can launch with just a few clicks. It’s especially beneficial if:
+
+- You're having issues setting up a local development environment
+- Your machine is slow or underpowered
+- You're working from a device without a local IDE
+
+To get started:
+
+1. Navigate to `https://github.com/lvgl/lvgl `__.
+2. Click the green **Code** button.
+3. Select the **Codespaces** tab.
+4. Click **Create Codespace on master**.
+5. Wait briefly for the workspace to launch.
+6. Open the terminal and run `./build_all.sh`.
+
+This will build LVGL and render the UI in a VSCode tab. You can continue writing and rebuilding simply by running the script again.
+
+Note: The Codespaces setup also uses Emscripten for browser rendering.
+
+LVGL’s UI Editor Online Share
+*****************************
+
+Coming soon.
diff --git a/docs/src/details/integration/pc/index.rst b/docs/src/details/integration/pc/index.rst
index d4d28370d6..df80bec285 100644
--- a/docs/src/details/integration/pc/index.rst
+++ b/docs/src/details/integration/pc/index.rst
@@ -1,16 +1,22 @@
.. _running_on_pc:
+.. _simulator:
=============
Running on PC
=============
+You can try out LVGL **using only your PC** (i.e. without any
+development boards).
+
+Many ready-to-use projects are available to get started easily on
+Windows, Linux, macOS, and in a web browser. Even developing a UEFI BIOS is
+an option.
+
.. toctree::
- :class: toctree-1-deep
- :maxdepth: 1
+ :maxdepth: 2
- overview
linux
windows
macos
diff --git a/docs/src/details/integration/pc/linux.rst b/docs/src/details/integration/pc/linux.rst
index 2070a77a15..ab0c14babf 100644
--- a/docs/src/details/integration/pc/linux.rst
+++ b/docs/src/details/integration/pc/linux.rst
@@ -2,7 +2,50 @@
Linux
=====
-.. intro: there are many repos, it's easy to install dependencies via terminal
- lv_port_linux: cmake based, also good for embedded linux, suppots many display backends
- lv_port_pc_eclipse: many chip vendor IDEs are Eclips based too, needs sdl
- lv_port_pc_vscode: modern, needs SDL
+Overview
+********
+
+LVGL comes with a lot of built-in Linux-related drivers and support:
+
+- Wayland, DRM, SDL, and fbdev display drivers
+- ``pthread`` integration
+- :ref:`build_cmake` support
+
+Multiple repositories are available to help you get started easily.
+Just follow the README of the repositories listed below.
+
+Ready-to-Use Projects
+*********************
+
+VSCode
+------
+
+LVGL is available for `VSCode `__, a well-known cross-platform code editor.
+
+It uses `SDL `__ to open a window, show the rendered content, and manage mouse and keyboard.
+
+A ready-to-use LVGL project for VSCode is available at
+`https://github.com/lvgl/lv_port_pc_vscode `__.
+
+The project uses :ref:`build_cmake` to compile LVGL, so it also serves as a CMake example.
+
+This repository also has built-in FreeRTOS integration, making it easy to test the UI
+with an embedded OS.
+
+Generic Linux Port
+------------------
+
+The `lv_port_linux `__ project is typically meant to
+be used for embedded hardware, but it runs perfectly on PC as well.
+
+It supports all the built-in LVGL drivers in a preconfigured :ref:`build_cmake` build system,
+making it easy to integrate into any platform or environment.
+
+Eclipse
+-------
+
+The project for `Eclipse CDT `__ also uses `SDL `__.
+It can be found at
+`https://github.com/lvgl/lv_port_pc_eclipse `__.
+
+The project uses CMake to compile LVGL, so it also serves as a :ref:`build_cmake` example.
diff --git a/docs/src/details/integration/pc/macos.rst b/docs/src/details/integration/pc/macos.rst
index 30c40dc485..2dc0e67e67 100644
--- a/docs/src/details/integration/pc/macos.rst
+++ b/docs/src/details/integration/pc/macos.rst
@@ -1,7 +1,36 @@
=====
-MacOS
+macOS
=====
-.. lv_port_pc_vscode
- lv_port_pc_eclipse
+Overview
+********
+Ready-to-use projects are available to run LVGL on macOS as well.
+These projects use the :ref:`sdl_driver`.
+
+Ready-to-Use Projects
+*********************
+
+VSCode
+------
+
+LVGL is available for `VSCode `__, a well-known cross-platform code editor.
+
+It uses `SDL `__ to open a window, show the rendered content, and manage mouse and keyboard.
+
+A ready-to-use LVGL project for VSCode is available at
+`https://github.com/lvgl/lv_port_pc_vscode `__.
+
+The project uses :ref:`build_cmake` to compile LVGL, so it also serves as a CMake example.
+
+This repository also has built-in FreeRTOS integration, making it easy to test the UI
+with an embedded OS as well.
+
+Eclipse
+-------
+
+The project for `Eclipse CDT `__ also uses `SDL `__.
+It can be found at
+`https://github.com/lvgl/lv_port_pc_eclipse `__.
+
+The project uses CMake to compile LVGL, so it also serves as a :ref:`build_cmake` example.
diff --git a/docs/src/details/integration/pc/overview.rst b/docs/src/details/integration/pc/overview.rst
deleted file mode 100644
index 14f72e563f..0000000000
--- a/docs/src/details/integration/pc/overview.rst
+++ /dev/null
@@ -1,55 +0,0 @@
-.. _simulator:
-
-========
-Overview
-========
-
-You can try out LVGL **using only your PC** (i.e. without any
-development boards). LVGL will run on a simulator environment on the PC
-where anyone can write and experiment with real LVGL applications.
-
-Using the simulator on a PC has the following advantages:
-
-- Hardware independent: Write code, run it on the PC and see the result on a monitor.
-- Cross-platform: Any Windows, Linux or macOS system can run the PC simulator.
-- Portability: The written code is portable, which means you can simply copy it when migrating to embedded hardware.
-- Easy Validation: The simulator is also very useful to report bugs because it
- provides a common platform for every user.
-- Better developer experience: On PC Debuggers are usually faster and better, you can log to files,
- add a lot of ``printf`` s, do profiling, and so on.
-
-
-Select an IDE
--------------
-
-The simulator is ported to various IDEs (Integrated Development Environments).
-Choose your favorite IDE, read its README on GitHub, download the project, and load it to the IDE.
-
-- `Eclipse with SDL driver `__: Recommended on Linux and Mac, supports CMake as well
-- `VisualStudio `__: Recommended on Windows
-- `VSCode with SDL driver `__: Recommended on Linux (SDL) and Mac (SDL)
-- `CodeBlocks `__: Recommended on Windows
-- `PlatformIO with SDL driver `__: Recommended on Linux and Mac but has an STM32 environment as well
-- `Generic Linux `__: CMake based project where you can easily switch between fbdev, DRM, and SDL.
-- `MDK with FastModel `__: For Windows
-
-External project not maintained by the LVGL organization:
-
-- `QT Creator `__: Cross platform
-
-Built-in drivers
-----------------
-
-LVGL comes with several built-in drivers, operating system and GPU support.
-See :ref:`integration_index`.
-
-Even if a simulator project comes with e.g. SDL, you can easily replace it by enabling
-another driver in ``lv_conf.h`` and calling its ``create`` function.
-
-For example to use the Linux frame buffer device instead of SDL just enable ``LV_USE_LINUX_FBDEV``
-and call
-
-.. code-block:: c
-
- lv_display_t *display = lv_linux_fbdev_create();
- lv_linux_fbdev_set_file(display, "/dev/fb0")
diff --git a/docs/src/details/integration/pc/sdl.rst b/docs/src/details/integration/pc/sdl.rst
index cf65a79c44..e527497abc 100644
--- a/docs/src/details/integration/pc/sdl.rst
+++ b/docs/src/details/integration/pc/sdl.rst
@@ -4,111 +4,81 @@
SDL Driver
==========
-.. almost good just review
- metnion the SDL renderer too
-
-
Overview
---------
+********
-SDL (Simple DirectMedia Layer) provides a cross-platform way to handle graphics,
+`SDL `__ (Simple DirectMedia Layer) provides a cross-platform way to handle graphics,
input, and multimedia, making it an excellent choice for running LVGL applications on
a PC.
+The `Eclipse `__,
+`VSCode `__, and `Generic Linux `__
+projects of LVGL use SDL to open a window and manage input devices.
+
+As SDL is fully cross-platform, it is easy to integrate into any environment.
Prerequisites
--------------
+*************
-Install SDL according to your platform.
+Install SDL according to your platform:
-- Linux ``sudo apt install libsdl2-dev``
-- MacOS ``brew install sdl2``
-- Windows https://github.com/libsdl-org/SDL/releases
+- Linux: ``sudo apt install libsdl2-dev``
+- macOS: ``brew install sdl2``
+- Windows: Recommended: ``vcpkg install sdl2``
+ Alternatively, you can download prebuilt SDL2 binaries from the `SDL website `__ and follow their installation instructions.
+Configuration
+*************
-Configure SDL Driver
------------------------
-
-1. Required linked libraries: -lSDL2
-2. Enable SDL driver support in lv_conf.h, CMake compiler definitions or KConfig.
-
- .. code-block:: c
-
- #define LV_USE_SDL 1
- #define LV_SDL_INCLUDE_PATH
- #define SDL_HOR_RES 400
- #define SDL_VER_RES 400
-
-Basic Usage
------------
+1. Required linked libraries: ``-lSDL2``
+2. Enable SDL driver support in ``lv_conf.h``, via CMake compiler definitions, or by using KConfig.
.. code-block:: c
- #include
- #define SDL_MAIN_HANDLED /*To fix SDL's "undefined reference to WinMain" issue*/
- #include
- #include "drivers/sdl/lv_sdl_mouse.h"
- #include "drivers/sdl/lv_sdl_mousewheel.h"
- #include "drivers/sdl/lv_sdl_keyboard.h"
+ #define LV_USE_SDL 1
- static lv_display_t *lvDisplay;
- static lv_indev_t *lvMouse;
- static lv_indev_t *lvMouseWheel;
- static lv_indev_t *lvKeyboard;
+Feel free to adjust the other options as needed, but the default values are usually sufficient.
- #if LV_USE_LOG != 0
- static void lv_log_print_g_cb(lv_log_level_t level, const char * buf)
- {
- LV_UNUSED(level);
- LV_UNUSED(buf);
- }
- #endif
+Usage
+*****
+
+.. code-block:: c
+
+ #define SDL_MAIN_HANDLED /* To fix SDL's "undefined reference to WinMain" issue */
+ #include "lvgl/lvgl.h"
+
+ static lv_display_t *display;
+ static lv_indev_t *mouse;
+ static lv_indev_t *mouse_wheel;
+ static lv_indev_t *keyboard;
int main()
{
- /* initialize lvgl */
+ /* Initialize LVGL */
lv_init();
- // Workaround for sdl2 `-m32` crash
- // https://bugs.launchpad.net/ubuntu/+source/libsdl2/+bug/1775067/comments/7
- #ifndef WIN32
- setenv("DBUS_FATAL_WARNINGS", "0", 1);
- #endif
+ display = lv_sdl_window_create(SDL_HOR_RES, SDL_VER_RES);
+ mouse = lv_sdl_mouse_create();
+ mouse_wheel = lv_sdl_mousewheel_create();
+ keyboard = lv_sdl_keyboard_create();
- /* Register the log print callback */
- #if LV_USE_LOG != 0
- lv_log_register_print_cb(lv_log_print_g_cb);
- #endif
-
- /* Add a display
- * Use the 'monitor' driver which creates window on PC's monitor to simulate a display*/
-
- lvDisplay = lv_sdl_window_create(SDL_HOR_RES, SDL_VER_RES);
- lvMouse = lv_sdl_mouse_create();
- lvMouseWheel = lv_sdl_mousewheel_create();
- lvKeyboard = lv_sdl_keyboard_create();
-
- /* create Widgets on the screen */
+ /* Create widgets on the screen */
lv_demo_widgets();
-
- Uint32 lastTick = SDL_GetTicks();
- while(1) {
- SDL_Delay(5);
- Uint32 current = SDL_GetTicks();
- lv_tick_inc(current - lastTick); // Update the tick timer. Tick is new for LVGL 9
- lastTick = current;
- lv_timer_handler(); // Update the UI-
+ while (1) {
+ lv_timer_handler();
+ lv_delay_ms(5);
}
return 0;
}
-Using an IDE
-------------
+When building for 32-bit architecture, add the following workaround at the beginning of ``main``:
-LVGL with SDL has been ported to various IDEs.
+.. code-block:: c
-- `Eclipse with SDL driver `__: Recommended on Linux and Mac, supports CMake as well
-- `VSCode with SDL driver `__: Recommended on Linux (SDL) and Mac (SDL)
-- `Generic Linux `__: CMake based project where you can easily switch between fbdev, DRM, and SDL.
+ // Workaround for SDL2 `-m32` crash
+ // https://bugs.launchpad.net/ubuntu/+source/libsdl2/+bug/1775067/comments/7
+ #ifndef WIN32
+ setenv("DBUS_FATAL_WARNINGS", "0", 1);
+ #endif
diff --git a/docs/src/details/integration/pc/uefi.rst b/docs/src/details/integration/pc/uefi.rst
index afbadfc43c..448298ffed 100644
--- a/docs/src/details/integration/pc/uefi.rst
+++ b/docs/src/details/integration/pc/uefi.rst
@@ -1,47 +1,48 @@
-==========================
-UEFI Display/Inputs driver
-==========================
+====
+UEFI
+====
Overview
---------
+********
-The **UEFI** display/input `driver `__ offers support for using LVGL with UEFI.
+The **UEFI** display/input `driver `__ offers support
+for using LVGL to create UIs in UEFI environments.
Prerequisites
--------------
+*************
-You need the following protocols available:
+You need the following UEFI protocols available:
-* *EFI_LOADED_IMAGE_PROTOCOL_GUID*, for file system support (used to determine the file system that was used to load the application)
-* *EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID*, for file system support
-* *EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID*, for keyboard support
-* *EFI_SIMPLE_POINTER_PROTOCOL_GUID*, for mouse support
-* *EFI_ABSOLUTE_POINTER_PROTOCOL_GUID*, for touch support
-* *EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID*, for drawing
-* *EFI_EDID_ACTIVE_PROTOCOL_GUID*, for drawing (optional)
+- ``EFI_LOADED_IMAGE_PROTOCOL_GUID``: for file system support (used to determine the file system used to load the application)
+- ``EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID``: for file system support
+- ``EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID``: for keyboard support
+- ``EFI_SIMPLE_POINTER_PROTOCOL_GUID``: for mouse support
+- ``EFI_ABSOLUTE_POINTER_PROTOCOL_GUID``: for touch support
+- ``EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID``: for drawing
+- ``EFI_EDID_ACTIVE_PROTOCOL_GUID``: for drawing (optional)
-Configure UEFI driver
-------------------------
+Configuration
+*************
-- Enable the UEFI driver support in lv_conf.h
+1. Enable the UEFI driver support in ``lv_conf.h``:
.. code-block:: c
#define LV_USE_UEFI 1
-- Enable the memory core functions, which are wrappers around AllocatePool and FreePool (using memory of type *EfiBootServicesData*) if you do not wan't to use your own implementations
+- Enable the memory core functions, which are wrappers around ``AllocatePool`` and ``FreePool`` (using memory of type *EfiBootServicesData*) if you do not wan't to use your own implementations
.. code-block:: c
#define LV_UEFI_USE_MEMORY_SERVICES 1
-- You can enable file system support for the file system from which the application got loaded (default letter 'E')
+3. Enable file system support for the volume the application was loaded from (defaults to drive letter ``E``):
.. code-block:: c
#define LV_USE_FS_UEFI 1
-- You need to define an include file which contains the basic UEFI definitions (protocols and types), there are 2 predefined files which can be used for EDK2 and gnu-efi
+4. Include UEFI type definitions. There are predefined includes for EDK2 and GNU-EFI:
.. code-block:: c
@@ -50,7 +51,9 @@ Configure UEFI driver
#define LV_USE_UEFI_INCLUDE
Usage
------
+*****
+
+A minimal example:
.. code-block:: c
@@ -58,45 +61,33 @@ Usage
#include "lvgl/examples/lv_examples.h"
#include "lvgl/demos/lv_demos.h"
- EFI_STATUS EFIAPI EfiMain(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE * SystemTable)
+ EFI_STATUS EFIAPI EfiMain(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
{
lv_uefi_init(ImageHandle, SystemTable);
lv_init();
- if(!lv_is_initialized()) return EFI_NOT_READY;
+ if (!lv_is_initialized()) return EFI_NOT_READY;
- EFI_HANDLE handle = NULL;
- lv_display_t* display = NULL;
- lv_indev_t* indev = NULL;
- lv_group_t* group = NULL;
- lv_obj_t* cursor = NULL;
- // used to get out of the main loop
- size_t counter;
-
- // Init the display
- handle = lv_uefi_display_get_active();
- if(handle == NULL) {
- handle = lv_uefi_display_get_any();
- }
- if(handle == NULL) {
+ EFI_HANDLE handle = lv_uefi_display_get_active();
+ if (!handle) handle = lv_uefi_display_get_any();
+ if (!handle) {
lv_deinit();
return EFI_UNSUPPORTED;
}
- display = lv_uefi_display_create(handle);
+ lv_display_t *display = lv_uefi_display_create(handle);
lv_display_set_default(display);
- // Create the group
- group = lv_group_create();
+ lv_group_t *group = lv_group_create();
lv_group_set_default(group);
- // Create an image that can be used as cursor
- cursor = lv_image_create(lv_layer_top());
+ lv_obj_t *cursor = lv_image_create(lv_layer_top());
lv_image_set_src(cursor, "E:cursor.png");
- // Create the input devices
+ lv_indev_t *indev;
+
indev = lv_uefi_simple_text_input_indev_create();
- lv_indev_set_group(indev, lv_group_get_default());
+ lv_indev_set_group(indev, group);
lv_uefi_simple_text_input_indev_add_all(indev);
indev = lv_uefi_simple_pointer_indev_create(NULL);
@@ -108,10 +99,9 @@ Usage
lv_demo_widgets();
- // Run main loop for ~ 10 seconds
- counter = 0;
- while(counter < 10000) {
- counter ++;
+ size_t counter = 0;
+ while (counter < 10000) {
+ counter++;
gBS->Stall(1000);
lv_tick_inc(1);
lv_timer_handler();
diff --git a/docs/src/details/integration/pc/windows.rst b/docs/src/details/integration/pc/windows.rst
index 086a802211..341bf8ffdd 100644
--- a/docs/src/details/integration/pc/windows.rst
+++ b/docs/src/details/integration/pc/windows.rst
@@ -2,65 +2,120 @@
Windows
=======
-.. https://github.com/lvgl/lv_port_pc_visual_studio
- native windows driver (same as now just make it shorter)
-
Overview
********
-The **Windows** display/input `driver `__ offers support for simulating the LVGL display and keyboard/mouse inputs in a Windows Win32 window.
+LVGL comes with built-in drivers for Windows, covering:
-The main purpose for this driver is for testing/debugging the LVGL application in a **Windows** simulation window via **simulator mode**, or developing a standard **Windows** desktop application with LVGL via **application mode**.
+- Display, mouse, and keyboard support
+- Operating system drivers
-These are the **similarities** between simulator mode and application mode.
+Using these or other drivers, multiple repositories are available to help you get started easily.
+Just follow the README of the repositories listed below.
-- Support LVGL pointer, keypad and encoder devices integration.
-- Support Windows touch input.
-- Support Windows input method integration input.
-- Support Per-monitor DPI Aware (both V1 and V2).
-- Provide HWND-based interoperability for other Windows UI infrastructures.
+Ready-to-Use Projects
+*********************
-These are the **differences** between simulator mode and application mode.
+VSCode
+------
-Simulator Mode
---------------
+LVGL is available for `VSCode `__, a well-known cross-platform code editor.
-- Designed for LVGL device-simulation scenario --- simulates LVGL rendering to a hardware display panel.
-- Keeps LVGL display resolution constant in order to best simulate UI layout which will will be seen in production devices.
-- When Windows DPI scaling setting is changed, Windows backend will stretch display content.
+It uses `SDL `__ to open a window, show the rendered content, and manage mouse and keyboard.
-Application Mode
-----------------
+A ready-to-use LVGL project for VSCode is available at
+https://github.com/lvgl/lv_port_pc_vscode\ .
-- Designed for Windows desktop application-development scenario.
-- Has Window resizing support and LVGL display resolution is changed dynamically.
-- When Windows DPI scaling setting is changed, LVGL display DPI value is also changed.
-- The resolution you set for lv_windows_create_display is the window size instead of window client size for following the convention of other Windows desktop UI infrastructures.
-- The applications based on this mode should adapt the LVGL display resolution changing for supporting window resizing properly.
+The project uses :ref:`build_cmake` to compile LVGL, so it also serves as a CMake example.
+
+This repository also includes built-in FreeRTOS integration, making it easy to test the UI
+with an embedded OS.
+
+Visual Studio
+-------------
+
+`Visual Studio `__ is a comprehensive IDE from Microsoft
+containing all the tools required for development out of the box.
+
+To use LVGL in Visual Studio, visit the
+`lvgl/lv_port_pc_visual_studio `__ repository.
+
+It uses LVGL's built-in Windows drivers to open a window where you can see the LVGL-rendered UI,
+and use your mouse as a touch input replacement.
+
+Eclipse
+-------
+
+The project for `Eclipse CDT `__ also uses `SDL `__.
+It can be found at
+`https://github.com/lvgl/lv_port_pc_eclipse `__.
+
+The project uses :ref:`build_cmake` to compile LVGL and serves as a CMake example.
+
+Windows Driver
+**************
+
+It's also easy to port LVGL to any Windows IDEs or toolchains using either the built-in SDL driver or
+the Windows driver.
+
+To learn more about the SDL driver, visit :ref:`sdl_driver`.
+
+Details of the Windows driver are provided below.
+
+The **Windows** display/input `driver `__
+offers support for simulating the LVGL display and keyboard/mouse inputs in a Windows Win32 window.
+
+Modes
+-----
+
+The main purpose of this driver is for testing/debugging LVGL applications in
+a **Windows** simulation window via **simulator mode**, or developing standard **Windows** desktop
+applications with LVGL via **application mode**.
+
+Both simulator mode and application mode:
+
+- Support LVGL pointer, keypad, and encoder device integration
+- Support Windows touch input
+- Support Windows input method integration
+- Support per-monitor DPI awareness (both V1 and V2)
+- Provide HWND-based interoperability for other Windows UI infrastructures
+
+However, **Simulator Mode**:
+
+- is designed for simulating LVGL rendering on hardware-like displays,
+- keeps LVGL display resolution constant to simulate production UI layouts, and
+- uses Windows DPI scaling to stretch content,
+
+whereas **Application Mode**:
+
+- is designed for native Windows desktop application development,
+- supports dynamic window resizing with corresponding changes to LVGL display resolution,
+- updates LVGL display DPI when Windows DPI changes,
+- uses window size (not client area) when setting resolution via :cpp:func:`lv_windows_create_display`, and
+- requires apps to handle display resolution changes properly.
+
+The mode can be selected by calling :cpp:func:`lv_windows_create_display`.
Prerequisites
-*************
+-------------
The minimum Windows OS requirement for this driver is Windows Vista RTM.
-If you use Windows API shim libraries like `YY-Thunks
-`__, the tested minimum Windows OS
-requirement for this driver is Windows XP RTM.
+If you use Windows API shim libraries like `YY-Thunks `__,
+the tested minimum OS version is Windows XP RTM.
-According to the Windows GDI API this driver used, it is possible the minimum Windows OS
-requirement limitation for this driver is Windows 2000 RTM.
+Due to the use of Windows GDI APIs, the theoretical minimum may be Windows 2000 RTM.
-Configure Windows Driver
-************************
+Usage
+-----
-Enable the Windows driver support in lv_conf.h, by cmake compiler define or by KConfig
+Enable Windows driver support in ``lv_conf.h``, via CMake compiler define, or KConfig:
.. code-block:: c
#define LV_USE_WINDOWS 1
-Usage
-*****
+Once enabled, the Windows driver can be used like this:
.. code-block:: c
@@ -78,35 +133,21 @@ Usage
bool simulator_mode = false;
lv_display_t* display = lv_windows_create_display(
L"LVGL Display Window",
- 800,
- 480,
- zoom_level,
- allow_dpi_override,
- simulator_mode);
- if (!display)
- {
- return -1;
- }
+ 800, 480,
+ zoom_level, allow_dpi_override, simulator_mode);
+
+ if (!display) return -1;
lv_lock();
lv_indev_t* pointer_device = lv_windows_acquire_pointer_indev(display);
- if (!pointer_device)
- {
- return -1;
- }
+ if (!pointer_device) return -1;
lv_indev_t* keypad_device = lv_windows_acquire_keypad_indev(display);
- if (!keypad_device)
- {
- return -1;
- }
+ if (!keypad_device) return -1;
lv_indev_t* encoder_device = lv_windows_acquire_encoder_indev(display);
- if (!encoder_device)
- {
- return -1;
- }
+ if (!encoder_device) return -1;
lv_demo_widgets();
@@ -115,8 +156,9 @@ Usage
while (1)
{
uint32_t time_till_next = lv_timer_handler();
- if(time_till_next == LV_NO_TIMER_READY) time_till_next = LV_DEF_REFR_PERIOD; /*handle LV_NO_TIMER_READY. Another option is to `sleep` for longer*/
- lv_delay_ms(time_till_next);
+ // handle LV_NO_TIMER_READY. Another option is to always sleep a few milliseconds
+ if(time_till_next == LV_NO_TIMER_READY) time_till_next = LV_DEF_REFR_PERIOD;
+ lv_sleep_ms(time_till_next);
}
return 0;