Elements v1.0 Finally

If there’s something that truly represents my devotion to open source, it’s the Elements GUI library. The work was literally 30 years in the making, from my first foray into the world of C++ in the mid- to late ’90s, when I was an engineer in Japan, writing a GUI library named Pica. It was shelved, then resurrected around 2016 and ported to modern C++, and it was first announced in 2019.

Today, Elements reaches a milestone: v1.0. It’s a modern C++ GUI library, declarative, fine-grained and resolution independent. It runs on macOS, Windows and Linux, and draws with Quartz 2D, Direct2D, Cairo or Skia. It doesn’t own the event loop, so it works inside audio plugins as well as in applications. It’s the face of QPlug, Q’s plugin framework: every QPlug editor is built with Elements. It’s open source, under the MIT License.

Docs: https://cycfi.github.io/elements/
Code: https://github.com/cycfi/elements

Modern C++

  • A Declarative C++20 DSEL: No Visual Editor, No Code Generator
  • Fine-Grained, Composable Elements
  • Models That Bind Values to Controls
  • MIT License

Cross-Platform and Embeddable

  • macOS, Windows and Linux
  • Native Hosts: Cocoa, Win32, GTK 3, X11, Wayland, and Headless
  • Drawing with Quartz 2D, Direct2D, Cairo or Skia, Through Artist
  • Resolution Independent, HiDPI Ready
  • Does Not Own the Event Loop: Plug-ins for Audio Hosts

Layout

  • Tiles, Grids, Flow, Layers, Decks, Margins and Alignment
  • Docking, Splits and Child Windows

Controls

  • Buttons, Check Boxes, Radio Buttons and Switches
  • Sliders, Dials and Thumbwheels
  • Styled Tracks: Gradients, Bands and Glows
  • Marks, Labels and Decibel Scales
  • Curve Editor and Swatches

Text

  • Editable Text: Shaping with HarfBuzz, Clipboard, Undo and Redo
  • Input Methods for Japanese and Other Languages
  • Labels and Icons

Menus, Popups and Interaction

  • Menu Bars, Submenus and Shortcuts
  • Popups, Modals and Tooltips
  • Drag and Drop

Look and Feel

  • Themes and Styles
  • A 2D Canvas in the HTML5 Style, Through Artist

Testing and Learning

  • Test Without a Display: a Headless Host and a Recording Backend
  • Step-by-Step Tutorials and Over 30 Examples
  • The Gallery

 

Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
0
Would love your thoughts, please comment.x
()
x