Here's how we created the #LVGL Feature Phone UI for #PinePhone @PINE64 on Apache #NuttX RTOS ... By tweaking and testing in a Web Browser!
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?1
Maybe there’s an easier way to build and test #LVGL Apps with #ZigLang and a Web Browser? Let’s experiment and find out!
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?1
Feature Phone UI for #PinePhone ... Like it's 1999!
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?1#feature-phone-ui
Here's how we create #LVGL Buttons in #ZigLang
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?1#call-and-cancel-buttons
How we create #LVGL Containers in #ZigLang
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?1#label-and-button-containers
Creating an #LVGL Label in #ZigLang
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?1#display-label
Here's how we compile our #LVGL App to #WebAssembly ... With #ZigLang Compiler
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?2#run-lvgl-app-in-web-browser
Running #LVGL in the Web Browser with HTML, JavaScript and #WebAssembly Module
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?2#run-lvgl-app-in-web-browser
Handling #LVGL Buttons in #ZigLang
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?3#handle-lvgl-buttons
Our #LVGL App will run in the Web Browser AND on #PinePhone! Thanks to some #ZigLang magic
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?4#works-on-webassembly-and-pinephone
When our #LVGL App is compiled for #WebAssembly ... #ZigLang Compiler imports these modules
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?4#lvgl-for-webassembly
#LVGL in #ZigLang for Apache #NuttX RTOS ... Needs a Custom Logger and Panic Handler
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?4#lvgl-for-nuttx
Compiling our #LVGL App in #ZigLang ... For #PinePhone and Apache #NuttX RTOS
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?5#run-lvgl-app-on-pinephone
We might have a fun new way to build and test #LVGL Apps … First in the Web Browser, then on the Actual Device!
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?5#run-lvgl-app-on-pinephone
Our HTML and JavaScript for running #LVGL in #WebAssembly
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?8#appendix-html-for-lvgl
Here's how we load our #ZigLang #WebAssembly Module in our JavaScript
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?8#load-webassembly-module
How we import #ZigLang #WebAssembly Functions into our JavaScript
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?8#import-zig-functions-into-javascript
Exporting JavaScript Functions to #ZigLang ... Thanks to #WebAssembly
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?8#export-javascript-functions-to-zig
JavaScript Render Loop for our #LVGL App in #WebAssembly
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?8#main-javascript-function
Here's how we init #LVGL with #ZigLang, #WebAssembly and JavaScript
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?10#appendix-initialise-lvgl
Our #LVGL Input Driver in #ZigLang ... And how we worked around the Opaque Type
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?11#appendix-initialise-lvgl-input
To handle Mouse Input in #LVGL #WebAssembly: We capture Mouse Events in JavaScript and pass them to #ZigLang
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?12#appendix-handle-lvgl-input
How we execute #LVGL Background Tasks in our JavaScript Render Loop for #WebAssembly
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?15#appendix-handle-lvgl-timer
Our #LVGL Buttons will wrap around in their LVGL Container with Flex Layout
Article: https://lupyuen.codeberg.page/articles/lvgl4.html?1#container-style