A lightweight GUI framework for embedded displays
Design your GUI with a drag & drop builder, then apply the same code to a wide range of displays, libraries and controllers with the cross-platform Arduino framework supporting Windows, OS X and LINUX. Open source MIT license.
Features:
- Pure C library, no dynamic memory allocation
- Widgets: text, images, buttons, checkboxes, radio buttons, sliders, keypad, listbox, radial controls, scrolling textbox / terminal, graphs, etc. plus extensions and multiple pages.
Cross-platform GUIslice Builder application to generate GUI layouts
Platform-independent GUI core currently supports:
- Adafruit-GFX, TFT_eSPI, mcufriend, UTFT, SDL1.2, SDL2.0
Devices:
- Raspberry Pi, Arduino, ESP8266 / NodeMCU, ESP32, M5stack, Teensy 3, Feather M0 (Cortex-M0), nRF52 (Cortex-M4F), LINUX, Beaglebone Black, STM32, Due, etc.
Typical displays:
- PiTFT, Adafruit TFT 3.5" / 2.8" / 2.4" / 2.2" / 1.44", FeatherWing TFT, OLED 0.96", mcufriend, BuyDisplay / EastRising 4.3" 5" 7", Waveshare, 4D Cape
Display drivers include:
- ILI9341, ST7735, SSD1306, HX8347D, HX8357, PCD8544, RA8875, ILI9341_t3, ILI9341_due
- Dynamic display rotation
Touchscreen control including:
- STMPE610, FT6206, XPT2046, 4-wire, tslib, URTouch, Adafruit Seesaw
- GPIO / pin / keyboard / Adafruit Seesaw control for non-touchscreen devices
Homepage
Download
Recent Releases
0.17.010 Oct 2021 15:05
minor feature:
Add: Major update for external GUI navigation (pin, button, encoders) #348.
Add: Calibration for capacitive displays #339, runtime config #363.
Add: Examples for XPeyPad (WIO, M5Stack).
Add: PlatformIO configuration.
Add: Configuration for EastRising 3.5" Capacitive.
Add: Support for ILI9488_JB, SSD1306 (I2C mode), XPT2046.
Add: Changes for Soft SPI (SdFat v2) #320.
Enhance: Consistent GUI control glow / focus / edit schemes.
Enhance: Redraw optimizations #328.
Enhance: TFT_eSPI loadFont optimizations #401.
Enhance: XListbox, support large row counts #380, increased margins.
Enhance: Support 4wire touch on ESP32 #297, STM #411.
Enhance: Reduced memory footprint for trig lookups.
Enhance: XProgress can change color dynamically.
Enhance: XSlider can add snap points.
Enhance: Improved error handling, display alignments.
Change: Renamed some examples to differentiate "pin" control.
Change: Separated m5stack and WIO examples.
ToggleImgButton #325.
Screen invalidation upon background color change.
Compilation warnings.
LINUX compilation (rClipRect).
None.
0.16.009 Nov 2020 06:45
minor feature:
Enhance: Utilize fast TFT_eSPI clip / viewport rendering.
Enhance: Major updates for XKeypad, support of custom keyapds.
Add: Support for PlatformIO.
Add: transparency in image draw from RAM.
Add: new configs (LCDGFX #248, ILI9226, SDL2).
Change: Removed GUIslice_config_ard/linux.h.
transparent text.
pgmspace compatibility.
compiler warnings (#248.
toggle button rounded corners, swap left/right.
GFX font offset.
XGraph math ranges.
GSLC_LOCAL_STR mode.
Changes to the XKeyPad API may require updates to existing sketches that utilize the widget. Please refer to the XKeyPad Migration Notes for details.
0.15.024 Aug 2020 01:25
minor feature:
Enhance: major updates improvements to the Builder (download separately from the GUIslice-Builder repo).
Add: widget: XTogglebtn.
Add: widget: XSeekbar.
Add: Touch driver for RA8875_SUMO.
Add: Display driver support for Wavershare_ILI9486 v2.
Add: dynamic element moves #246.
Add: background redraw for modeless dialogs #227.
Add: dynamic updates for XListbox.
Add: API for XKeyPadInputGet() to return string.
color conversion #219.
XSlider range #238.
pin-sharing with 4-wire touch (Due, Nano 33 IOT).
compilation warnings.
Enhance: optimize redraw for ElemSetCol, ElemSetGlowCol.
Change: API for XCheckbox to always return its ID #244 (see migration notes).
Enhance: demessaging for element creation.
A minor breaking change was added to XCheckbox. This only impacts a minor subset of users that are detecting a checkbox disable event action. If the user code has a checkbox callback function that tests for nSelId == GSLC_ID_NONE and then determines which checkbox was responsible for this event (via pvElemRef), a simpler method is now available: determine the checkbox that triggered an event (via nSelId) and then test the bChecked state.
0.14.023 Apr 2020 17:25
minor feature:
Add: support for Teensy 4.
Add: support for xlatb/RA8876.
Add: support for sumotoy/RA8875.
Add: support for GEVINO_TFT (RA8876).
Add: support for FT5206 touch controller.
Add: support for lexus2k/lcdgfx display driver.
Add: support for mcufriend ID forcing #186.
Add: support for RGB/BGR color mode selection.
Add: BLIT support for load BMP from RAM.
Add: JPEG / BMP images from SPIFFS.
Add: XSpinner button config #199.
Add: extra APIs for ElemCreateTxt_P_R.
Add: extra APIs for XKeyPad.
Change: optimized redraw (checkbox, radio button).
Change: optimized redraw (multiple pages).
XRingGauge, #172.
XTextbox background #202.
SD include error #182.
documentation updates.
Nano IOT 33 #211.
redraw for FLASH-based elements.
wire touch for Due #216.
Waveshare_ILI9486 (font #173, rotation).
0.13.0.310 Sep 2019 03:15
minor feature:
B104 RingGauge: default Flat Color property should be GSLC_COLOR_BLUE_LT4.
B105 RingGauge: RingGauge: default Inactive Color property should be (gslc_tsColor) 0,0,48 .
B106 RingGauge: TFT Simulation incorrectly shows Flat Color property.
B108 RingGauge: codegen invalid API call to ElemXRingGaugeSetColorActiveFlat().
B109 Can't Install GUIsliceBuilder as a NON-Admin user.
B110 () Compilation error in Adafruit-GFX.h fonts include typo.
B111 () Compilation error: gslc_ElemXRingGaugeSetAngleRange(..., RING-102);.
0.13.0.206 Sep 2019 03:15
minor feature:
Add: TFT_eSPI touch enhancements.
Add: XGlowball.
Add: Support for UTFT URTouch.
Add: Support for SdFat (SD SW SPI).
Add: Support for Arduino Due ILI9341_due.
Add: Numerous additional configs.
Add: XListbox support for text justification, auto baseline calc.
Add: Access to native display/touch driver APIs.
Add: DrawFillSector() DrawFillGradSector().
Add: Support for Waveshare_ILI9486.
Add: Example Builder projects to /examples/builder.
Change: Split XGauge into XProgress, XRadial and XRamp.
Change: XRingGauge enhancements.
Change: Example ex02/ex03 no longer terminate.
M5stack init.
Numerous for SD support (#155, etc.).
Element hiding via ElemSetVisible().
sinFX()/cosFX() glitches seen in XRadial.
Redraw for elements in FLASH.
Examples use platform-specific fonts.
Numerous to example configs.
Breaking change: XGauge was split into XProgress, XRadial and XRamp. Please refer to #157 for details.
The GUIslice Builder completed a major update for 0.13.0. The source code has been moved into a separate repository at https://github.com/ImpulseAdventure/GUIslice-builder-source.
0.13.002 Sep 2019 22:02
major feature:
Changes:
- Add: TFT_eSPI touch enhancements (#150)
- Add: XGlowball (#147)
- Add: Support for UTFT URTouch (#151)
- Add: Support for SdFat (SD SW SPI)
- Add: Support for Arduino Due ILI9341_due (#153)
- Add: Numerous additional configs
- Add: XListbox support for text justification, auto baseline calc
- Add: Access to native display/touch driver APIs (#160)
- Add: DrawFillSector() DrawFillGradSector()
- Add: Support for Waveshare_ILI9486
- Add: Example Builder projects to /examples/builder
- Change: Split XGauge into XProgress, XRadial and XRamp (#157)
- Change: XRingGauge enhancements (#162)
- Change: Example ex02/ex03 no longer terminate
- Fix: M5stack init
- Fix: Numerous fixes for SD support (#155, etc.)
- Fix: Element hiding via ElemSetVisible() (#156)
- Fix: sinFX()/cosFX() fix glitches seen in XRadial
- Fix: Redraw for elements in FLASH
- Fix: Examples use platform-specific fonts
- Fix: Numerous fixes to example configs
Migration notes:
- Breaking change: XGauge was split into XProgress, XRadial and XRamp. Please refer to #157 for details.
Other notes:
- The GUIslice Builder completed a major update for 0.13.0. The source code has been moved into a separate repository at https://github.com/ImpulseAdventure/GUIslice-builder-source