A VIMPA é um rasterizador 2D simples, baseado (por enquanto, pelo menos) na biblioteca EGD. Os primitivos disponíveis incluem linhas, retângulos, arcos, polígonos e suporte simples de fonte de bitmap. O despejo do bitmap resultante é suportado em algumas formas, incluindo um formato de escala de cinza de 4 bits, conforme usado por dispositivos como exibições OLED baseadas em SSD1322.
A biblioteca se inclina fortemente no EGD por enquanto, mas a intenção eventual é implementar uma loja de apoio de modo retido otimizado usando algo como uma mesa de binários para fornecer composição / dumping de desempenho.
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 )renderizará a seguinte imagem:

Este pacote pode ser instalado adicionando ex_paint e egd à sua lista de dependências no mix.exs :
def deps do
[
{ :ex_paint , "~> 0.2.0" } ,
{ :egd , github: "erlang/egd" }
]
endOs documentos podem ser encontrados em https://hexdocs.pm/ex_paint.
Para facilitar a instalação, este pacote inclui o conteúdo desta coleção de fontes na pasta /priv/fonts/ .