%PDF- %PDF-
Direktori : /home/opti/workflow/src/public/app-assets/vendors/js/charts/echarts/zrender/graphic/ |
Current File : /home/opti/workflow/src/public/app-assets/vendors/js/charts/echarts/zrender/graphic/Text.js |
/** * Text element * @module zrender/graphic/Text * * TODO Wrapping * * Text not support gradient */ define(function (require) { var Displayable = require('./Displayable'); var zrUtil = require('../core/util'); var textContain = require('../contain/text'); /** * @alias zrender/graphic/Text * @extends module:zrender/graphic/Displayable * @constructor * @param {Object} opts */ var Text = function (opts) { Displayable.call(this, opts); }; Text.prototype = { constructor: Text, type: 'text', brush: function (ctx) { var style = this.style; var x = style.x || 0; var y = style.y || 0; // Convert to string var text = style.text; var textFill = style.fill; var textStroke = style.stroke; // Convert to string text != null && (text += ''); if (text) { ctx.save(); this.style.bind(ctx); this.setTransform(ctx); textFill && (ctx.fillStyle = textFill); textStroke && (ctx.strokeStyle = textStroke); ctx.font = style.textFont || style.font; ctx.textAlign = style.textAlign; if (style.textVerticalAlign) { var rect = textContain.getBoundingRect( text, ctx.font, style.textAlign, 'top' ); // Ignore textBaseline ctx.textBaseline = 'middle'; switch (style.textVerticalAlign) { case 'middle': y -= rect.height / 2 - rect.lineHeight / 2; break; case 'bottom': y -= rect.height - rect.lineHeight / 2; break; default: y += rect.lineHeight / 2; } } else { ctx.textBaseline = style.textBaseline; } var lineHeight = textContain.measureText('国', ctx.font).width; var textLines = text.split('\n'); for (var i = 0; i < textLines.length; i++) { textFill && ctx.fillText(textLines[i], x, y); textStroke && ctx.strokeText(textLines[i], x, y); y += lineHeight; } ctx.restore(); } }, getBoundingRect: function () { if (!this._rect) { var style = this.style; var textVerticalAlign = style.textVerticalAlign; var rect = textContain.getBoundingRect( style.text + '', style.textFont || style.font, style.textAlign, textVerticalAlign ? 'top' : style.textBaseline ); switch (textVerticalAlign) { case 'middle': rect.y -= rect.height / 2; break; case 'bottom': rect.y -= rect.height; break; } rect.x += style.x || 0; rect.y += style.y || 0; this._rect = rect; } return this._rect; } }; zrUtil.inherits(Text, Displayable); return Text; });