A lightweight framebuffer HTML renderer with C instead of JS for ultra-fast touch apps: UXMux!

I wanted to post this work we did: UXMux!

https://github.com/circuitandcode/uxmux

Here is a demo: https://youtu.be/pwHVf08JeU4

UXMux is a framebuffer implementation of liteHTML. It loads images (pngs), text and custom fonts, supports basic CSS/position and links! This is a faster, lighter weight, easier to maintain, easier to use alternative to QT and Electron.

It also allows you to embed C programs as if they’re javascript (it doesn’t support javascript).

`

`

and call the function with

<a href="FILENAME.elf" target="functioname" type="function/static">

It’s mostly at a proof of concept stage but it’s very organized and you may find it useful.

It needs modifications to better support touch, although mouse has worked (although as needed to be tuned per system)
Apparently, there were some color issues on the BBB, please feel free to post here with your results if you’d like some input.

We’re accepting pull requests and will likely have testing set up for our own purposes!

I wanted to post this work we did: UXMux!

https://github.com/circuitandcode/uxmux

Here is a demo: https://youtu.be/pwHVf08JeU4

UXMux is a framebuffer implementation of liteHTML. It loads images (pngs), text and custom fonts, supports basic CSS/position and links! This is a faster, lighter weight, easier to maintain, easier to use alternative to QT and Electron.

It also allows you to embed C programs as if they’re javascript (it doesn’t support javascript).

`

`

and call the function with

<a href="FILENAME.elf" target="functioname" type="function/static">

It’s mostly at a proof of concept stage but it’s very organized and you may find it useful.

It needs modifications to better support touch, although mouse has worked (although as needed to be tuned per system)
Apparently, there were some color issues on the BBB, please feel free to post here with your results if you’d like some input.

We’re accepting pull requests and will likely have testing set up for our own purposes!

Thanks for sharing on the list!

I’ve got a simple project in mind where I plan to use a PocketBeagle, SPI LCD and a few buttons as a remote control for my BlueDonkey autonomous RC car (https://github.com/jadonk/BlueDonkey). This looks like it could be a great way to view the captured webcam and add control signals.

I wanted to post this work we did: UXMux!

https://github.com/circuitandcode/uxmux

Here is a demo: https://youtu.be/pwHVf08JeU4

UXMux is a framebuffer implementation of liteHTML. It loads images (pngs), text and custom fonts, supports basic CSS/position and links! This is a faster, lighter weight, easier to maintain, easier to use alternative to QT and Electron.

It also allows you to embed C programs as if they’re javascript (it doesn’t support javascript).

`

`

and call the function with

<a href="FILENAME.elf" target="functioname" type="function/static">

It’s mostly at a proof of concept stage but it’s very organized and you may find it useful.

It needs modifications to better support touch, although mouse has worked (although as needed to be tuned per system)
Apparently, there were some color issues on the BBB, please feel free to post here with your results if you’d like some input.

We’re accepting pull requests and will likely have testing set up for our own purposes!

Thanks for sharing on the list!

I’ve got a simple project in mind where I plan to use a PocketBeagle, SPI LCD and a few buttons as a remote control for my BlueDonkey autonomous RC car (https://github.com/jadonk/BlueDonkey). This looks like it could be a great way to view the captured webcam and add control signals.

Seems there is a lot of code inside uxmux.h and that seems odd to me.

I ran into an issue building natively on BeagleBone/PocketBeagle using the Debian images:

sudo apt-get update
sudo apt-get install cmake libfreetype6-dev libpng-dev

git clone https://github.com/circuitandcode/uxmux

cd uxmux
make

g++ -o build/uxmux main.o -Wl,-Map=build/uxmux.map,–cref -s -v -nodefaultlibs -lc -ldl -lstdc++ -lgcc_s -Wl,-t -Llib/litehtml/ -llitehtml pkg-config --libs freetype2 pkg-config --libs libpng
) ; then : ; else echo “FAILURE: Running ‘make clean_all && make’ may solve the problem.” ; fi
In file included from main.cpp:1:0:
uxmux.h:30:6: error: ‘void uxmux_container::render(litehtml::uint_ptr, litehtml::document::ptr, uxmux_container*, fb_var_screeninfo*, fb_fix_screeninfo*, litehtml::uint_ptr, int, int, unsigned char, bool)’ cannot be overloaded
void render(litehtml::uint_ptr hdc, litehtml::document::ptr doc, uxmux_container* painter, struct fb_var_screeninfo* vinfo, struct fb_fix_screeninfo* finfo, litehtml::uint_ptr hdcMouse, int x, int y, unsigned char click_ie, bool redraw) {
^~~~~~

FYI:

debian@pocket-6e3b:/var/lib/cloud9/uxmux$ pkg-config --modversion libpng freetype2
1.6.28
18.3.12

debian@pocket-6e3b:/var/lib/cloud9/uxmux$ cmake --version
cmake version 3.7.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

debian@pocket-6e3b:/var/lib/cloud9/uxmux$ gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516
Copyright © 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Thanks for testing it! I felt it would be a waste to let this project collect dust unreleased. Since there’s interest, my colleague and I will get a test board going and possibly refactor it- it will probably take a few days to get to it but we’ll ping you here once it’s done. If I’m feeling particularly ambitious I may get a resistive TFT going with it.

I’ll ping the thread again when if we’ve been able to address the issue.