UNPKG

@thi.ng/hiccup-canvas

Version:

Hiccup shape tree renderer for vanilla Canvas 2D contexts

30 lines (29 loc) 895 B
import { TAU } from "@thi.ng/math/api"; const packedPoints = (ctx, attribs, opts, pts) => { let v; if ((v = attribs.fill) && v !== "none") { __drawPoints(ctx, opts, pts, "fill", "fillRect"); } if ((v = attribs.stroke) && v !== "none") { __drawPoints(ctx, opts, pts, "stroke", "strokeRect"); } }; const __drawPoints = (ctx, opts, pts, cmd, cmdR) => { const { start = 0, cstride = 1, estride = 2, size = 1 } = opts; let num = opts && opts.num != null ? opts.num : (pts.length - start) / estride | 0; if (opts.shape === "circle") { for (let i = start; num-- > 0; i += estride) { ctx.beginPath(); ctx.arc(pts[i], pts[i + cstride], size, 0, TAU); ctx[cmd](); } } else { const r = size / 2; for (let i = start; num-- > 0; i += estride) { ctx[cmdR](pts[i] - r, pts[i + cstride] - r, size, size); } } }; export { packedPoints };