const Size
Size is the canvas edge length; the canvas is Size x Size cells.
Package pixelcanvas is a shared 16x16 pixel canvas: anyone can paint one cell at a time from a fixed 9-colour palette...
Package pixelcanvas is a shared 16x16 pixel canvas: anyone can paint one cell at a time from a fixed 9-colour palette, and the canvas renders in gnoweb as a grid of coloured blocks.
The canvas is a flat [Size*Size]int of palette indices held in realm state — a fixed-size array rather than a tree, because every cell exists from the start and the grid is walked in full on every render. Painting is last-write-wins; the realm keeps who painted each cell and a per-address tally, so the board doubles as a contribution leaderboard.
A stateful app with nothing reusable to extract, so it ships as a lone realm rather than a p/ library + demo pair.
At returns the palette name of the cell at (x, y), or "" when out of bounds.
Paint colours the cell at (x, y) and returns the total number of strokes.
Coordinates are 0-based with (0,0) at the top-left. Colour is a palette name ("red", "blue", …) — see Palette. Painting over an existing cell is allowed: the canvas is last-write-wins, which is the whole point of a shared board.
PainterAt returns the address that last painted (x, y), or "" if untouched.
Palette returns the accepted colour names, comma-separated.
Strokes returns how many paints the canvas has taken.