Skip to content

LaserWeb/lw.svg-parser

This branch is 7 commits ahead of skarab42/lw.svg-parser:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Apr 11, 2017
e7a524b · Apr 11, 2017

History

70 Commits
Dec 29, 2016
Apr 11, 2017
Dec 10, 2016
Dec 8, 2016
Dec 8, 2016
Dec 20, 2016
Dec 29, 2016
Dec 20, 2016

Repository files navigation

lw.svg-parser

SVG parser for LaserWeb/CNCWeb.

Supported tags

<svg> <title> <desc>
<g> <defs> <use>
<line> <polyline> <polygon>
<rect> <circle> <ellipse>
<path> <image> <text>

Features

  • ViewBox, PreserveAspectRatio
  • Clipping paths with Clipper.js
  • Promise mechanism
  • ES6 / UMD module

Demo

https://lautr3k.github.io/lw.svg-parser/dist/example/

Installation

Using NPM

npm install lw.svg-parser

Using GIT

git clone https://github.com/lautr3k/lw.svg-parser.git
cd svg-parser
npm install

Or download the last build from https://raw.githubusercontent.com/lautr3k/lw.svg-parser/master/dist/lw.svg-parser.js

<script src="./lw.svg-parser.js"></script>
<script>
  var parser = SVGParser.Parser();
</script>

Settings (all are optional)

let settings = {
  includes: ['svg', 'g', 'defs', 'use', 'line', 'polyline', 'polygon', 'rect', 'circle', 'ellipse', 'path', 'title', 'desc', 'image', 'text'],
  excludes: ['#text', '#comment'],
  traceSettings: { // Arc, Bezier curves only
    linear       : true, // Linear trace mode
    step         : 0.01, // Step resolution if linear mode = false
    resolution   : 100,  // Number of segments we use to approximate arc length
    segmentLength: 1     // Segment length
  },
  onTag: tag => {} // Called after a tag is parsed
}

Usages

import Parser from 'svg-parser'

let parser = new Parser(settings)

// <input> must be an raw XML string, XMLDocument, Element or File object
return parser.parse(input).then(tags => {
    console.log('tags:', tags);
    tags.forEach(tag => {
        tag.getPaths()  // return an array of Path objects (all contours + holes)
        tag.getShapes() // return an array of ExPolygons objects from Clipper.js (filled shapes)
    })
})
.catch(error => {
    console.error('error:', error);
});

After the main <svg> tag was parsed you can access this two properties on the parser instance :

parser.editor   // Editor info { name, version, fingerprint }
parser.document // Document info { width, height, viewBox }
                // where viewBox is { x, y, width, height }

About

SVG parser for LaserWeb.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%