/** * Text Utilities */ (function () { var F = Flotr, D = F.DOM, _ = F._, Text = function (o) { this.o = o; }; Text.prototype = { dimensions : function (text, canvasStyle, htmlStyle, className) { if (!text) return { width : 0, height : 0 }; return (this.o.html) ? this.html(text, this.o.element, htmlStyle, className) : this.canvas(text, canvasStyle); }, canvas : function (text, style) { if (!this.o.textEnabled) return; style = style || {}; var metrics = this.measureText(text, style), width = metrics.width, height = style.size || F.defaultOptions.fontSize, angle = style.angle || 0, cosAngle = Math.cos(angle), sinAngle = Math.sin(angle), widthPadding = 2, heightPadding = 6, bounds; bounds = { width: Math.abs(cosAngle * width) + Math.abs(sinAngle * height) + widthPadding, height: Math.abs(sinAngle * width) + Math.abs(cosAngle * height) + heightPadding }; return bounds; }, html : function (text, element, style, className) { var div = D.create('div'); D.setStyles(div, { 'position' : 'absolute', 'top' : '-10000px' }); D.insert(div, '