%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/Style.js |
/** * @module zrender/graphic/Style */ define(function (require) { var STYLE_LIST_COMMON = [ 'lineCap', 'lineJoin', 'miterLimit', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'shadowColor' ]; var Style = function (opts) { this.extendFrom(opts); }; Style.prototype = { constructor: Style, /** * @type {string} */ fill: '#000000', /** * @type {string} */ stroke: null, /** * @type {number} */ opacity: 1, /** * @type {Array.<number>} */ lineDash: null, /** * @type {number} */ lineDashOffset: 0, /** * @type {number} */ shadowBlur: 0, /** * @type {number} */ shadowOffsetX: 0, /** * @type {number} */ shadowOffsetY: 0, /** * @type {number} */ lineWidth: 1, /** * If stroke ignore scale * @type {Boolean} */ strokeNoScale: false, // Bounding rect text configuration // Not affected by element transform /** * @type {string} */ text: null, /** * @type {string} */ textFill: '#000', /** * @type {string} */ textStroke: null, /** * 'inside', 'left', 'right', 'top', 'bottom' * [x, y] * @type {string|Array.<number>} * @default 'inside' */ textPosition: 'inside', /** * @type {string} */ textBaseline: null, /** * @type {string} */ textAlign: null, /** * @type {string} */ textVerticalAlign: null, /** * @type {number} */ textDistance: 5, /** * @type {number} */ textShadowBlur: 0, /** * @type {number} */ textShadowOffsetX: 0, /** * @type {number} */ textShadowOffsetY: 0, /** * @param {CanvasRenderingContext2D} ctx */ bind: function (ctx, el) { var fill = this.fill; var stroke = this.stroke; for (var i = 0; i < STYLE_LIST_COMMON.length; i++) { var styleName = STYLE_LIST_COMMON[i]; if (this[styleName] != null) { ctx[styleName] = this[styleName]; } } if (stroke != null) { var lineWidth = this.lineWidth; ctx.lineWidth = lineWidth / ( (this.strokeNoScale && el && el.getLineScale) ? el.getLineScale() : 1 ); } // Gradient will be created and set in Path#brush. So ignore it here if (fill != null && fill !== 'none' && !fill.colorStops) { ctx.fillStyle = fill; } if (stroke != null && stroke !== 'none' && !stroke.colorStops) { // Use canvas gradient if has ctx.strokeStyle = stroke; } this.opacity != null && (ctx.globalAlpha = this.opacity); }, /** * Extend from other style * @param {zrender/graphic/Style} otherStyle * @param {boolean} overwrite */ extendFrom: function (otherStyle, overwrite) { if (otherStyle) { var target = this; for (var name in otherStyle) { if (otherStyle.hasOwnProperty(name) && (overwrite || ! target.hasOwnProperty(name)) ) { target[name] = otherStyle[name]; } } } }, /** * Batch setting style with a given object * @param {Object|string} obj * @param {*} [obj] */ set: function (obj, value) { if (typeof obj === 'string') { this[obj] = value; } else { this.extendFrom(obj, true); } }, /** * Clone * @return {zrender/graphic/Style} [description] */ clone: function () { var newStyle = new this.constructor(); newStyle.extendFrom(this, true); return newStyle; }, createLinearGradient: function (ctx, obj, rect) { // var size = var x = obj.x * rect.width + rect.x; var x2 = obj.x2 * rect.width + rect.x; var y = obj.y * rect.height + rect.y; var y2 = obj.y2 * rect.height + rect.y; var canvasGradient = ctx.createLinearGradient(x, y, x2, y2); return canvasGradient; }, createRadialGradient: function (ctx, obj, rect) { var width = rect.width; var height = rect.height; var min = Math.min(width, height); var x = obj.x * width + rect.x; var y = obj.y * height + rect.y; var r = obj.r * min; var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r); return canvasGradient; }, getGradient: function (ctx, obj, rect) { var method = obj.type === 'radial' ? 'createRadialGradient' : 'createLinearGradient'; var canvasGradient = this[method](ctx, obj, rect); var colorStops = obj.colorStops; for (var i = 0; i < colorStops.length; i++) { canvasGradient.addColorStop( colorStops[i].offset, colorStops[i].color ); } return canvasGradient; } }; var styleProto = Style.prototype; var name; var i; for (i = 0; i < STYLE_LIST_COMMON.length; i++) { name = STYLE_LIST_COMMON[i]; if (!(name in styleProto)) { styleProto[name] = null; } } return Style; });