sketch-json-parse
Version:
sketch-json解析
62 lines (61 loc) • 2.62 kB
JavaScript
;
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
};
}
};