2022-03-09 22:49:40 +08:00
2022-03-09 21:52:38 +08:00
2022-03-09 22:49:40 +08:00
2022-03-09 21:50:14 +08:00
2022-02-27 06:08:54 -06:00
2021-06-10 19:36:00 +08:00
2022-03-09 21:50:14 +08:00
2021-06-06 15:46:13 +08:00
2022-03-09 22:33:31 +08:00
2022-03-09 22:33:31 +08:00
2022-03-07 05:57:46 -06:00
2022-03-09 22:49:40 +08:00
2022-02-04 10:05:16 +08:00

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/

CHANGELOG

v2.2.2

  • Delegate getAttribute/setAttribute (Validark) #8

v2.2.1

  • fix(SVGCanvasElement): addEventListener

v2.2.0

v2.1.0

  • feat: SVGCanvasElement(options)
  • feat: options.debug
  • refactor

v2.0.7

  • fix typo
  • rollup 2.67.0

v2.0.6

v2.0.5

v2.0.4

v2.0.3

  • feat: sync element's width and height to context

v2.0.2

  • feat: Implement CanvasTransform Interface, https://github.com/gliffy/canvas2svg/pull/83
  • feat: ClearCanvas in fillRect
  • feat: Element API
  • feat: ESM
  • fix: Recreate root <g> when __clearCanvas to remove all attributes
  • chore: Bundle JavaScript using Rollup
  • chore: GitHub Actions

v1.x

  • v1.0.19 Fix __parseFont to not crash
  • v1.0.18 clip was not working, the path never made it to the clip area
  • v1.0.17 Fix bug with drawing in an empty context. Fix image translation problem. Fix globalAlpha issue.
  • v1.0.16 Add npm publishing support, bower file and optimize for arcs with no angles.
  • v1.0.15 Setup travis, add testharness and debug playground, and fix regression for __createElement refactor
  • v1.0.14 bugfix for gradients, move __createElement to scoped createElement function, so all classes have access.
  • v1.0.13 set paint order before stroke and fill to make them behavior like canvas
  • v1.0.12 Implementation of ctx.prototype.arcTo.
  • v1.0.11 call lineTo instead moveTo in ctx.arc, fixes closePath issue and straight line issue
  • v1.0.10 when lineTo called, use M instead of L unless subpath exists
  • v1.0.9 use currentDefaultPath instead of 's d attribute, fixes stroke's different behavior in SVG and canvas.
  • v1.0.8 reusing __createElement and adding a properties undefined check
  • v1.0.7 fixes for multiple transforms and fills and better text support from stafyniaksacha
  • v1.0.6 basic support for text baseline (contribution from KoKuToru)
  • v1.0.5 fixes for #5 and #6 (with contributions from KoKuToru)
  • v1.0.4 generate ids that start with a letter
  • v1.0.3 fixed #4 where largeArcFlag was set incorrectly in some cases
  • v1.0.2 Split up rgba values set in fill/stroke to allow illustrator import support.
  • v1.0.1 Allow C2S to be called as a function. https://github.com/gliffy/canvas2svg/issues/2
  • v1.0.0 Initial release

License

This library is licensed under the MIT license.

Description
No description provided
Readme MIT 666 KiB
Languages
JavaScript 99.8%
CSS 0.1%