12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- var Displayable = require("./Displayable");
- var zrUtil = require("../core/util");
- var textContain = require("../contain/text");
- var textHelper = require("./helper/text");
- var _constant = require("./constant");
- var ContextCachedBy = _constant.ContextCachedBy;
- /**
- * @alias zrender/graphic/Text
- * @extends module:zrender/graphic/Displayable
- * @constructor
- * @param {Object} opts
- */
- var Text = function (opts) {
- // jshint ignore:line
- Displayable.call(this, opts);
- };
- Text.prototype = {
- constructor: Text,
- type: 'text',
- brush: function (ctx, prevEl) {
- var style = this.style; // Optimize, avoid normalize every time.
- this.__dirty && textHelper.normalizeTextStyle(style, true); // Use props with prefix 'text'.
- style.fill = style.stroke = style.shadowBlur = style.shadowColor = style.shadowOffsetX = style.shadowOffsetY = null;
- var text = style.text; // Convert to string
- text != null && (text += ''); // Do not apply style.bind in Text node. Because the real bind job
- // is in textHelper.renderText, and performance of text render should
- // be considered.
- // style.bind(ctx, this, prevEl);
- if (!textHelper.needDrawText(text, style)) {
- // The current el.style is not applied
- // and should not be used as cache.
- ctx.__attrCachedBy = ContextCachedBy.NONE;
- return;
- }
- this.setTransform(ctx);
- textHelper.renderText(this, ctx, text, style, null, prevEl);
- this.restoreTransform(ctx);
- },
- getBoundingRect: function () {
- var style = this.style; // Optimize, avoid normalize every time.
- this.__dirty && textHelper.normalizeTextStyle(style, true);
- if (!this._rect) {
- var text = style.text;
- text != null ? text += '' : text = '';
- var rect = textContain.getBoundingRect(style.text + '', style.font, style.textAlign, style.textVerticalAlign, style.textPadding, style.textLineHeight, style.rich);
- rect.x += style.x || 0;
- rect.y += style.y || 0;
- if (textHelper.getStroke(style.textStroke, style.textStrokeWidth)) {
- var w = style.textStrokeWidth;
- rect.x -= w / 2;
- rect.y -= w / 2;
- rect.width += w;
- rect.height += w;
- }
- this._rect = rect;
- }
- return this._rect;
- }
- };
- zrUtil.inherits(Text, Displayable);
- var _default = Text;
- module.exports = _default;
|