Symmetry Paint

This tool allows you do draw something in symmetry! Not one axis symmetry, but actually a symmetry consisting of arbitrary number of axes!
While this was the main purpose of this tool, it quickly became capable of doing more than just that. After I made initial paint mode, I wanted the user to be able to draw lines which will also be reflected, but at first I forgot to clear the previous line after user has moved the mouse... The result was something way more cool than a line would be. And that's when the "Persistent line" mode was introduced, which did this on purpose.
Then, I wanted to zoom the image, which in raster graphics results in seeing a pixelated image which was not what I wanted, so I've added a Vector mode, which allows zooming, but in fact, the fact that this mode requires a history of shapes enabled me to silently push the ability to change previous shapes' style, move them or delete them.

So, this is completely different from what you've seen, and the behaviour of this app may seem counterintuitive, but after all this makes the app be able to do way more without the need to add extra modes and code.

In vector mode, undo layer / redo layer only affect existence of the shapes, not the transformations on them. That's to provide some edit functionality without drastically extending the application, which could have possibly slowed down it's release. If you want to save your image before doing any transform press Push, then you will be able to restore your image by pressing Pop.

Tip: In vector mode, you can scale/translate via mouse wheel just like in Google Maps.

Working mode: RasterVector

Line width:
Line color:
Line alpha:
Symmetry lines:
Mode: PaintLinePersistent lineErase

Transform mode:
Whole imageLast layer

Rotate by

Board size:
Board bg:
Axis color:
Mouse modulo filter:
Alpha mode:
Line mode:

Write a script!
This section allows you to write a script that will simulate mouse press, move and release. This way you can get a precise image without the need to use an external tool.
Write a script in JavaScript. There are three main functions: press(x, y), move(x, y) and release(). To refer to current symmetry, there's a variable cn, you can also refer to current size using the variables gx and gy. These functions accept coordinates relative to the center of canvas, and they are affected by current settings like mode, scale etc.
You can temporarily change these as well by using an additional API listed below.
+Show additional API

Example presets: