~evan/bitart

make pretty pictures
add defaults to switch statements to silence warnings
unflip x and y

refs

master
browse  log 

clone

read-only
https://git.d2evs.net/~evan/bitart
read/write
git@git.d2evs.net:~evan/bitart

You can also use your local clone with git send-email.

i got nerdsniped by https://botsin.space/@bitartbot into writing this

#usage

bitart [-g] [-c] [-i] [-w width] [-h height] [-s size] [-o out.png] program
flag effect
-w set the width
-h set the height
-s set both the width and the height
-o set the filename to output to (stdout by default)
-g enable gradient mode
-c enable color
-i invert (does not have effect when combined with -g)

#examples

bitart -o xor_mod9.png "x y ^ 9 %"

bitart -o or_mod7.png "x y | 7 %"

bitart -o stripes.png -s 1024 'x#y#*y100/1+%'

#description

the program is an rpn formula in a little stack based language with the operators

operator input output
^ a b a bitwise xor b
| a b a bitwise or b
& a b a bitwise and b
~ a bitwise not a
! a logical not a
# a number of 1 bits in a
+ a b a plus b
/ a b a divided by b
- a b a minus b
* a b a times b
% a b a modulo b
e a b a to the power of b
= a b 1 if a is equal to b, else 0
> a b 1 if a is greater than b, else 0
< a b 1 if a is less than b, else 0
x the x value of the current pixel
y the y value of the current pixel
h the height of the image
w the width of the image
s a b b a
d a a a
l a b a shifted left b places
r a b a shifted right b places
literal n n

the program is evaluated for each pixel, which is colored depending on whether the result is 0, or if in gradient mode, directly based on the result. in color mode, the program is run once per channel, per pixel.