diff options
Diffstat (limited to 'public/bower_components/jvectormap/src/vml-path-element.js')
-rw-r--r-- | public/bower_components/jvectormap/src/vml-path-element.js | 98 |
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 |