Skip to content

zenozeng/svgcanvas

This branch is 77 commits ahead of gliffy/canvas2svg:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d44c3c1 · Jun 11, 2023
Mar 9, 2022
Aug 3, 2022
Jul 15, 2022
Aug 3, 2022
Jun 6, 2021
Mar 9, 2022
Mar 13, 2023
Apr 7, 2022
Feb 4, 2022
Jun 10, 2021
Mar 9, 2022
Mar 9, 2022
Aug 3, 2022
Mar 9, 2022
Feb 4, 2022

Repository files navigation

SVGCanvas

Draw on SVG using Canvas's 2D Context API. A maintained fork of gliffy's canvas2svg.

Demo

https://zenozeng.github.io/svgcanvas/test/

How it works

We create a mock 2d canvas context. Use the canvas context like you would on a normal canvas. As you call methods, we build up a scene graph in SVG.

Usage

import { Context } from "svgcanvas";

const ctx = new Context(500, 500);

// draw your canvas like you would normally
ctx.fillStyle = "red";
ctx.fillRect(100, 100, 100, 100);

// serialize your SVG
const mySerializedSVG = ctx.getSerializedSvg();

Wrapping canvas elements:

import { Context, Element } from "svgcanvas";

const canvas = document.createElement("canvas");
const context2D = canvas.getContext("2d");

// more options to pass into constructor:
const options = {
  height: 2000, // falsy values get converted to 500
  width: 0 / 0, // falsy values get converted to 500
  ctx: context2D, // existing Context2D to wrap around
  enableMirroring: false, // whether canvas mirroring (get image data) is enabled (defaults to false)
  document: undefined, // overrides default document object
};

// Creates a mock canvas context (mocks `context2D` above)
const ctx = new Context(options);

// draw your canvas like you would normally
ctx.fillStyle = "red";
ctx.fillRect(100, 100, 100, 100);

ctx.getSerializedSvg(); // returns the serialized SVG
ctx.getSvg(); // returns the inline svg element

// Creates a mock canvas element (mocks `canvas` above)
const dom = new Element(options);
dom.ctx; // the internal context, via `new Context(options)`
dom.wrapper; // a div with the svg as a child
dom.svg; // the inline svg element

Tests

https://zenozeng.github.io/p5.js-svg/test/

License

This library is licensed under the MIT license.

About

Draw on SVG using Canvas's 2D Context API

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 99.8%
  • Other 0.2%