Index: Source/core/dom/Node.cpp |
diff --git a/Source/core/dom/Node.cpp b/Source/core/dom/Node.cpp |
index 86b776ca6635bcd78088e9361e474924b4363aff..c39749c92fe4309f9236f2b6f0079aaf7b000647 100644 |
--- a/Source/core/dom/Node.cpp |
+++ b/Source/core/dom/Node.cpp |
@@ -1602,6 +1602,34 @@ unsigned short Node::compareDocumentPosition(const Node* otherNode, ShadowTreesT |
DOCUMENT_POSITION_PRECEDING | DOCUMENT_POSITION_CONTAINS | connection; |
} |
+FloatPoint Node::convertToPage(const FloatPoint& p) const |
+{ |
+ // If there is a renderer, just ask it to do the conversion |
+ if (renderer()) |
+ return renderer()->localToAbsolute(p, UseTransforms); |
+ |
+ // Otherwise go up the tree looking for a renderer |
+ if (Element* parent = parentElement()) |
+ return parent->convertToPage(p); |
+ |
+ // No parent - no conversion needed |
+ return p; |
+} |
+ |
+FloatPoint Node::convertFromPage(const FloatPoint& p) const |
+{ |
+ // If there is a renderer, just ask it to do the conversion |
+ if (renderer()) |
+ return renderer()->absoluteToLocal(p, UseTransforms); |
+ |
+ // Otherwise go up the tree looking for a renderer |
+ if (Element* parent = parentElement()) |
+ return parent->convertFromPage(p); |
+ |
+ // No parent - no conversion needed |
+ return p; |
+} |
+ |
String Node::debugName() const |
{ |
StringBuilder name; |