Package Exports
- svg-shapes
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (svg-shapes) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
DEPRECIATED: Moved to svg-points. All further work will happen over there.
SVG shapes
Get point data from SVG shapes. Convert point data to an SVG path.
1.9kb gzipped. No dependencies.
Shapes supported:
Installation
npm install svg-shapes
Usage
Circle
import { getPoints, toPath } from 'svg-shapes';
const points = getPoints( 'circle', {
cx: 50,
cy: 50,
r: 20,
});
console.log( points );
// [
// { x: 50, y: 30 },
// { x: 50, y: 70, curve: { type: 'arc', rx: 20, ry: 20 }},
// { x: 50, y: 30, curve: { type: 'arc', rx: 20, ry: 20 }},
// ]
const path = toPath( points );
console.log( path );
// 'M50,30A20,20,0,0,0,50,70A20,20,0,0,0,50,30Z'
Ellipse
import { getPoints, toPath } from 'svg-shapes';
const points = getPoints( 'ellipse', {
cx: 100,
cy: 300,
rx: 65,
ry: 120,
});
console.log( points );
// [
// { x: 100, y: 180 },
// { x: 100, y: 420, curve: { type: 'arc', rx: 65, ry: 120 }},
// { x: 100, y: 180, curve: { type: 'arc', rx: 65, ry: 120 }},
// ]
const path = toPath( points );
console.log( path );
// 'M100,180A65,120,0,0,0,100,420A65,120,0,0,0,100,180Z'
Line
import { getPoints, toPath } from 'svg-shapes';
const points = getPoints( 'line', {
x1: 10,
x2: 50,
y1: 70,
y2: 200,
});
console.log( points );
// [
// { x: 10, y: 70 },
// { x: 50, y: 200 },
// ]
const path = toPath( points );
console.log( path );
// 'M10,70L50,200'
Path
import { getPoints, toPath } from 'svg-shapes';
const points = getPoints( 'path', {
d: 'M20,20h50v20A2,2,0,0,1,80,35L90,30H50V50a5,5,45,1,0,-5,-10l-5,-10Z',
});
console.log( points );
// [
// { x: 20, y: 20 },
// { x: 70, y: 20 },
// { x: 70, y: 40 },
// { x: 80, y: 35, curve: {
// type: 'arc',
// rx: 2,
// ry: 2,
// sweepFlag: 1,
// }},
// { x: 90, y: 30 },
// { x: 50, y: 30 },
// { x: 50, y: 50 },
// { x: 45, y: 40, curve: {
// type: 'arc',
// rx: 5,
// ry: 5,
// largeArcFlag: 1,
// xAxisRotation: 45,
// }},
// { x: 40, y: 30 },
// { x: 20, y: 20 },
// ]
const path = toPath( points );
console.log( path );
// 'M20,20H70V40A2,2,0,0,1,80,35L90,30H50V50A5,5,45,1,0,45,40L40,30Z'
Polygon
import { getPoints, toPath } from 'svg-shapes';
const points = getPoints( 'polygon', {
points: '20,30 50,90 20,90 50,30',
});
console.log( points );
// [
// { x: 20, y: 30 },
// { x: 50, y: 90 },
// { x: 20, y: 90 },
// { x: 50, y: 30 },
// { x: 20, y: 30 },
// ]
const path = toPath( points );
console.log( path );
// 'M20,30L50,90H20L50,30Z'
Polyline
import { getPoints, toPath } from 'svg-shapes';
const points = getPoints( 'polyline', {
points: '20,30 50,90 20,90 50,30',
});
console.log( points );
// [
// { x: 20, y: 30 },
// { x: 50, y: 90 },
// { x: 20, y: 90 },
// { x: 50, y: 30 },
// ]
const path = toPath( points );
console.log( path );
// 'M20,30L50,90H20L50,30'
Rect
import { getPoints, toPath } from 'svg-shapes';
const points = getPoints( 'rect', {
height: 20,
width: 50,
x: 10,
y: 10,
});
console.log( points );
// [
// { x: 10, y: 10 },
// { x: 60, y: 10 },
// { x: 60, y: 30 },
// { x: 10, y: 30 },
// { x: 10, y: 10 },
// ]
const path = toPath( points );
console.log( path );
// 'M10,10H60V30H10Z'
Rect (with corner radius)
import { getPoints, toPath } from 'svg-shapes';
const points = getPoints( 'rect', {
height: 200,
rx: 5,
ry: 10,
width: 500,
x: 50,
y: 50,
});
console.log( points );
// [
// { x: 55, y: 50 },
// { x: 545, y: 50 },
// { x: 550, y: 60, curve: {
// type: 'arc',
// rx: 5,
// ry: 10,
// sweepFlag: 1,
// }},
// { x: 550, y: 240 },
// { x: 545, y: 250, curve: {
// type: 'arc',
// rx: 5,
// ry: 10,
// sweepFlag: 1,
// }},
// { x: 55, y: 250 },
// { x: 50, y: 240, curve: {
// type: 'arc',
// rx: 5,
// ry: 10,
// sweepFlag: 1,
// }},
// { x: 50, y: 60 },
// { x: 55, y: 50, curve: {
// type: 'arc',
// rx: 5,
// ry: 10,
// sweepFlag: 1,
// }},
// ]
const path = toPath( points );
console.log( path );
// 'M55,50H545A5,10,0,0,1,550,60V240A5,10,0,0,1,545,250H55A5,10,0,0,1,50,240V60A5,10,0,0,1,55,50Z'