Sparklet's Standard Widget Toolkit provides 36+ performance-optimised, ready-to-use UI widgets for MCU and MPU display applications. Build instrument clusters, HMI panels, medical monitors, and consumer appliances without writing a single rendering primitive — drag-and-drop in Flint UI Designer and deploy directly to hardware.
A standard widget toolkit is a library of pre-built, reusable UI components — buttons, meters, graphs, sliders, progress bars, carousels, and more — that an embedded GUI framework provides out of the box. Instead of writing rendering code for every UI element from scratch, developers configure and combine widgets through a high-level API. Sparklet's standard widget toolkit includes 36+ widgets across four categories: Input & Control, Display & Data Visualisation, Navigation & Selection, and Layout & Containers. All widgets are written in pure C, MISRA C compliant, and accelerator-aware — they route rendering operations to DMA2D, D/AVE2D, or Mali GPU automatically when available on the target hardware.
Widgets are the primary productivity multiplier of any embedded GUI framework. The Flint UI Designer lets you place and configure widgets visually on a WYSIWYG canvas and export production C code in a single click — no manual widget initialisation code required.
Browse Sparklet's widget library by category. All widgets are configurable via Flint UI Designer without writing initialisation code.
These widgets provide the foundational structure for organising your user interface. They act as parents and containers, controlling how child widgets are positioned, layered, and scrolled.
The essential container for managing multiple child widgets. Position and layer elements with pixel-perfect control, creating static layouts, headers, or footers. All child coordinates are relative to the FixedView origin, making it simple to build composite screen panels.
Create engaging, swipeable showcases for products, features, or images. Supports both horizontal and vertical orientations with fluid animations to capture user attention. Commonly used in consumer appliances and home automation panels for feature category browsing.
Enable scrolling for content that exceeds the screen size. ScrollView is a fundamental container that houses a single child widget and provides smooth vertical or horizontal scrolling. Contains three internal sub-widgets: two ScrollBars and a Viewport. Supports both touch-drag and programmatic scroll.
Display items sequentially, either vertically or horizontally. Perfect for menus, contact lists, or settings pages. Comes with built-in styles for solid colour, transparent, or image-based backgrounds. Supports item selection events and programmatic scrolling to a specific item index.
Additional container and shell widgets: GridView for uniform tile layouts; Holder for framework-internal widget grouping; Viewport for clipped sub-canvas regions; Window as the top-level screen container; Dialog for modal pop-up interactions; MsgBox for brief non-blocking notifications.

Interactive elements that allow users to control the application. All input widgets support configurable visual states (idle, pressed, focused, disabled) and fire typed events that the application handles via state machine or direct callback.
The classic action-oriented button designed to trigger a specific, immediate function when pressed or clicked. Ideal for Start, Stop, Save, Confirm, or screen-navigation actions. Fully customisable appearance with text, icon, and distinct visual feedback states for each interaction phase.
Used when a user must select only one option from a mutually exclusive set. When a radio button in a group is selected, the previously selected button is automatically deselected. Essential for settings pages, configuration menus, and mode selection (language, measurement unit, operational mode).
A stateful control that switches between two distinct states (On/Off, Active/Inactive) with each press. Unlike a push button, a toggle button retains its state until pressed again. Perfect for enabling or disabling features such as Wi-Fi, Bluetooth, Mute, or light/dark mode. Unique visuals configurable per state.
Allows users to select a value from a continuous range by dragging a handle along a track. Ideal for adjusting settings like volume, brightness, or temperature. Supports horizontal and vertical orientations. Fires four event sub-types: DRAG_START, DRAG, DRAG_END, and VALUE_CHANGE for fine application integration.
Rotary Knob: skeuomorphic control mimicking physical dials — ideal for audio equalisers and thermostat interfaces. Edit Box: text input with integrated OSK support. On-Screen Keyboard: customisable QWERTY or numeric keyboard, available as default templates. CheckBox: boolean toggle with label. SwipeButton: confirm-by-swipe action. StepInput: increment/decrement control for bounded integer values.

Widgets designed to present information to the user — from static labels and images through real-time graphs and animated clock faces. All display widgets support dirty-region invalidation so that only changed pixels are redrawn each frame.
A powerful tool for visualising data. Renders real-time or historical data as Line Charts, Bar Graphs, or Range Graphs. Highly customisable axes, labels, and data series make it suitable for medical monitors (ECG traces, vitals history), industrial dashboards (temperature trending, process variables), and fitness trackers.
A classic circular control for displaying a value within a range — speedometers, tachometers, pressure gauges, and battery level indicators. Customise needle style, tick marks, colour zones, and graduation labels. Commonly used in automotive instrument clusters and industrial HMI panels. Hardware-accelerated arc rendering on D/AVE2D and DMA2D platforms.
Indicates the status of a task or value relative to a defined range. Supports Linear (horizontal/vertical) and Circular variants. Animated value transitions interpolate smoothly from current to target over a configurable duration. Used for file downloads, installation progress, dose delivery (medical), and battery charge level (consumer).
Display static or dynamic alphanumeric text with advanced overflow handling: Clip, Ellipsis, and Marquee (auto-scrolling text). Supports text rotation for vertical label orientations. TextArea renders multi-line HTML-like content with font size and colour mixing. Both widgets support Unicode including pre-shaped Arabic RTL text from Flint.
ImageHolder: displays static or dynamic PNG/JPG/BMP images with transparency support. Clock: fully customisable analogue clock with configurable hands, dial face, and tick marks — supports both real-time and application-driven time values. BusyIndicator: animated spinner for background task feedback. DotNavigator: pagination indicator dots for carousel and multi-screen navigation.

