This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.4 KiB
76 lines
1.4 KiB
var Class = require('../../core/class'); |
|
|
|
// Utility command factories |
|
|
|
var point = function(c){ |
|
return function(x, y){ |
|
return this.push(c, x, y); |
|
}; |
|
}; |
|
|
|
var arc = function(c, cc){ |
|
return function(x, y, rx, ry, outer){ |
|
return this.push(c, Math.abs(rx || x), Math.abs(ry || rx || y), 0, outer ? 1 : 0, cc, x, y); |
|
}; |
|
}; |
|
|
|
var curve = function(t, s, q, c){ |
|
return function(c1x, c1y, c2x, c2y, ex, ey){ |
|
var l = arguments.length, k = l < 4 ? t : l < 6 ? q : c; |
|
return this.push(k, c1x, c1y, c2x, c2y, ex, ey); |
|
}; |
|
}; |
|
|
|
// SVG Path Class |
|
|
|
var SVGPath = Class({ |
|
|
|
initialize: function(path){ |
|
if (path instanceof SVGPath){ |
|
this.path = [Array.prototype.join.call(path.path, ' ')]; |
|
} else { |
|
if (path && path.applyToPath) |
|
path.applyToPath(this); |
|
else |
|
this.path = [path || 'm0 0']; |
|
} |
|
}, |
|
|
|
push: function(){ |
|
this.path.push(Array.prototype.join.call(arguments, ' ')); |
|
return this; |
|
}, |
|
|
|
reset: function(){ |
|
this.path = []; |
|
return this; |
|
}, |
|
|
|
move: point('m'), |
|
moveTo: point('M'), |
|
|
|
line: point('l'), |
|
lineTo: point('L'), |
|
|
|
curve: curve('t', 's', 'q', 'c'), |
|
curveTo: curve('T', 'S', 'Q', 'C'), |
|
|
|
arc: arc('a', 1), |
|
arcTo: arc('A', 1), |
|
|
|
counterArc: arc('a', 0), |
|
counterArcTo: arc('A', 0), |
|
|
|
close: function(){ |
|
return this.push('z'); |
|
}, |
|
|
|
toSVG: function(){ |
|
return this.path.join(' '); |
|
} |
|
|
|
}); |
|
|
|
SVGPath.prototype.toString = SVGPath.prototype.toSVG; |
|
|
|
module.exports = SVGPath; |