Git Product home page Git Product logo

flatten-svg's Introduction

flatten-svg

flatten-svg normalizes SVG shape data into a simplified line segment form suitable for, say, a plotter. All shapes are reduced to line segments, accurate to within a configurable error margin.

Example

Input:

<svg>
  <g transform="translate(10 10)">
    <rect x="0" y="0" width="30" height="10" />
    <path d="M0 0 l10 0 l0 10 l-10 0 Z" />
  </g>
</svg>

Usage:

import {flattenSVG} from 'flatten-svg';

const paths = flattenSVG(svgElement);

Output:

[
  { points: [[10, 10], [40, 10], [40, 20], [10, 20], [10, 10]] },
  { points: [[10, 10], [20, 10], [20, 20], [10, 20], [10, 10]] }
]

Non-browser environments

flatten-svg is compatible with svgdom for use in non-browser environments such as node.js.

import {flattenSVG} from 'flatten-svg';
import {Window} from 'svgdom';
import {readFileSync} from 'fs';

const window = new Window
window.document.documentElement.innerHTML = readFileSync('test.svg')
const paths = flattenSVG(window.document.documentElement)

API

flattenSVG(svgElement[, options])

  • svgElement SVGSVGElement - SVG to flatten.
  • options Object (optional)
    • maxError number - maximum deviation from true shape. Defaults to 0.1.

Returns Line[]

Line

Properties:

  • points ([number, number] & {x: number, y: number})[] - list of points on the line
  • stroke ?string - if present, the stroke property of the line

Points on the line are two-element arrays ([x, y]), but also have .x and .y properties.

flatten-svg's People

Contributors

dependabot[bot] avatar fitzgen avatar nornagon avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.