62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
|
var textHelper = require("../helper/text");
|
||
|
|
||
|
var BoundingRect = require("../../core/BoundingRect");
|
||
|
|
||
|
var _constant = require("../constant");
|
||
|
|
||
|
var WILL_BE_RESTORED = _constant.WILL_BE_RESTORED;
|
||
|
|
||
|
/**
|
||
|
* Mixin for drawing text in a element bounding rect
|
||
|
* @module zrender/mixin/RectText
|
||
|
*/
|
||
|
var tmpRect = new BoundingRect();
|
||
|
|
||
|
var RectText = function () {};
|
||
|
|
||
|
RectText.prototype = {
|
||
|
constructor: RectText,
|
||
|
|
||
|
/**
|
||
|
* Draw text in a rect with specified position.
|
||
|
* @param {CanvasRenderingContext2D} ctx
|
||
|
* @param {Object} rect Displayable rect
|
||
|
*/
|
||
|
drawRectText: function (ctx, rect) {
|
||
|
var style = this.style;
|
||
|
rect = style.textRect || rect; // Optimize, avoid normalize every time.
|
||
|
|
||
|
this.__dirty && textHelper.normalizeTextStyle(style, true);
|
||
|
var text = style.text; // Convert to string
|
||
|
|
||
|
text != null && (text += '');
|
||
|
|
||
|
if (!textHelper.needDrawText(text, style)) {
|
||
|
return;
|
||
|
} // FIXME
|
||
|
// Do not provide prevEl to `textHelper.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.setTransform(ctx);
|
||
|
} // transformText and textRotation can not be used at the same time.
|
||
|
|
||
|
|
||
|
textHelper.renderText(this, ctx, text, style, rect, WILL_BE_RESTORED);
|
||
|
ctx.restore();
|
||
|
}
|
||
|
};
|
||
|
var _default = RectText;
|
||
|
module.exports = _default;
|