No-nonsense infinite whiteboard, in the suckless tradition.
- multiple types of brushes.
- layers.
- save/load.
- custom palettes
- ... custom anything, really.
- mouse support.
- Rock solid framerate.
- Infinite undo/redo.
- infinite whiteboard with panning.
- Wacom tablet pressure sensitive drawing.
- quick minimap view to view the entire whiteboard at a glance.
- Not written using web tech: ~800 lines of readable c++ code.
- grid background
- Draw points with a fixed time lag, then interpolate thickness of the line from 0 to how wide it should be, offset from the time lag.
- Take a rolling average both backwards and fowards.
Q
: undoW
: redoE
: toggleE
raserR
:R
otate to next color.- lower wacom button + drag: pan.
- upper wacom button: toggle overview. Tap to move to a location in the overview. Tap upper button in overview mode to quit overview without moving.
- Color selection: hover pointer over color in color pot in color palette at bottom row.
- Eraser selection: hover pointer over eraser in color palette at bottom left.
The code uses:
- the EasyTab library to work with Wacom tablets.
- The Milton project as heavy reference on how to work with tablets.
- SDL2 for rendering.
- Cairo-gl for anti aliased vector graphics.
- Spatial hashing to quickly add and delete brush strokes.
- Lazy repainting of the entire frame upon change..
- Wishes to use FastUIDraw for an even faster backend than cairo.
$ mkdir build && cd build && cmake ../ && make -j
$ meson build && cd build && ninja && ./ward