Cauldron2D.Easel.Drafter
The atlas editor in the terminal, on drafter: the arts of a directory, and one of them on a zoomed canvas with the palette, the tools and the frames beside it. The pointer paints; every tool and colour has a key.
Installation
def deps do
[
{:cauldron_2d_easel_drafter, "~> 0.1", only: :dev}
]
end
mix cauldron.easel priv/art --tile 16 --atlas my_game
Drafter.run(Cauldron2D.Easel.Drafter, props: %{dir: "priv/art", tile: 16, atlas: :my_game})
A pixel is a block of cells in its colour, so it works in any terminal, over ssh
included. The pointer paints; every tool, colour and frame in the side panel is a
button; ? lists every key on screen. c opens a colour picker — a chart of hues and
greys with the palette under it, chosen with the pointer or the arrows — and adds the
colour under the next free key; i is an eyedropper. With --atlas, w saves and
installs the directory as that atlas, and a game running in the same VM that subscribed
to it (Cauldron2D.Atlas.subscribe/1) redraws with the new art on its next frame.
Beside the canvas the picture is shown at actual size, drawn by the engine's own surface
widget the way a game draws it: through the terminal's graphics protocol (kitty, sixel,
iTerm) where the terminal has one, animated at the picture's rate; as its glyph where it
has not. m tiles it, for a picture meant to repeat. This is what french_curve gives the
editor: the picture as the player will see it, not as blocks of cells.
On the arts screen D derives an art from the one chosen — name = from ART; colour K #rrggbb; flip h; over HAT 0 -2, the line Linocut.Derive reads — kept in atlas.txt
and rebuilt from the drawing every time the atlas loads; y clones one as a picture of its
own. Draw the knight once; the red knight is a line.
Cauldron2D.Easel.Drafter.Canvas is the widget, usable in any drafter application:
{:easel_canvas, [easel: easel, zoom: 4, on_paint: :paint]}.
Cauldron2D.Easel.Drafter.ActualSize is the picture as an installed atlas for a
Cauldron2D.Drafter.Surface to draw.
This is a pixel-art tool: a picture is a palette of up to ninety colours and a grid of
keys, which is what .pic holds and what every renderer draws. A .png with more
colours than that is refused on load rather than quantised.
License
MIT