aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bower_components/jvectormap/src/vml-path-element.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/bower_components/jvectormap/src/vml-path-element.js')
-rw-r--r--public/bower_components/jvectormap/src/vml-path-element.js98
1 files changed, 98 insertions, 0 deletions
diff --git a/public/bower_components/jvectormap/src/vml-path-element.js b/public/bower_components/jvectormap/src/vml-path-element.js
new file mode 100644
index 0000000..6bd9911
--- /dev/null
+++ b/public/bower_components/jvectormap/src/vml-path-element.js
@@ -0,0 +1,98 @@
+jvm.VMLPathElement = function(config, style){
+ var scale = new jvm.VMLElement('skew');
+
+ jvm.VMLPathElement.parentClass.call(this, 'shape', config, style);
+
+ this.node.coordorigin = "0 0";
+
+ scale.node.on = true;
+ scale.node.matrix = '0.01,0,0,0.01,0,0';
+ scale.node.offset = '0,0';
+
+ this.node.appendChild(scale.node);
+};
+
+jvm.inherits(jvm.VMLPathElement, jvm.VMLShapeElement);
+
+jvm.VMLPathElement.prototype.applyAttr = function(attr, value){
+ if (attr === 'd') {
+ this.node.path = jvm.VMLPathElement.pathSvgToVml(value);
+ } else {
+ jvm.VMLShapeElement.prototype.applyAttr.call(this, attr, value);
+ }
+};
+
+jvm.VMLPathElement.pathSvgToVml = function(path) {
+ var cx = 0, cy = 0, ctrlx, ctrly;
+
+ path = path.replace(/(-?\d+)e(-?\d+)/g, '0');
+ return path.replace(/([MmLlHhVvCcSs])\s*((?:-?\d*(?:\.\d+)?\s*,?\s*)+)/g, function(segment, letter, coords, index){
+ coords = coords.replace(/(\d)-/g, '$1,-')
+ .replace(/^\s+/g, '')
+ .replace(/\s+$/g, '')
+ .replace(/\s+/g, ',').split(',');
+ if (!coords[0]) coords.shift();
+ for (var i=0, l=coords.length; i<l; i++) {
+ coords[i] = Math.round(100*coords[i]);
+ }
+ switch (letter) {
+ case 'm':
+ cx += coords[0];
+ cy += coords[1];
+ return 't'+coords.join(',');
+ case 'M':
+ cx = coords[0];
+ cy = coords[1];
+ return 'm'+coords.join(',');
+ case 'l':
+ cx += coords[0];
+ cy += coords[1];
+ return 'r'+coords.join(',');
+ case 'L':
+ cx = coords[0];
+ cy = coords[1];
+ return 'l'+coords.join(',');
+ case 'h':
+ cx += coords[0];
+ return 'r'+coords[0]+',0';
+ case 'H':
+ cx = coords[0];
+ return 'l'+cx+','+cy;
+ case 'v':
+ cy += coords[0];
+ return 'r0,'+coords[0];
+ case 'V':
+ cy = coords[0];
+ return 'l'+cx+','+cy;
+ case 'c':
+ ctrlx = cx + coords[coords.length-4];
+ ctrly = cy + coords[coords.length-3];
+ cx += coords[coords.length-2];
+ cy += coords[coords.length-1];
+ return 'v'+coords.join(',');
+ case 'C':
+ ctrlx = coords[coords.length-4];
+ ctrly = coords[coords.length-3];
+ cx = coords[coords.length-2];
+ cy = coords[coords.length-1];
+ return 'c'+coords.join(',');
+ case 's':
+ coords.unshift(cy-ctrly);
+ coords.unshift(cx-ctrlx);
+ ctrlx = cx + coords[coords.length-4];
+ ctrly = cy + coords[coords.length-3];
+ cx += coords[coords.length-2];
+ cy += coords[coords.length-1];
+ return 'v'+coords.join(',');
+ case 'S':
+ coords.unshift(cy+cy-ctrly);
+ coords.unshift(cx+cx-ctrlx);
+ ctrlx = coords[coords.length-4];
+ ctrly = coords[coords.length-3];
+ cx = coords[coords.length-2];
+ cy = coords[coords.length-1];
+ return 'c'+coords.join(',');
+ }
+ return '';
+ }).replace(/z/g, 'e');
+}; \ No newline at end of file