mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-19 14:10:14 -05:00
Add a few helper functions
These will convert directly from SVG objects to Paper.js equivalents.
This commit is contained in:
parent
8659c6b44c
commit
bbef9a9594
1 changed files with 92 additions and 0 deletions
|
@ -49,5 +49,97 @@ var ImportSVG = this.ImportSVG = Base.extend({
|
|||
importPath: function(svg)
|
||||
{
|
||||
//TODO: return path;
|
||||
},
|
||||
|
||||
/**
|
||||
* Creates a Path.Circle Paper.js item
|
||||
*
|
||||
* takes a svg circle node (xml dom)
|
||||
* returns Paper.js Path.Circle item
|
||||
*/
|
||||
createCircle: function(svgCircle)
|
||||
{
|
||||
var cx = svgCircle.cx.baseVal.value || 0;
|
||||
var cy = svgCircle.cy.baseVal.value || 0;
|
||||
var r = svgCircle.r.baseVal.value || 0;
|
||||
var center = new Point(cx, cy);
|
||||
var circle = new Path.Circle(center, r);
|
||||
|
||||
return circle;
|
||||
},
|
||||
|
||||
/**
|
||||
* Creates a Path.Oval Paper.js item
|
||||
*
|
||||
* takes a svg ellipse node (xml dom)
|
||||
* returns Paper.js Path.Oval item
|
||||
*/
|
||||
createOval: function(svgOval)
|
||||
{
|
||||
var cx = svgOval.cx.baseVal.value || 0;
|
||||
var cy = svgOval.cy.baseVal.value || 0;
|
||||
var rx = svgOval.rx.baseVal.value || 0;
|
||||
var ry = svgOval.ry.baseVal.value || 0;
|
||||
|
||||
var center = new Point(cx, cy);
|
||||
var offset = new Point(rx, ry);
|
||||
var topLeft = center.subtract(offset);
|
||||
var bottomRight = center.add(offset);
|
||||
|
||||
var rect = new Rectangle(topLeft, bottomRight);
|
||||
var oval = new Path.Oval(rect);
|
||||
|
||||
return oval;
|
||||
},
|
||||
|
||||
/**
|
||||
* Creates a "rectangle" Paper.js item
|
||||
*
|
||||
* takes a svg rect node (xml dom)
|
||||
* returns either a
|
||||
* - Path.Rectangle item
|
||||
* - Path.RoundRectangle item (if the rectangle has rounded corners)
|
||||
*/
|
||||
createRectangle: function(svgRectangle)
|
||||
{
|
||||
var x = svgRectangle.x.baseVal.value || 0;
|
||||
var y = svgRectangle.y.baseVal.value || 0;
|
||||
var rx = svgRectangle.rx.baseVal.value || 0;
|
||||
var ry = svgRectangle.ry.baseVal.value || 0;
|
||||
var width = svgRectangle.width.baseVal.value || 0;
|
||||
var height = svgRectangle.height.baseVal.value || 0;
|
||||
|
||||
var topLeft = new Point(x, y);
|
||||
var size = new Size(width, height);
|
||||
var rectangle = new Rectangle(topLeft, size);
|
||||
|
||||
if (rx > 0 || ry > 0) {
|
||||
var cornerSize = new Size(rx, ry);
|
||||
rectangle = new Path.RoundRectangle(rectangle, cornerSize);
|
||||
} else {
|
||||
rectangle = new Path.Rectangle(rectangle);
|
||||
}
|
||||
|
||||
return rectangle;
|
||||
},
|
||||
|
||||
/**
|
||||
* Creates a Path.Line Paper.js item
|
||||
*
|
||||
* takes a svg line node (xml dom)
|
||||
* returns a Path.Line item
|
||||
*/
|
||||
createLine: function(svgLine)
|
||||
{
|
||||
var x1 = svgLine.x1.baseVal.value || 0;
|
||||
var y1 = svgLine.y1.baseVal.value || 0;
|
||||
var x2 = svgLine.x2.baseVal.value || 0;
|
||||
var y2 = svgLine.y2.baseVal.value || 0;
|
||||
|
||||
var from = new Point(x1, y1);
|
||||
var to = new Point(x2, y2);
|
||||
var line = new Path.Line(from, to);
|
||||
|
||||
return line;
|
||||
}
|
||||
});
|
Loading…
Reference in a new issue