Paint

Make drawings, animations, and games with Gleam!

Package Version Hex Docs

Paint is a tiny embedded domain specific language (inspired by Gloss). Make pictures out of basic shapes then style, transform, and combine them using the provided functions.

Frame 3(2)

import paint

fn main() {
  let my_picture = paint.combine([
    paint.circle(50.0),
    paint.circle(30.0) |> paint.fill(paint.colour_rgb(0, 200, 200)),
    paint.rectangle(100.0, 50.0) |> paint.rotate(angle_deg(30.0)),
    paint.text("Hello world", 20) |> paint.translate_y(-65.0),
  ])

  paint.display_on_canvas(fn(_canvas_config) { my_picture }, "#canvas_id")
}

Want to learn more? Read the docs or browse the visual examples.

Currently, there is only a HTML canvas backend for displaying the pictures. Hopefully, I will have time to add other backends in the future (such as SVG). Feel free to contribute!

Logo

Lucy is borrowed from the Gleam branding page and the brush is made by Delapouite (game icons).

Changelog

The API is considered unstable until a 1.*.* release is published. Changes between versions can be found in the file CHANGELOG.md.

TODOs

Search Document