Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Side by Side Diff: appengine/monorail/static/js/graveyard/geom.js

Issue 1868553004: Open Source Monorail (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /* Copyright 2016 The Chromium Authors. All Rights Reserved.
2 *
3 * Use of this source code is governed by a BSD-style
4 * license that can be found in the LICENSE file or at
5 * https://developers.google.com/open-source/licenses/bsd
6 */
7
8 // functions for dealing with layout and geometry of page elements.
9 // Requires shapes.js
10
11 /** returns the bounding box of the given DOM node in document space.
12 *
13 * @param {Element?} obj a DOM node.
14 * @return {Rect?}
15 */
16 function nodeBounds(obj) {
17 if (!obj) return null;
18
19 function fixRectForScrolling(r) {
20 // Need to take into account scrolling offset of ancestors (IE already does
21 // this)
22 for (var o = obj.offsetParent;
23 o && o.offsetParent;
24 o = o.offsetParent) {
25 if (o.scrollLeft) {
26 r.x -= o.scrollLeft;
27 }
28 if (o.scrollTop) {
29 r.y -= o.scrollTop;
30 }
31 }
32 }
33
34 var refWindow;
35 if (obj.ownerDocument && obj.ownerDocument.parentWindow) {
36 refWindow = obj.ownerDocument.parentWindow;
37 } else if (obj.ownerDocument && obj.ownerDocument.defaultView) {
38 refWindow = obj.ownerDocument.defaultView;
39 } else {
40 refWindow = window;
41 }
42
43 // IE, Mozilla 3+
44 if (obj.getBoundingClientRect) {
45 var rect = obj.getBoundingClientRect();
46
47 return new Rect(rect.left + GetScrollLeft(refWindow),
48 rect.top + GetScrollTop(refWindow),
49 rect.right - rect.left,
50 rect.bottom - rect.top,
51 refWindow);
52 }
53
54 // Mozilla < 3
55 if (obj.ownerDocument && obj.ownerDocument.getBoxObjectFor) {
56 var box = obj.ownerDocument.getBoxObjectFor(obj);
57 var r = new Rect(box.x, box.y, box.width, box.height, refWindow);
58 fixRectForScrolling(r);
59 return r;
60 }
61
62 // Fallback to recursively computing this
63 var left = 0;
64 var top = 0;
65 for (var o = obj; o.offsetParent; o = o.offsetParent) {
66 left += o.offsetLeft;
67 top += o.offsetTop;
68 }
69
70 var r = new Rect(left, top, obj.offsetWidth, obj.offsetHeight, refWindow);
71 fixRectForScrolling(r);
72 return r;
73 }
74
75 function GetMousePosition(e) {
76 // copied from http://www.quirksmode.org/js/events_compinfo.html
77 var posx = 0;
78 var posy = 0;
79 if (e.pageX || e.pageY) {
80 posx = e.pageX;
81 posy = e.pageY;
82 } else if (e.clientX || e.clientY) {
83 var obj = (e.target ? e.target : e.srcElement);
84 var refWindow;
85 if (obj.ownerDocument && obj.ownerDocument.parentWindow) {
86 refWindow = obj.ownerDocument.parentWindow;
87 } else {
88 refWindow = window;
89 }
90 posx = e.clientX + GetScrollLeft(refWindow);
91 posy = e.clientY + GetScrollTop(refWindow);
92 }
93 return new Point(posx, posy, window);
94 }
OLDNEW
« no previous file with comments | « appengine/monorail/static/js/graveyard/common.js ('k') | appengine/monorail/static/js/graveyard/listen.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698