1 unstable release
0.1.0 | Feb 21, 2024 |
---|
#337 in Graphics APIs
11KB
196 lines
Shelldraw
This allows for the user to create a drawing on the command line, by invoking several building commands procedurally.
For example, this will create a series of concentric squares, with the word "hello" starting directly in the center.
# [r][c]
shelldraw init 11 11
# x1 y1 x2 y2 color
shelldraw rect 0 0 10 10 red
shelldraw rect 1 1 9 9 green
shelldraw rect 2 2 8 8 blue
shelldraw rect 3 3 7 7 red
shelldraw rect 4 4 6 6 green
shelldraw rect 5 5 5 5 blue
# x y text
shelldraw text 5 5 hello
shelldraw show
Output
The output of the previous command is hard to show in a readme, because it prints out ansi excape characters. I've base64 encoded the output so that you can see what it looks like though.
echo \
G1s0MW0gG1swbRtbNDFtIBtbMG0bWzQxbSAbWzBtG1s0MW0gG1swbRtbNDFtIBtbMG0bWzQxbSAb\
WzBtG1s0MW0gG1swbRtbNDFtIBtbMG0bWzQxbSAbWzBtG1s0MW0gG1swbRtbNDFtIBtbMG0KG1s0\
MW0gG1swbRtbNDJtIBtbMG0bWzQybSAbWzBtG1s0Mm0gG1swbRtbNDJtIBtbMG0bWzQybSAbWzBt\
G1s0Mm0gG1swbRtbNDJtIBtbMG0bWzQybSAbWzBtG1s0Mm0gG1swbRtbNDFtIBtbMG0KG1s0MW0g\
G1swbRtbNDJtIBtbMG0bWzQ0bSAbWzBtG1s0NG0gG1swbRtbNDRtIBtbMG0bWzQ0bSAbWzBtG1s0\
NG0gG1swbRtbNDRtIBtbMG0bWzQ0bSAbWzBtG1s0Mm0gG1swbRtbNDFtIBtbMG0KG1s0MW0gG1sw\
bRtbNDJtIBtbMG0bWzQ0bSAbWzBtG1s0MW0gG1swbRtbNDFtIBtbMG0bWzQxbSAbWzBtG1s0MW0g\
G1swbRtbNDFtIBtbMG0bWzQ0bSAbWzBtG1s0Mm0gG1swbRtbNDFtIBtbMG0KG1s0MW0gG1swbRtb\
NDJtIBtbMG0bWzQ0bSAbWzBtG1s0MW0gG1swbRtbNDJtIBtbMG0bWzQybSAbWzBtG1s0Mm0gG1sw\
bRtbNDFtIBtbMG0bWzQ0bSAbWzBtG1s0Mm0gG1swbRtbNDFtIBtbMG0KG1s0MW0gG1swbRtbNDJt\
IBtbMG0bWzQ0bSAbWzBtG1s0MW0gG1swbRtbNDJtIBtbMG0bWzBtG1swbWgbWzBtG1swbRtbMG1l\
G1swbRtbMG0bWzBtbBtbMG0bWzBtG1swbWwbWzBtG1swbRtbMG1vG1swbRtbNDFtIBtbMG0KG1s0\
MW0gG1swbRtbNDJtIBtbMG0bWzQ0bSAbWzBtG1s0MW0gG1swbRtbNDJtIBtbMG0bWzQybSAbWzBt\
G1s0Mm0gG1swbRtbNDFtIBtbMG0bWzQ0bSAbWzBtG1s0Mm0gG1swbRtbNDFtIBtbMG0KG1s0MW0g\
G1swbRtbNDJtIBtbMG0bWzQ0bSAbWzBtG1s0MW0gG1swbRtbNDFtIBtbMG0bWzQxbSAbWzBtG1s0\
MW0gG1swbRtbNDFtIBtbMG0bWzQ0bSAbWzBtG1s0Mm0gG1swbRtbNDFtIBtbMG0KG1s0MW0gG1sw\
bRtbNDJtIBtbMG0bWzQ0bSAbWzBtG1s0NG0gG1swbRtbNDRtIBtbMG0bWzQ0bSAbWzBtG1s0NG0g\
G1swbRtbNDRtIBtbMG0bWzQ0bSAbWzBtG1s0Mm0gG1swbRtbNDFtIBtbMG0KG1s0MW0gG1swbRtb\
NDJtIBtbMG0bWzQybSAbWzBtG1s0Mm0gG1swbRtbNDJtIBtbMG0bWzQybSAbWzBtG1s0Mm0gG1sw\
bRtbNDJtIBtbMG0bWzQybSAbWzBtG1s0Mm0gG1swbRtbNDFtIBtbMG0KG1s0MW0gG1swbRtbNDFt\
IBtbMG0bWzQxbSAbWzBtG1s0MW0gG1swbRtbNDFtIBtbMG0bWzQxbSAbWzBtG1s0MW0gG1swbRtb\
NDFtIBtbMG0bWzQxbSAbWzBtG1s0MW0gG1swbRtbNDFtIBtbMG0K | base64 --decode
Next steps
Colored rectangles and text are the basis of graphics, so we can go pretty far with just these 2 things. There's more that can be done though:
- adding additional colors
- adding in lines, circles, and other shapes (rounded rects, triangles)
Dependencies
~0.7–1.6MB
~34K SLoC