(line, ch)
| 1777 | |
| 1778 | var tempId = "CodeMirror-temp-" + Math.floor(Math.random() * 0xffffff).toString(16); |
| 1779 | function measureLine(line, ch) { |
| 1780 | if (ch == 0) return {top: 0, left: 0}; |
| 1781 | var wbr = options.lineWrapping && ch < line.text.length && |
| 1782 | spanAffectsWrapping.test(line.text.slice(ch - 1, ch + 1)); |
| 1783 | measure.innerHTML = "<pre>" + line.getHTML(makeTab, ch, tempId, wbr) + "</pre>"; |
| 1784 | var elt = document.getElementById(tempId); |
| 1785 | var top = elt.offsetTop, left = elt.offsetLeft; |
| 1786 | // Older IEs report zero offsets for spans directly after a wrap |
| 1787 | if (ie && top == 0 && left == 0) { |
| 1788 | var backup = document.createElement("span"); |
| 1789 | backup.innerHTML = "x"; |
| 1790 | elt.parentNode.insertBefore(backup, elt.nextSibling); |
| 1791 | top = backup.offsetTop; |
| 1792 | } |
| 1793 | return {top: top, left: left}; |
| 1794 | } |
| 1795 | function localCoords(pos, inLineWrap) { |
| 1796 | var x, lh = textHeight(), y = lh * (heightAtLine(doc, pos.line) - (inLineWrap ? displayOffset : 0)); |
| 1797 | if (pos.ch == 0) x = 0; |
no test coverage detected