forked from enviPath/enviPy
Current Dev State
This commit is contained in:
151
static/js/ketcher2/node_modules/svg-pathdata/src/SVGPathData.js
generated
vendored
Executable file
151
static/js/ketcher2/node_modules/svg-pathdata/src/SVGPathData.js
generated
vendored
Executable file
@ -0,0 +1,151 @@
|
||||
'use strict';
|
||||
|
||||
function SVGPathData(content) {
|
||||
this.commands = SVGPathData.parse(content);
|
||||
}
|
||||
|
||||
SVGPathData.prototype.encode = function() {
|
||||
return SVGPathData.encode(this.commands);
|
||||
};
|
||||
|
||||
SVGPathData.prototype.round = function() {
|
||||
return this.transform.apply(this, [SVGPathData.Transformer.ROUND].concat(
|
||||
[].slice.call(arguments, 0)));
|
||||
};
|
||||
|
||||
SVGPathData.prototype.toAbs = function() {
|
||||
return this.transform(SVGPathData.Transformer.TO_ABS);
|
||||
};
|
||||
|
||||
SVGPathData.prototype.toRel = function() {
|
||||
return this.transform(SVGPathData.Transformer.TO_REL);
|
||||
};
|
||||
|
||||
SVGPathData.prototype.translate = function() {
|
||||
return this.transform.apply(this, [SVGPathData.Transformer.TRANSLATE].concat(
|
||||
[].slice.call(arguments, 0)));
|
||||
};
|
||||
|
||||
SVGPathData.prototype.scale = function() {
|
||||
return this.transform.apply(this, [SVGPathData.Transformer.SCALE].concat(
|
||||
[].slice.call(arguments, 0)));
|
||||
};
|
||||
|
||||
SVGPathData.prototype.rotate = function() {
|
||||
return this.transform.apply(this, [SVGPathData.Transformer.ROTATE].concat(
|
||||
[].slice.call(arguments, 0)));
|
||||
};
|
||||
|
||||
SVGPathData.prototype.matrix = function() {
|
||||
return this.transform.apply(this, [SVGPathData.Transformer.MATRIX].concat(
|
||||
[].slice.call(arguments, 0)));
|
||||
};
|
||||
|
||||
SVGPathData.prototype.skewX = function() {
|
||||
return this.transform.apply(this, [SVGPathData.Transformer.SKEW_X].concat(
|
||||
[].slice.call(arguments, 0)));
|
||||
};
|
||||
|
||||
SVGPathData.prototype.skewY = function() {
|
||||
return this.transform.apply(this, [SVGPathData.Transformer.SKEW_Y].concat(
|
||||
[].slice.call(arguments, 0)));
|
||||
};
|
||||
|
||||
SVGPathData.prototype.xSymetry = function() {
|
||||
return this.transform.apply(this, [SVGPathData.Transformer.X_AXIS_SIMETRY].concat(
|
||||
[].slice.call(arguments, 0)));
|
||||
};
|
||||
|
||||
SVGPathData.prototype.ySymetry = function() {
|
||||
return this.transform.apply(this, [SVGPathData.Transformer.Y_AXIS_SIMETRY].concat(
|
||||
[].slice.call(arguments, 0)));
|
||||
};
|
||||
|
||||
SVGPathData.prototype.aToC = function() {
|
||||
return this.transform.apply(this, [SVGPathData.Transformer.A_TO_C].concat(
|
||||
[].slice.call(arguments, 0)));
|
||||
};
|
||||
|
||||
SVGPathData.prototype.transform = function(transformFunction) {
|
||||
var newCommands = [];
|
||||
var curCommands = [];
|
||||
var commands = this.commands;
|
||||
var i;
|
||||
var ii;
|
||||
|
||||
transformFunction = transformFunction.apply(null, [].slice.call(arguments, 1));
|
||||
|
||||
for(i = 0, ii = commands.length; i < ii; i++) {
|
||||
curCommands = transformFunction(commands[i]);
|
||||
if(curCommands instanceof Array) {
|
||||
newCommands = newCommands.concat(curCommands);
|
||||
} else {
|
||||
newCommands.push(curCommands);
|
||||
}
|
||||
}
|
||||
this.commands = newCommands;
|
||||
return this;
|
||||
};
|
||||
|
||||
// Static methods
|
||||
SVGPathData.encode = function(commands) {
|
||||
var content = '';
|
||||
var encoder = new SVGPathData.Encoder();
|
||||
|
||||
encoder.on('readable', function() {
|
||||
var str;
|
||||
|
||||
do {
|
||||
str = encoder.read();
|
||||
if(null !== str) {
|
||||
content += str;
|
||||
}
|
||||
} while(null !== str);
|
||||
});
|
||||
encoder.write(commands);
|
||||
encoder.end();
|
||||
return content;
|
||||
};
|
||||
|
||||
SVGPathData.parse = function(content) {
|
||||
var commands = [];
|
||||
var parser = new SVGPathData.Parser();
|
||||
|
||||
parser.on('readable', function() {
|
||||
var command;
|
||||
|
||||
do {
|
||||
command = parser.read();
|
||||
if(null !== command) {
|
||||
commands.push(command);
|
||||
}
|
||||
} while(null !== command);
|
||||
});
|
||||
parser.write(content);
|
||||
parser.end();
|
||||
return commands;
|
||||
};
|
||||
|
||||
// Commands static vars
|
||||
SVGPathData.CLOSE_PATH = 1;
|
||||
SVGPathData.MOVE_TO = 2;
|
||||
SVGPathData.HORIZ_LINE_TO = 4;
|
||||
SVGPathData.VERT_LINE_TO = 8;
|
||||
SVGPathData.LINE_TO = 16;
|
||||
SVGPathData.CURVE_TO = 32;
|
||||
SVGPathData.SMOOTH_CURVE_TO = 64;
|
||||
SVGPathData.QUAD_TO = 128;
|
||||
SVGPathData.SMOOTH_QUAD_TO = 256;
|
||||
SVGPathData.ARC = 512;
|
||||
SVGPathData.DRAWING_COMMANDS =
|
||||
SVGPathData.HORIZ_LINE_TO | SVGPathData.VERT_LINE_TO | SVGPathData.LINE_TO |
|
||||
SVGPathData.CURVE_TO | SVGPathData.SMOOTH_CURVE_TO | SVGPathData.QUAD_TO |
|
||||
SVGPathData.SMOOTH_QUAD_TO | SVGPathData.ARC;
|
||||
|
||||
// Export the main contructor first (tests are failing otherwise)
|
||||
module.exports = SVGPathData;
|
||||
|
||||
// Expose the internal constructors
|
||||
SVGPathData.Parser = require('./SVGPathDataParser.js');
|
||||
SVGPathData.Encoder = require('./SVGPathDataEncoder.js');
|
||||
SVGPathData.Transformer = require('./SVGPathDataTransformer.js');
|
||||
Reference in New Issue
Block a user