From 11ded2fe8fabf4392633fcdb3713a49e084746a1 Mon Sep 17 00:00:00 2001 From: wout Date: Mon, 22 Apr 2013 09:57:25 +0100 Subject: Added the rbox() method, bumped to v0.14 --- src/rbox.js | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/rbox.js (limited to 'src/rbox.js') diff --git a/src/rbox.js b/src/rbox.js new file mode 100644 index 0000000..02405b0 --- /dev/null +++ b/src/rbox.js @@ -0,0 +1,43 @@ +// Get the rectangular box of a given element +SVG.RBox = function(element) { + var box, zoom + , e = element.doc().parent + , zoom = element.doc().viewbox().zoom + + /* actual, native bounding box */ + box = element.node.getBoundingClientRect() + + /* get screen offset */ + this.x = box.left + this.y = box.top + + /* subtract parent offset */ + this.x -= e.offsetLeft + this.y -= e.offsetTop + + while (e = e.offsetParent) { + this.x -= e.offsetLeft + this.y -= e.offsetTop + } + + /* calculate cumulative zoom from svg documents */ + e = element + while (e = e.parent) { + if (e.type == 'svg' && e.viewbox) { + zoom *= e.viewbox().zoom + this.x -= e.x() || 0 + this.y -= e.y() || 0 + } + } + + /* recalculate viewbox distortion */ + this.x /= zoom + this.y /= zoom + this.width = box.width /= zoom + this.height = box.height /= zoom + + /* add the center */ + this.cx = this.x + this.width / 2 + this.cy = this.y + this.height / 2 + +} \ No newline at end of file -- cgit v1.2.3