UNPKG

sketch-json-parse

Version:

sketch-json解析

62 lines (61 loc) 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const twoPointsDistance_1 = require("./twoPointsDistance"); const utils_1 = require("../../../../common/utils"); exports.default = (gradient, layer, fillStyle, contextSettings = 1) => { let frame = layer.frame; let startPointStr = gradient.from; let startX = +startPointStr.split('{')[1].split(',')[0] * frame.width; let startY = -startPointStr.split(',')[1].split('}')[0] * frame.height; let endPointStr = gradient.to; let endX = +endPointStr.split('{')[1].split(',')[0] * frame.width; let endY = -endPointStr.split(',')[1].split('}')[0] * frame.height; let r = Math.abs((0, twoPointsDistance_1.default)(startX, startY, endX, endY)); let stops = gradient.stops; const valList = stops.map(({ color, position }) => { let { red, green, blue, alpha, swatchID } = color; if (layer.style && layer.style.contextSettings) { alpha = layer.style.contextSettings.opacity * contextSettings * alpha; } return { color: (0, utils_1.transSketchColor)({ red, green, blue, alpha, swatchID }), position: (0, utils_1.precisionControl)(position, 0.01), }; }); if (fillStyle.gradient.elipseLength > 0) { //椭圆渐变 let elipseLength = fillStyle.gradient.elipseLength; if (Math.abs(endY - startY) < 1) { return { smallRadius: (0, utils_1.precisionControl)(r), largeRadius: (0, utils_1.precisionControl)(elipseLength * r), position: { left: (0, utils_1.precisionControl)(startX), top: (0, utils_1.precisionControl)(-startY), }, gList: valList }; } else if (Math.abs(endX - startX) < 1) { return { smallRadius: (0, utils_1.precisionControl)(elipseLength * r), largeRadius: (0, utils_1.precisionControl)(r), position: { left: (0, utils_1.precisionControl)(startX), top: (0, utils_1.precisionControl)(-startY), }, gList: valList }; } } else { //圆形渐变 return { smallRadius: (0, utils_1.precisionControl)(r), largeRadius: (0, utils_1.precisionControl)(r), position: { left: (0, utils_1.precisionControl)(startX), top: (0, utils_1.precisionControl)(-startY), }, gList: valList }; } };