#graphics #2d


Selection of a single preferred back-end for piet

32 releases

0.6.2 Jan 30, 2023
0.6.0 Nov 25, 2022
0.5.0 Nov 12, 2021
0.4.1 Mar 29, 2021
0.0.2 Feb 22, 2019

#710 in Graphics APIs

Download history 677/week @ 2023-06-07 1466/week @ 2023-06-14 2209/week @ 2023-06-21 1354/week @ 2023-06-28 1710/week @ 2023-07-05 1197/week @ 2023-07-12 1870/week @ 2023-07-19 1783/week @ 2023-07-26 1004/week @ 2023-08-02 1470/week @ 2023-08-09 1562/week @ 2023-08-16 1578/week @ 2023-08-23 1117/week @ 2023-08-30 1804/week @ 2023-09-06 1686/week @ 2023-09-13 1278/week @ 2023-09-20

6,258 downloads per month
Used in 50 crates (13 directly)


5.5K SLoC

automatic backend selection for Piet

piet-common is a crate that chooses an appropriate implementation of the Piet 2D graphics API, for the current platform.

On Windows, the backend will be piet-direct2d, on macOS piet-coregraphics, and on Linux, OpenBSD, FreeBSD and NetBSD piet-cairo. The piet-web backend can be selected with the web feature.


A piet backend appropriate for the current platform.

This crate reexports the piet crate, alongside an appropriate backend for the given platform. It also exposes kurbo, which defines shape and curve types useful in drawing, and image for image manipulation.

The intention of this crate is to provide a single dependency that handles the common piet use-case. If you have more complicated needs (such as supporting multiple backends simultaneously) you should use crates such as piet and piet-cairo directly.

The associated types for brushes, text, and images are exported as type definitions (resolving to concrete types within the backend), so they can be used directly. The text-related types are prefixed with "Piet" to avoid conflict with the text traits that would otherwise have the same name.

Also note that all public types for the specific backend are re-exported, but have their docs hidden here. These types can be useful for platform integration, and also potentially to access extensions specific to the backend. The types documented below can be used portable across all backends.


~100K SLoC