The Artist 2D Canvas Library is an abstraction layer with an API inspired by the HTML5 canvas API. The library presents a lean API modeled after the HTML Canvas 2D Context specification. The API is a not-so-thin layer above various 2D platform-specific and cross-platform 2D "backend" graphics libraries, such as Skia and Quartz-2D.
The Artist library goes beyond the basic HTML5 canvas API with extensions for dealing with text layout and mechanisms for text editing, fonts and font management, path creation and manipulation, and image capture and offscreen graphics.
Check out the develop branch. It's a ground up rewrite of artist with various improvements and new features:
- vcpkg-based build system — replaces the old prebuilt binary branch; Skia and all dependencies managed via vcpkg with a shared R2 binary cache for fast restores
- Cairo backend — HarfBuzz text shaping, software shadow blur, macOS Quartz surface optimisation
- Direct2D backend — native Windows D2D/DirectWrite/WIC, no Skia dependency
- Native Linux hosts — GTK3, Wayland, and X11
- Rope-backed text layout engine — multi-paragraph, incremental edits, O(log n) insert/erase
- Visual regression testing — CIEDE2000 perceptual comparison with complexity-adaptive tiled checks
- Comprehensive CI — all platforms and backends covered, including headless smoke tests
Heads up! This will be merged to master in the near future.
- 13 May 2020: Foundation docs
- 20 March 2020: Initial port for Quartz-2D
- 31 March 2020: Initial port for Skia (MacOS)
- 5 April 2020: Ported to Win32 (SKia)
- 10 April 2020: Ported to Linux GTK3 (Skia)
- 27 April 2020: Started documentation.
Documentation is work in progress. Stay tuned...
Joel got into electronics and programming in the 80s because almost everything in music, his first love, is becoming electronic and digital. Since then, he builds his own guitars, effect boxes and synths. He enjoys playing distortion-laden rock guitar, composes and produces his own music in his home studio.
Joel de Guzman is the principal architect and engineer at Cycfi Research and a consultant at Ciere Consulting. He is a software engineer specializing in advanced C++ and an advocate of Open Source. He has authored a number of highly successful Open Source projects such as Boost.Spirit, Boost.Phoenix and Boost.Fusion. These libraries are all part of the Boost Libraries, a well respected, peer-reviewed, Open Source, collaborative development effort.
Copyright (c) 2014-2023 Joel de Guzman. All rights reserved. Distributed under the MIT License