Widgets for navigating between screens, selecting items from lists, and organising content into tabs. These widgets work closely with the Sparklet state machine layer to implement multi-screen navigation flows without manual screen-switch code.
A container that presents multiple content panes with a tab header row. Selecting a tab switches the visible pane without a full screen transition. Used for settings pages with multiple categories, product information panels, and instrument cluster multi-view dashboards.
A scrollable list of selectable text or image items. ListBox fires a SELECTION_CHANGE event when the user selects an item. Supports single-selection mode. Used in configuration screens, file browsers, and menu-driven navigation flows.
A collapsed selection control that expands into a drop-down item list on activation. Space-efficient alternative to a full ListBox for small display areas. Supports both touch-tap and rotary-encoder input for selection confirmation.
A hierarchical menu widget supporting multi-level navigation trees. Items can be nested to any depth; selecting a parent item expands its child list. Menu integrates directly with the Sparklet state machine for automatic screen-transition events on item selection.
TaskBar: persistent application launcher or status bar with icon slots. WheelPicker: scrolling drum/picker control (time, date, numeric value selection) with inertia animation and snap-to-value. 3DWidget: renders an imported .obj or .fbx 3D model inline in a 2D screen. 3DView: full OpenGL ES 3D scene container on MPU targets. Keyboard: configurable on-screen keyboard host widget.

| Widget | Category | Key Properties | Events | HW Accel |
|---|---|---|---|---|
| Button (Push/Toggle/Radio) | Input | Label, icon, states | PRESS, RELEASE, TOGGLE | DMA2D / D/AVE2D |
| Slider | Input | Min, max, step, orientation | DRAG_START, DRAG, DRAG_END | DMA2D / D/AVE2D |
| RotaryKnob | Input | Min, max, step, angle range | VALUE_CHANGE | D/AVE2D (arc) |
| Meter (Dial/Gauge) | Display | Min, max, zones, needle style | VALUE_CHANGE | D/AVE2D, DMA2D |
| Graph | Data Viz | Line/Bar/Range, axes, series | DATA_PUSH | DMA2D / D/AVE2D |
| ProgressBar | Display | Linear/Circular, fill direction | VALUE_CHANGE | DMA2D / D/AVE2D |
| Clock | Display | Hands, dial face, tick marks | TIME_UPDATE | D/AVE2D (anti-alias) |
| CarouselView | Container | H/V orientation, item count | SWIPE, ITEM_SELECT | DMA2D (blit) |
| ScrollView | Container | H/V scroll, momentum | SCROLL, SCROLL_END | DMA2D (blit) |
| 3DWidget | Advanced 3D | .obj/.fbx model, material | TOUCH_3D | OpenGL ES / Vulkan |
| WheelPicker | Navigation | Item list, visible rows, snap | VALUE_CHANGE | DMA2D (blit) |
| ListView | Navigation | H/V type, 3 background styles | ITEM_SELECT, SCROLL | DMA2D (blit) |

Widgets are parent-child composable — a FixedView can contain Buttons, Labels, ImageHolders, and Graphs in any combination. No layout engine constraints. Coordinates are pixel-absolute, matching hardware display specifications exactly.

Every widget property — colour, font, image asset, border style, animation timing — is configurable via Flint UI Designer or the C API. Themes can be switched at runtime without a code rebuild, enabling multi-brand product variants from a single binary.

Widgets fire typed events (PRESS, DRAG, VALUE_CHANGE, SWIPE) that the application handles via Sparklet's hierarchical state machine or direct callback registration. No polling loops. Event data includes the source widget ID and current value, simplifying state machine guard conditions.

All rendering-heavy operations — alpha blending, image blit, fill, gradient, arc draw — are routed through the GDI to hardware acceleration APIs when available. The same widget binary runs correctly on software-renderer MCUs and hardware-accelerated platforms without code changes.
Sparklet includes 36+ pre-built widgets covering four categories: Input & Control (Button, Slider, RotaryKnob, CheckBox, TextEdit, SwipeButton, StepInput), Display & Data (Static, TextArea, ImageHolder, Graph, Meter, ProgressBar, Clock, BusyIndicator), Navigation & Selection (ListBox, ListView, ComboBox, Menu, Tab, TaskBar, WheelPicker, DotNavigator), and Layout & Containers (Window, Dialog, Holder, ScrollView, Viewport, FixedView, GridView, Carousel, MsgBox, 3DWidget, 3DView, Keyboard, KeyboardKey, CustomWidget). All 36+ widgets are available in the evaluation package.
Request a free Sparklet evaluation package — 36+ widgets, Flint UI Designer, sample projects for all platforms, and API documentation. No hardware required to start.