Expaint adalah rasterizer 2D sederhana, berdasarkan (untuk saat ini, setidaknya) di perpustakaan EGD. Primitif yang tersedia termasuk garis, persegi panjang, busur, poligon, dan dukungan font bitmap sederhana. Pembuangan bitmap yang dihasilkan didukung dalam beberapa bentuk, termasuk format Greyscale 4-bit seperti yang digunakan oleh perangkat seperti tampilan OLED berbasis SSD1322.
Perpustakaan sangat bersandar pada EGD untuk saat ini, tetapi niat akhirnya adalah untuk mengimplementasikan toko backing mode yang dioptimalkan menggunakan sesuatu seperti sepotong binari untuk menyediakan komposit / dumping yang berkinerja.
alias ExPaint . { Font , Color }
{ :ok , image } = ExPaint . create ( 128 , 64 )
font = Font . load ( "Helvetica20" )
ExPaint . clear ( image )
ExPaint . text ( image , { 10 , 30 } , font , "Hello World" , Color . black ( ) )
ExPaint . filled_rect ( image , { 10 , 10 } , { 20 , 20 } , % Color { r: 230 , g: 12 , b: 34 } )
ExPaint . filled_ellipse ( image , { 50 , 10 } , { 20 , 20 } , % Color { r: 12 , g: 12 , b: 230 } )
ExPaint . filled_triangle ( image , { 90 , 30 } , { 100 , 10 } , { 110 , 30 } , % Color { r: 230 , g: 230 , b: 34 } )
# Write to a png
{ :ok , png_data } = ExPaint . render ( image , ExPaint.PNGRasterizer )
File . write ( "foo.png" , png_data )
# If you're in iTerm, display inline
ExPaint . render ( image , ExPaint.InlineRasterizer )
# If you're pairing with https://github.com/mtrudel/ssd1322
{ :ok , four_bit_data } = ExPaint . render ( image , ExPaint.FourBitGreyscaleRasterizer )
SSD1322 . draw ( session , four_bit_data )akan membuat gambar berikut:

Paket ini dapat diinstal dengan menambahkan ex_paint dan egd ke daftar dependensi Anda di mix.exs :
def deps do
[
{ :ex_paint , "~> 0.2.0" } ,
{ :egd , github: "erlang/egd" }
]
endDokumen dapat ditemukan di https://hexdocs.pm/ex_paint.
Untuk kemudahan instalasi, paket ini mencakup isi kumpulan font ini di /priv/fonts/ folder.