aboutsummaryrefslogtreecommitdiffstats
path: root/src/helpers.js
diff options
context:
space:
mode:
authorwout <wout@impinc.co.uk>2014-03-04 22:19:01 +0100
committerwout <wout@impinc.co.uk>2014-03-04 22:19:01 +0100
commit1286e3de26baa3d75ec6a6eafbb2eaa11305c2e1 (patch)
treeb39257a6256836b9e645f5e5faf37adcbe8d4c4d /src/helpers.js
parentf3b9e808601e8aa250b9373447527ca67ba75ec4 (diff)
downloadsvg.js-1286e3de26baa3d75ec6a6eafbb2eaa11305c2e1.tar.gz
svg.js-1286e3de26baa3d75ec6a6eafbb2eaa11305c2e1.zip
Bumped to 1.0.0-rc.6
Diffstat (limited to 'src/helpers.js')
-rw-r--r--src/helpers.js124
1 files changed, 124 insertions, 0 deletions
diff --git a/src/helpers.js b/src/helpers.js
new file mode 100644
index 0000000..5a1dd6d
--- /dev/null
+++ b/src/helpers.js
@@ -0,0 +1,124 @@
+// Convert dash-separated-string to camelCase
+function camelCase(s) {
+ return s.toLowerCase().replace(/-(.)/g, function(m, g) {
+ return g.toUpperCase()
+ })
+}
+
+// Ensure to six-based hex
+function fullHex(hex) {
+ return hex.length == 4 ?
+ [ '#',
+ hex.substring(1, 2), hex.substring(1, 2)
+ , hex.substring(2, 3), hex.substring(2, 3)
+ , hex.substring(3, 4), hex.substring(3, 4)
+ ].join('') : hex
+}
+
+// Component to hex value
+function compToHex(comp) {
+ var hex = comp.toString(16)
+ return hex.length == 1 ? '0' + hex : hex
+}
+
+// Calculate proportional width and height values when necessary
+function proportionalSize(box, width, height) {
+ if (width == null || height == null) {
+ if (height == null)
+ height = box.height / box.width * width
+ else if (width == null)
+ width = box.width / box.height * height
+ }
+
+ return {
+ width: width
+ , height: height
+ }
+}
+
+// Calculate position according to from and to
+function at(o, pos) {
+ /* number recalculation (don't bother converting to SVG.Number for performance reasons) */
+ return typeof o.from == 'number' ?
+ o.from + (o.to - o.from) * pos :
+
+ /* instance recalculation */
+ o instanceof SVG.Color || o instanceof SVG.Number ? o.at(pos) :
+
+ /* for all other values wait until pos has reached 1 to return the final value */
+ pos < 1 ? o.from : o.to
+}
+
+// PathArray Helpers
+function arrayToString(a) {
+ for (var i = 0, il = a.length, s = ''; i < il; i++) {
+ s += a[i][0]
+
+ if (a[i][1] != null) {
+ s += a[i][1]
+
+ if (a[i][2] != null) {
+ s += ' '
+ s += a[i][2]
+
+ if (a[i][3] != null) {
+ s += ' '
+ s += a[i][3]
+ s += ' '
+ s += a[i][4]
+
+ if (a[i][5] != null) {
+ s += ' '
+ s += a[i][5]
+ s += ' '
+ s += a[i][6]
+
+ if (a[i][7] != null) {
+ s += ' '
+ s += a[i][7]
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return s + ' '
+}
+
+// Add more bounding box properties
+function boxProperties(b) {
+ b.x2 = b.x + b.width
+ b.y2 = b.y + b.height
+ b.cx = b.x + b.width / 2
+ b.cy = b.y + b.height / 2
+}
+
+// Parse a matrix string
+function parseMatrix(o) {
+ if (o.matrix) {
+ /* split matrix string */
+ var m = o.matrix.replace(/\s/g, '').split(',')
+
+ /* pasrse values */
+ if (m.length == 6) {
+ o.a = parseFloat(m[0])
+ o.b = parseFloat(m[1])
+ o.c = parseFloat(m[2])
+ o.d = parseFloat(m[3])
+ o.e = parseFloat(m[4])
+ o.f = parseFloat(m[5])
+ }
+ }
+
+ return o
+}
+
+// Shim layer with setTimeout fallback by Paul Irish
+window.requestAnimFrame = (function(){
+ return window.requestAnimationFrame ||
+ window.webkitRequestAnimationFrame ||
+ window.mozRequestAnimationFrame ||
+ window.msRequestAnimationFrame ||
+ function (c) { window.setTimeout(c, 1000 / 60) }
+})() \ No newline at end of file