GUIslice

GUIslice drag & drop embedded GUI in C for touchscreen TFT on Arduino, Raspberry Pi, ARM, ESP8266 / ESP32 / M5stack using Adafruit-GFX / TFT_eSPI / UTFT / SDL

MIT License

Stars
1.2K
Committers
23

Bot releases are hidden (Show)

GUIslice - Release v0.17.0 Latest Release

Published by ImpulseAdventure about 3 years ago

This release is a major roll-up of many incremental enhancements.

Note that the Builder is separately downloaded from the GUIslice-Builder repo

Changes since 0.16.0:

  • 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 (IRQ mode #369)
  • 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
  • Fix: ToggleImgButton #325
  • Fix: Screen invalidation upon background color change
  • Fix: Compilation warnings
  • Fix: LINUX compilation (rClipRect)

Migration Notes:

  • None
GUIslice - Release v0.16.0

Published by ImpulseAdventure almost 4 years ago

This release is a major roll-up of many incremental enhancements.
Note that the Builder is separately downloaded from the GUIslice-Builder repo

Changes since 0.15.0:

  • Enhance: Utilize fast TFT_eSPI clip / viewport rendering (#274)
  • Enhance: Major updates for XKeypad (#255), support of custom keyapds.
  • Add: Support for PlatformIO
  • Add: transparency in image draw from RAM (#253)
  • Add: new configs (LCDGFX #248, ILI9226, SDL2)
  • Change: Removed GUIslice_config_ard/linux.h
  • Fix: transparent text (#273)
  • Fix: pgmspace compatibility (#248)
  • Fix: compiler warnings (#248,
  • Fix: toggle button rounded corners, swap left/right (#271)
  • Fix: GFX font offset (#277)
  • Fix: XGraph math ranges (#285)
  • Fix: GSLC_LOCAL_STR mode

Migration Notes:

  • Changes to the XKeyPad API may require updates to existing sketches that utilize the widget. Please refer to the XKeyPad Migration Notes for details.
GUIslice - Release v0.15.0

Published by ImpulseAdventure about 4 years ago

This release is a major roll-up of many incremental enhancements.
Note that the Builder is separately downloaded from the GUIslice-Builder repo

Changes since 0.14.0:

  • 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
  • Fix: color conversion #219
  • Fix: XSlider range #238
  • Fix: pin-sharing with 4-wire touch (Due, Nano 33 IOT)
  • Fix: compilation warnings
  • Enhance: optimize redraw for ElemSetCol, ElemSetGlowCol
  • Change: API for XCheckbox to always return its ID #244 (see migration notes)
  • Enhance: debug messaging for element creation

Migration notes

  • A minor breaking change was added to XCheckbox (for #244). 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.
GUIslice - Release v0.14.0

Published by ImpulseAdventure over 4 years ago

This release is a major roll-up of many incremental enhancements.
Note that the Builder is separately downloaded from the GUIslice-Builder repo

Changes since 0.13.0.3:

  • 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)
  • Fix: XRingGauge issues #171, #172
  • Fix: XTextbox background #202
  • Fix: SD include error #182
  • Fix: documentation updates
  • Fix: Nano IOT 33 #211
  • Fix: redraw for FLASH-based elements
  • Fix: 4-wire touch for Due #216
  • Fix: Waveshare_ILI9486 (font #173, rotation)
GUIslice - Release v0.13.0.3

Published by ImpulseAdventure about 5 years ago

This hotfix mainly updates the Builder to address issues in Windows installation, Adafruit-GFX fonts and XRingGauge

Important Note re: Builder binaries

Builder binaries are no longer attached to the GUIslice release notes. Instead, please find the latest versions attached to the GUIslice-Builder release notes. The version found below (Builder 0.13.0.3) is no longer the latest.

Builder Bug Fixes

  • 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 (Issue 28) Compilation error in Adafruit-GFX.h fonts include typo
  • B111 (Issue 26) Compilation error: gslc_ElemXRingGaugeSetAngleRange(..., RING-102);

The Builder executables are attached to the release notes under Assets

GUIslice - Release v0.13.0.2

Published by ImpulseAdventure about 5 years ago

This hotfix only updates the Builder to address issues in importing older Builder-generated projects (eg. from 0.11.0)

  • #164 Crash running code generation due to missing tags in .ino or .c files for older projects (B102)
  • Upgrading older project files causes duplicate storage to be assigned (B103)

The updated Builder executables are attached to this release note under Assets

GUIslice - Release v0.13.0.1

Published by ImpulseAdventure about 5 years ago

This hotfix only updates the Builder to address Mac and LINUX issues:

  • #164 Linux target platform gives missing FONT_INCLUDE template (B100)
  • #165 Builder fails to load in mac/os can't find starting class (B101)
GUIslice - Release v0.13.0

Published by ImpulseAdventure about 5 years ago

Release 0.13.0

Changes since 0.12.1:

  • 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:

image

GUIslice - Release v0.12.1

Published by ImpulseAdventure over 5 years ago

Changes since 0.12.0:

  • Fix: TFT_eSPI internal XPT2046 touch handling mode (DRV_TOUCH_TFT_ESPI) #149
  • Fix: HX8357 initialization (DRV_DISP_ADAGFX_HX8357)
  • Change: Adjust DBG_* messaging dependence upon DEBUG_ERR
  • Change: Default text element frame color to gray (match Builder)
  • Add: Configs for STM32

Migration notes:

  • None

Other notes:

  • The GUIslice Builder is currently undergoing a major update and will be revised to include the latest GUIslice features in the next major release. Builder version 0.11.0-rc4 is the latest released Builder at this time.
GUIslice - Release v0.12.0

Published by ImpulseAdventure over 5 years ago

Changes since 0.11.2:

  • Change: Enhance TFT_eSPI internal touch to support dynamic rotation, calibration #143
  • Change: Optimizing redraw with invalidated regions
  • Add: XRingGauge element #145
  • Add: XKeyPad element #5
  • Add: support for rounded buttons / round rects #142
  • Add: XSpinner element
  • Add: support for Adafruit Seesaw controller
  • Fix: Resolve 8-bit parallel TFT + 4-wire touch + TFT_eSPI #130
  • Add: support for Teensy #136
  • Add: support for RA8875 display & touch driver (#125 )
  • Add: listbox control (#46)
  • Change: examples use MAX_FONT enum convention and FontSet instead of FontAdd

Migration notes:

  • Recommend user code replace FontAdd() with FontSet() and use MAX_FONT enum (refer to any example)

Other notes:

  • The GUIslice Builder is currently undergoing a major update and will be revised to include the latest GUIslice features in the next release. Builder version 0.11.0-rc4 is the latest released Builder at this time.
GUIslice - v0.11.2

Published by ImpulseAdventure over 5 years ago

Release v0.11.2

Changes since 0.11.0:

  • Change: greatly improved ease for users in adding new GUI elements! #120 .
    • GUIslice_ex has been split into individual elements in /src/elem.
    • New elements can be added without needing to modify the GUIslice library.
  • Add: support for page stacks / multi-page overlays #71
  • Add: initial support for popup dialog boxes #81
  • Add: extensive updates to Builder. Updates captured in #80. Including installer for Mac OS #107
  • Fix: many fixes for XTextbox (including #118)
  • Fix: corrections for XGauge (radial and ramp) for Arduino mode #123
  • Fix: fixed-point math for polar, trig and color blending functions
  • Add: automated versioning system that facilitates easier debug reporting
  • Add: ability to hide/show an element #24
  • Add: ability to enable/disable element touch response (ElemSetClickEn)
  • Add: support for touch calibration with remapped X&Y #113
  • Add: preliminary support for RA8875 display driver #103
  • Add: ability to override mcufriend ID

Migration notes:

  • With the changes to split GUIslice_ex into individual extended elements in /src/elem, users are encouraged to replace the #include "GUIslice_ex.h" with the components used by the user code. Please refer to Including Extended Elements
GUIslice - v0.11.0

Published by ImpulseAdventure over 5 years ago

Release v0.11.0

Changes since 0.10.4:

  • Add: extensive updates to Builder features, installation, user guide and source code (#109). Updates captured in #79 and #80.
  • Add: creation of numerous example configurations (in /configs). Many supported displays and shields now pre-configured according to Table of TFT / OLED shields & breakout boards
  • Change: major simplification of configuration options, now specific to the display/touch combination
  • Change: extensive rewrite of touch & orientation handling (#96, #97, #98, #105), related fixes. Added touch pin detection, calibration and test sketches. Please refer to migration notes below.
  • Add: support for GPIO / keyboard controls (#66), M5stack buttons (#84)
  • Fix: many fixes in TFT_eSPI mode
  • Change: default font for RPi is now NotoMono-Regular
  • Add: support for images in RAM or Flash (#101)
  • Add: support for checkbox / radio button callbacks (#74)
  • Add: startup reporting of version and config modes (can be disabled with INIT_MSG_DISABLE)
  • Add: support for mcufriend (#87)
  • Add: support for HX8357
  • Add: support for HX8347D
  • Add: support for XPT2046_PS (from PaulStoffregen/XPT2046_Touchscreen)
  • Add: support for STM32 from STM, Arduino DUE, Arduino Zero
  • Change: default for fill attribute on ElemCreateBtnImg() / ElemCreateImg() changed to true to improve redraw performance
  • Fix: dynamic image updates (#91)
  • Fix: numerous miscellaneous fixes

Migration notes:

  • Users are strongly encouraged to start using the example configs instead of the legacy GUIslice_config_ard.h or GUIslice_config_linux.h. Please refer to How to Configure GUIslice
  • STM32 users with DRV_TOUCH_XPT2046: Need to select DRV_TOUCH_XPT2046_STM instead.
  • Resistive touch users (DRV_TOUCH_SIMPLE, DRV_TOUCH_STMPE610, DRV_TOUCH_XPT2046*) should run the new touch pin detection and calibration utilities. Please refer to Configuring Touch Support
  • Debug error messaging has now been enabled by default. This can be disabled (to conserve RAM once correct operation is confirmed) by setting DEBUG_ERR set to 1.
GUIslice - v0.10.4

Published by ImpulseAdventure almost 6 years ago

GUIslice Builder:

  • Beta version of the GUIslice Builder desktop application has been added.
  • Binaries for Windows and LINUX are attached to this release note:
    • builder-win64-X.Y.Z.zip
    • builder-linux64-X.Y.Z.tar.gz
    • If multiple versions are listed in the Release Note, select the highest version number
  • Please see GUIslice Builder Documentation for more installation and usage details.

Major changes since v0.10.3:

  • Add: Dynamic rotation GuiRotate() and fixed rotation per GSLC_ROTATE (#73, #72, #70, #55) and example ex17
  • Add: Support for touch orientation via GSLC_TOUCH_ROTATE, simplified configuration
  • Add: Anti-aliased font support for TFT_eSPI mode (#75, #63) and example ex19
  • Add: User touch handler class via DRV_TOUCH_HANDLER (#64) and ex16
  • Change: LINUX examples to use Noto font instead of Droid
  • Add: Parameterization to LINUX Makefile (GSLC_DRV and GSLC_TOUCH)
  • Add: Configuration for resistive touchscreen (DRV_TOUCH_ADA_SIMPLE) now adjusted in main config
  • Fix: Miscellaneous fixes for Arduino, STM32, LINUX
  • Change: Renamed compound element example ex05 to ex18
  • Change: ex05 changed to simplified multi-page demo
  • Change: SDL1 default disabled DRV_SDL_FIX_START workaround

Migration notes:

  • To utilize display rotation feature, config files should be updated.
  • This release adds a number of additional configuration parameters. The GSLC_TOUCH_ROTATE
    parameter is intended to replace the existing ADATOUCH_SWAP_XY, ADATOUCH_FLIP_X, ADATOUCH_FLIP_Y
    parameters.
GUIslice - v0.10.2

Published by ImpulseAdventure about 6 years ago

Major changes since v0.10.0:

  • Add: Add support for multi-line text (via \n) for #40
  • Add: support for STM32 (generic STM32F103) via Arduino_STM32 for #45
  • Add: fill param to ElemXCheckboxCreate_P() to support radio buttons & checkboxes with backgrounds other than black. (Breaking API change)
  • Fix: mem issue with Flash-based text
  • Add: support for foreign characters (UTF-8) in SDL mode for #42
  • Add: support for text updates in Flash buttons (via ElemCreateBtnTxt_P_R)
  • Fix: XTextbox behavior for #41
  • Add: support for foreign characters (UTF-8) in XTextbox for #42
  • Fix: line wrapping in XTextbox
  • Fix: TFT_eSPI with touch disabled for #48

Migration notes:

  • Calls to ElemXCheckboxCreate_P() have added two new params (colFill,bFillEn). Existing programs can insert GSLC_COL_BLACK,true immediately before the radio group parameter (nGroup) to match old default.
GUIslice - v0.10.0

Published by ImpulseAdventure over 6 years ago

Major changes since v0.9.2:

  • Enhancement: significant memory reduction for Arduino, extensive updates to handle GUI elements in Flash #32
  • Modify: streamline user configuration, split Arduino & LINUX
  • Add: support for nRF52
  • Add: support for m5stack
  • Add: support for PCD8544
  • Add: support for simple resistive touchscreen
  • Fix: Miscellaneous fixes

Migration notes:

  • Calls to many APIs may require search & replace for tsElem* to tsElemRef*. Many API calls that didn't previously include tsGui* will now require the addition of the GUI pointer as the first parameter.
  • GUIslice_config.h has now been replaced by two separate configurations, depending on the device platform (ie. GUIslice_config_ard.h and GUIslice_config_linux.h). The parameters within these configurations have changed in some cases, so one should update to the new defaults and then customize as required.
  • LINUX examples moved from /tests to /linux
GUIslice - v0.9.2

Published by ImpulseAdventure over 7 years ago

Release notes for pre-existing release (v0.9.2 on 2018/01/06; changes from 0.9):

  • Add: Support for alternate Adafruit-GFX fonts
  • Add: Support for TFT_eSPI
  • Add: Improved memory consumption for Arduino (including initial support for elements in FLASH).
    See examples in /arduino_min
  • Add: Support for HX8357 display driver
  • Add: Support for XPT2046 touch driver (via TFT_eSPI)
  • Add: Graph control
  • Add: Dynamic screen rotation
  • Fix: Improved support for compiling across device variants
  • Fix: Ramp redraw
  • Fix: Checkbox/radio button glowing
  • Fix: Text height with scaling
  • Fix: Improved touch response handling
  • Fix: DebugPrintf() output of 0

Migration Notes (since v0.9.0):

  • FontAdd() API has changed
  • DrvGetTxtSize() API has changed
  • GUIslice_config.h: Added GSLC_TOUCH_MAX_EVT, ADAGFX_ROTATE
GUIslice - General enhancements

Published by ImpulseAdventure over 7 years ago

  • Change: Extensive updates to config guide spreadsheet (incl Beaglebone Black)
  • Add: Filled circle graphic primitive (gslc_DrawFillCircle())
  • Fix: gslc_DrawLine() for vertical/horizontal optimizations
  • Add: DBG_DRIVER to report SDL debug info
  • Add: Frame update rate reporting in gslc-ex04
  • Change: SDL1.2 now selects SDL_FULLSCREEN mode
  • Change: Touch event handler to be more robust
  • Change: Config adds DRV_SDL_RENDER_ACCEL (select between software and hardware renderer for SDL2). Default to 1.
  • Change: Config defaults DRV_SDL_FIX_START to 0
  • Change: Added math lib dependency (to support upcoming radial control)
  • Fix: Mouse handling in SDL2
  • Fix: Added missing dependency in Makefile
  • Migration Notes (from 0.8.6):
    • Add #define DRV_SDL_RENDER_ACCEL to GUIslice_config.h
    • Add -lm to Makefile linker options

As always, I welcome suggestions, feedback or code contributions! ([email protected])

GUIslice - Enhancements for SDL

Published by ImpulseAdventure over 7 years ago

  • Fix: SDL2 using mouse
  • Fix: SDL2 controls more reponsive
  • Change: SDL2 renderer change for better performance
  • Change: SDL examples now use GSLC_DEV_VID_DRV from GUIslice_config.h to set SDL_VIDEODRIVER
  • Fix: XSlider control tick drawing
  • Change: Makefile added GSLC_LDLIB_EXTRA variable
  • Update: GUIslice config guide spreadsheet updates, including Beaglebone Black
  • NOTE: Beaglebone operation with SDL is not functional in this release. Please use v0.8.7 instead.
  • As always, I welcome suggestions, feedback or code contributions! (guislice @ impulseadventure.com)
GUIslice - Add support for SSD1306 & ST7735

Published by ImpulseAdventure over 7 years ago

  • Add: Support for ST7735 (eg. 0.96" OLED 128x64) using DRV_DISP_ADAGFX_ST7735
  • Add: Support for SSD1306 (eg. 1.44" SPI 128x128) using DRV_DISP_ADAGFX_SSD1306. Fixes
  • Update: GUIslice config guide spreadsheet with more example configurations
  • As always, I welcome suggestions, feedback or code contributions! (guislice @ impulseadventure.com)
GUIslice - General enhancements

Published by ImpulseAdventure over 7 years ago

  • Add: Line element (gslc_ElemCreateLine)
  • Add: Support for capacitive touch (FT6206) on Arduino (DRV_TOUCH_ADA_FT6206)
  • Add: Support for touch axis swap and flipping on Arduino (ADATOUCH_SWAP_XY, ADATOUCH_FLIP_X, ADATOUCH_FLIP_Y)
  • Add: Support for gauge element direction flipping (gslc_ElemXGaugeSetFlip) and improved redraw. Fixed vertical gauge default orientation.
  • Add: Support for GUIslice with LINUX mouse support in DRV_DISP_SDL* (eg. Raspberry Pi with HDMI display) using DRV_SDL_MOUSE_SHOW.
  • Update: Configuration (GUIslice_config.h) updated to use more consistent notation with #define.
  • Add: Added GUIslice config guide (docs/GUIslice_config_guide.xlsx) to demonstrate example CPU / board / display configuration settings.
  • Fix: Fixed error in DRV_TOUCH_SDL mode
  • Migration Notes (from 0.8.3):
    • The following #define should now use an explicit value (1 to enable, 0 to disable): ADAGFX_SPI_HW, ADATOUCH_I2C_HW, ADATOUCH_SPI_HW, ADATOUCH_SPI_SW, DRV_SDL_FIX_START.