forked from enviPath/enviPy
Current Dev State
This commit is contained in:
119
static/js/ketcher2/node_modules/svgicons2svgfont/src/svgshapes2svgpath.js
generated
vendored
Normal file
119
static/js/ketcher2/node_modules/svgicons2svgfont/src/svgshapes2svgpath.js
generated
vendored
Normal file
@ -0,0 +1,119 @@
|
||||
'use strict';
|
||||
|
||||
// http://www.whizkidtech.redprince.net/bezier/circle/
|
||||
var KAPPA = ((Math.sqrt(2) - 1) / 3) * 4;
|
||||
|
||||
var svgShapesToPath = {
|
||||
rectToPath: svgShapesToPathRectToPath,
|
||||
polylineToPath: svgShapesToPathPolylineToPath,
|
||||
lineToPath: svgShapesToPathLineToPath,
|
||||
circleToPath: svgShapesToPathCircleToPath,
|
||||
polygonToPath: svgShapesToPathPolygonToPath,
|
||||
};
|
||||
|
||||
module.exports = svgShapesToPath;
|
||||
|
||||
// Shapes helpers (should also move elsewhere)
|
||||
function svgShapesToPathRectToPath(attributes) {
|
||||
var x = 'undefined' !== typeof attributes.x ?
|
||||
parseFloat(attributes.x, 10) :
|
||||
0;
|
||||
var y = 'undefined' !== typeof attributes.y ?
|
||||
parseFloat(attributes.y, 10) :
|
||||
0;
|
||||
var width = 'undefined' !== typeof attributes.width ?
|
||||
parseFloat(attributes.width, 10) :
|
||||
0;
|
||||
var height = 'undefined' !== typeof attributes.height ?
|
||||
parseFloat(attributes.height, 10) :
|
||||
0;
|
||||
var rx = 'undefined' !== typeof attributes.rx ?
|
||||
parseFloat(attributes.rx, 10) :
|
||||
0;
|
||||
var ry = 'undefined' !== typeof attributes.ry ?
|
||||
parseFloat(attributes.ry, 10) :
|
||||
0;
|
||||
|
||||
return '' +
|
||||
// start at the left corner
|
||||
'M' + (x + rx) + ' ' + y +
|
||||
// top line
|
||||
'h' + (width - (rx * 2)) +
|
||||
// upper right corner
|
||||
(rx || ry ?
|
||||
'a ' + rx + ' ' + ry + ' 0 0 1 ' + rx + ' ' + ry :
|
||||
''
|
||||
) +
|
||||
// Draw right side
|
||||
'v' + (height - (ry * 2)) +
|
||||
// Draw bottom right corner
|
||||
(rx || ry ?
|
||||
'a ' + rx + ' ' + ry + ' 0 0 1 ' + (rx * -1) + ' ' + ry :
|
||||
''
|
||||
) +
|
||||
// Down the down side
|
||||
'h' + ((width - (rx * 2)) * -1) +
|
||||
// Draw bottom right corner
|
||||
(rx || ry ?
|
||||
'a ' + rx + ' ' + ry + ' 0 0 1 ' + (rx * -1) + ' ' + (ry * -1) :
|
||||
''
|
||||
) +
|
||||
// Down the left side
|
||||
'v' + ((height - (ry * 2)) * -1) +
|
||||
// Draw bottom right corner
|
||||
(rx || ry ?
|
||||
'a ' + rx + ' ' + ry + ' 0 0 1 ' + rx + ' ' + (ry * -1) :
|
||||
''
|
||||
) +
|
||||
// Close path
|
||||
'z';
|
||||
}
|
||||
|
||||
function svgShapesToPathPolylineToPath(attributes) {
|
||||
return 'M' + attributes.points;
|
||||
}
|
||||
|
||||
function svgShapesToPathLineToPath(attributes) {
|
||||
// Move to the line start
|
||||
return '' +
|
||||
'M' + (parseFloat(attributes.x1, 10) || 0).toString(10) +
|
||||
' ' + (parseFloat(attributes.y1, 10) || 0).toString(10) +
|
||||
' ' + ((parseFloat(attributes.x1, 10) || 0) + 1).toString(10) +
|
||||
' ' + ((parseFloat(attributes.y1, 10) || 0) + 1).toString(10) +
|
||||
' ' + ((parseFloat(attributes.x2, 10) || 0) + 1).toString(10) +
|
||||
' ' + ((parseFloat(attributes.y2, 10) || 0) + 1).toString(10) +
|
||||
' ' + (parseFloat(attributes.x2, 10) || 0).toString(10) +
|
||||
' ' + (parseFloat(attributes.y2, 10) || 0).toString(10) +
|
||||
'Z';
|
||||
}
|
||||
|
||||
function svgShapesToPathCircleToPath(attributes) {
|
||||
var cx = parseFloat(attributes.cx, 10);
|
||||
var cy = parseFloat(attributes.cy, 10);
|
||||
var rx = 'undefined' !== typeof attributes.rx ?
|
||||
parseFloat(attributes.rx, 10) :
|
||||
parseFloat(attributes.r, 10);
|
||||
var ry = 'undefined' !== typeof attributes.ry ?
|
||||
parseFloat(attributes.ry, 10) :
|
||||
parseFloat(attributes.r, 10);
|
||||
|
||||
return '' +
|
||||
'M' + (cx - rx) + ',' + cy +
|
||||
'C' + (cx - rx) + ',' + (cy + (ry * KAPPA)) +
|
||||
' ' + (cx - (rx * KAPPA)) + ',' + (cy + ry) +
|
||||
' ' + cx + ',' + (cy + ry) +
|
||||
'C' + (cx + (rx * KAPPA)) + ',' + (cy + ry) +
|
||||
' ' + (cx + rx) + ',' + (cy + (ry * KAPPA)) +
|
||||
' ' + (cx + rx) + ',' + cy +
|
||||
'C' + (cx + rx) + ',' + (cy - (ry * KAPPA)) +
|
||||
' ' + (cx + (rx * KAPPA)) + ',' + (cy - ry) +
|
||||
' ' + cx + ',' + (cy - ry) +
|
||||
'C' + (cx - (rx * KAPPA)) + ',' + (cy - ry) +
|
||||
' ' + (cx - rx) + ',' + (cy - (ry * KAPPA)) +
|
||||
' ' + (cx - rx) + ',' + cy +
|
||||
'Z';
|
||||
}
|
||||
|
||||
function svgShapesToPathPolygonToPath(attributes) {
|
||||
return 'M' + attributes.points + 'Z';
|
||||
}
|
||||
Reference in New Issue
Block a user