"use strict"; exports.__esModule = true; var tslib_1 = require("tslib"); var fixShadow_1 = require("./helper/fixShadow"); var constant_1 = require("./constant"); var STYLE_COMMON_PROPS = [ ['shadowBlur', 0], ['shadowOffsetX', 0], ['shadowOffsetY', 0], ['shadowColor', '#000'], ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10] ]; function createLinearGradient(ctx, obj, rect) { var x = obj.x == null ? 0 : obj.x; var x2 = obj.x2 == null ? 1 : obj.x2; var y = obj.y == null ? 0 : obj.y; var y2 = obj.y2 == null ? 0 : obj.y2; if (!obj.global) { x = x * rect.width + rect.x; x2 = x2 * rect.width + rect.x; y = y * rect.height + rect.y; y2 = y2 * rect.height + rect.y; } x = isNaN(x) ? 0 : x; x2 = isNaN(x2) ? 1 : x2; y = isNaN(y) ? 0 : y; y2 = isNaN(y2) ? 0 : y2; var canvasGradient = ctx.createLinearGradient(x, y, x2, y2); return canvasGradient; } function createRadialGradient(ctx, obj, rect) { var width = rect.width; var height = rect.height; var min = Math.min(width, height); var x = obj.x == null ? 0.5 : obj.x; var y = obj.y == null ? 0.5 : obj.y; var r = obj.r == null ? 0.5 : obj.r; if (!obj.global) { x = x * width + rect.x; y = y * height + rect.y; r = r * min; } var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r); return canvasGradient; } var TextStyleOption = (function () { function TextStyleOption() { } return TextStyleOption; }()); exports.TextStyleOption = TextStyleOption; var StyleOption = (function (_super) { tslib_1.__extends(StyleOption, _super); function StyleOption() { return _super !== null && _super.apply(this, arguments) || this; } return StyleOption; }(TextStyleOption)); exports.StyleOption = StyleOption; var Style = (function (_super) { tslib_1.__extends(Style, _super); function Style(opts) { var _this = _super.call(this) || this; if (opts) { _this.extendFrom(opts, true); } return _this; } Style.prototype.bind = function (ctx, el, prevEl) { var style = this; var prevStyle = prevEl && prevEl.style; var notCheckCache = !prevStyle || ctx.__attrCachedBy !== constant_1.ContextCachedBy.STYLE_BIND; ctx.__attrCachedBy = constant_1.ContextCachedBy.STYLE_BIND; for (var i = 0; i < STYLE_COMMON_PROPS.length; i++) { var prop = STYLE_COMMON_PROPS[i]; var styleName = prop[0]; if (notCheckCache || style[styleName] !== prevStyle[styleName]) { ctx[styleName] = fixShadow_1["default"](ctx, styleName, (style[styleName] || prop[1])); } } if ((notCheckCache || style.fill !== prevStyle.fill)) { ctx.fillStyle = style.fill; } if ((notCheckCache || style.stroke !== prevStyle.stroke)) { ctx.strokeStyle = style.stroke; } if ((notCheckCache || style.opacity !== prevStyle.opacity)) { ctx.globalAlpha = style.opacity == null ? 1 : style.opacity; } if ((notCheckCache || style.blend !== prevStyle.blend)) { ctx.globalCompositeOperation = style.blend || 'source-over'; } if (this.hasStroke()) { var lineWidth = style.lineWidth; ctx.lineWidth = lineWidth / ((this.strokeNoScale && el && el.getLineScale) ? el.getLineScale() : 1); } }; Style.prototype.hasFill = function () { var fill = this.fill; return fill != null && fill !== 'none'; }; Style.prototype.hasStroke = function () { var stroke = this.stroke; return stroke != null && stroke !== 'none' && this.lineWidth > 0; }; Style.prototype.extendFrom = function (otherStyle, overwrite) { if (otherStyle) { for (var name_1 in otherStyle) { if (otherStyle.hasOwnProperty(name_1) && (overwrite === true || (overwrite === false ? !this.hasOwnProperty(name_1) : otherStyle[name_1] != null))) { this[name_1] = otherStyle[name_1]; } } } }; Style.prototype.set = function (obj, value) { if (typeof obj === 'string') { this[obj] = value; } else { this.extendFrom(obj, true); } }; Style.prototype.clone = function () { var newStyle = new Style(); newStyle.extendFrom(this, true); return newStyle; }; Style.getGradient = function (ctx, obj, rect) { var canvasGradient = obj.type === 'radial' ? createRadialGradient(ctx, obj, rect) : createLinearGradient(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; }; Style.initDefaultProps = (function () { var styleProto = Style.prototype; styleProto.fill = '#000'; styleProto.stroke = null; styleProto.opacity = 1; styleProto.lineDashOffset = 0; styleProto.shadowBlur = 0; styleProto.shadowOffsetX = 0; styleProto.shadowOffsetY = 0; styleProto.shadowColor = '#000'; styleProto.lineWidth = 1; styleProto.lineCap = 'butt'; styleProto.miterLimit = 10; styleProto.strokeNoScale = false; styleProto.textStrokeWidth = 0; styleProto.textPosition = 'inside'; styleProto.textDistance = 5; styleProto.textShadowColor = 'transparent'; styleProto.textShadowBlur = 0; styleProto.textShadowOffsetX = 0; styleProto.textShadowOffsetY = 0; styleProto.textBoxShadowColor = 'transparent'; styleProto.textBoxShadowBlur = 0; styleProto.textBoxShadowOffsetX = 0; styleProto.textBoxShadowOffsetY = 0; styleProto.textRotation = 0; styleProto.textBorderWidth = 0; styleProto.textBorderRadius = 0; })(); return Style; }(StyleOption)); exports["default"] = Style; ; //# sourceMappingURL=Style.js.map