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

55 views
Skip to first unread message

a...@autopogo.com

unread,
Oct 1, 2018, 7:05:26 AM10/1/18
to BeagleBoard
I wanted to post this work we did: UXMux!



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

<link type="binary/elf" href="FILENAME.elf">

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!

Jason Kridner

unread,
Oct 1, 2018, 11:30:34 AM10/1/18
to beagl...@googlegroups.com
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.
 

--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups "BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/d4b09b9d-8864-4c49-8242-8ea2e05ca17a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--

Jason Kridner

unread,
Oct 1, 2018, 12:21:53 PM10/1/18
to beagl...@googlegroups.com
On Mon, Oct 1, 2018 at 11:30 AM Jason Kridner <jkri...@beagleboard.org> wrote:
On Mon, Oct 1, 2018 at 7:05 AM <a...@autopogo.com> wrote:
I wanted to post this work we did: UXMux!



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

<link type="binary/elf" href="FILENAME.elf">

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
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 (C) 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.

 
 

--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups "BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/d4b09b9d-8864-4c49-8242-8ea2e05ca17a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
--

a...@autopogo.com

unread,
Oct 1, 2018, 12:34:51 PM10/1/18
to BeagleBoard
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.
Reply all
Reply to author
Forward
0 new messages