diagrams backend that renders directly to an HTML5 canvas