var textUtil = require("../utils/text_util"); var BoundingRect = require("./BoundingRect"); var _constants = require("../utils/constants"); var WILL_BE_RESTORED = _constants.WILL_BE_RESTORED; /** * @class qrenderer.graphic.RectText * @docauthor 大漠穷秋 <damoqiongqiu@126.com> */ var tmpRect = new BoundingRect(); var RectText = function RectText() {}; /** * @method constructor RectText */ RectText.prototype = { constructor: RectText, /** * Draw text in a rect with specified position. * @param {CanvasRenderingContext2D} ctx * @param {Object} rect Displayable rect */ drawRectText: function drawRectText(ctx, rect) { var style = this.style; rect = style.textRect || rect; // Optimize, avoid normalize every time. this.__dirty && textUtil.normalizeTextStyle(style, true); var text = style.text; // Convert to string text != null && (text += ''); if (!textUtil.needDrawText(text, style)) { return; } // FIXME // Do not provide prevEl to `textUtil.renderText` for ctx prop cache, // but use `ctx.save()` and `ctx.restore()`. Because the cache for rect // text propably break the cache for its host elements. ctx.save(); // Transform rect to view space var transform = this.transform; if (!style.transformText) { if (transform) { tmpRect.copy(rect); tmpRect.applyTransform(transform); rect = tmpRect; } } else { this.applyTransform(ctx); } // transformText and textRotation can not be used at the same time. textUtil.renderText(this, ctx, text, style, rect, WILL_BE_RESTORED); ctx.restore(); } }; var _default = RectText; module.exports = _default;