diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-11-17 15:46:39 -0500 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-11-17 15:46:39 -0500 |
| commit | 5fa235a556d384117840b7088575012dcd1787dd (patch) | |
| tree | 2e819d13093cd446bdb32a2885c068da4ab94cf0 /assets/javascripts/util/coords.js | |
| parent | 548ef92e8157f1ae0b594d0fd2c609438d748222 (diff) | |
polygonal lasso
Diffstat (limited to 'assets/javascripts/util/coords.js')
| -rw-r--r-- | assets/javascripts/util/coords.js | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/assets/javascripts/util/coords.js b/assets/javascripts/util/coords.js new file mode 100644 index 0000000..74b7fda --- /dev/null +++ b/assets/javascripts/util/coords.js @@ -0,0 +1,33 @@ +function offsetFromPoint(event, element) { + function a(width) { + var l = 0, r = 200; + while (r - l > 0.0001) { + var mid = (r + l) / 2; + var a = document.createElement('div'); + a.style.cssText = 'position: absolute;left:0;top:0;background: red;z-index: 1000;'; + a.style[width ? 'width' : 'height'] = mid.toFixed(3) + '%'; + a.style[width ? 'height' : 'width'] = '100%'; + element.appendChild(a); + var x = document.elementFromPoint(event.clientX, event.clientY); + element.removeChild(a); + if (x === a) { + r = mid; + } else { + if (r === 200) { + return null; + } + l = mid; + } + } + return mid; + } + var l = a(1), + t = a(0); + return l && t ? { + left: l / 100, + top: t / 100, + toString: function () { + return 'left: ' + l + '%, top: ' + t + '%'; + } + } : null; +} |
