Why canvas and not SVG? The code is gross, I know you mention it in the comments. It definitely affects who will use your library. If someone is sane about a consistent clean codebase, they would never use this lib. Cool idea and execution though, not trying to knock you.