A lightweight JavaScript library that generates a Goban representation as layered sets of SVG shapes
- Pure functions (no state, no side-effects)
- Scalable to any size without quality loss (SVG!)
- No dependencies
- Any goban size
- CSS styling
- Default themes with plain colors and very light gradients
Generate a SVG sample output from this repository:
node demo/test_19classic_4stones.js > sample.svg
SVGoban may be installed as a NPM package: npm install svgoban --save
"Pseudo-" elements are regular objects with a type attribute matching the target SVG element and other related attributes.
size= a number between9and19color="black"or"white"position= an object containing coordinates and colors as keys and valuesconfig= an object containingsizeandthemeattributesnoMarginandhideMargin= booleanscoordSystem="A1"or"aa"zoom= an object describing either:- [
mode="zone"] a region ("NW"/"NE"/"SE"/"SW") - [
mode="point"] or a center point and a zoom ratio
- [
shapeBackground(noMargin)returns 1 pseudo-square whose area may include the marginshapeGrid(size)returns an array of 2*size pseudo-linesshapeStarPoints(size)returns an array of pseudo-circlesshapeLabels(size, coordSystem)returns an array of 4*size pseudo-textshapeStones(size, positions)returns an array of size*size pseudo-circles (stones and placeholders)shapeStone(size, intersection, color)returns 1 pseudo-circleshapeMarkers(size, markers, positions)returns an array of pseudo-elements drawing triangles, squares,...shapeArea(hideMargin, zoom, size)returns a view box with optional margin and zoom in
defineRadialColors(color)returns gradient colorsThemesis an array of predefined themes:"classic"and"paper"
serialize(config, position, markers)returns a string containing a full SVG goban
