function TextLayer(parentEl) { this.element = document.createElement("div"); this.element.className = "canvas"; parentEl.appendChild(this.element); this._measureSizes(); } TextLayer.prototype.setDocument = function(doc) { this.lines = doc.lines; this.doc = doc; }; TextLayer.prototype.getLineHeight = function() { return this.lineHeight; }; TextLayer.prototype.getCharacterWidth = function() { return this.characterWidth; }; TextLayer.prototype._measureSizes = function() { var measureNode = document.createElement("div"); var style = measureNode.style; style.width = style.height = "auto"; style.left = style.top = "-1000px"; style.visibility = "hidden"; style.position = "absolute"; style.overflow = "visible"; measureNode.innerHTML = "X
X"; this.element.appendChild(measureNode); this.lineHeight = Math.round(measureNode.offsetHeight / 2); this.characterWidth = measureNode.offsetWidth; this.element.removeChild(measureNode); }; TextLayer.prototype.update = function(config) { var html = []; for (var i=config.firstRow; i" ); this.renderLine(html, i), html.push(""); } this.element.innerHTML = html.join(""); }; TextLayer.prototype.renderLine = function(stringBuilder, row) { var tokens = this.doc.getLineTokens(row); for (var i=0; i < tokens.length; i++) { var token = tokens[i]; var output = token.value. replace(/&/g, "&"). replace(/", output, ""); } else { stringBuilder.push(output); } }; };