You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.9 KiB
57 lines
1.9 KiB
export 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;
|
|
}
|
|
export 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;
|
|
}
|
|
export function getCanvasGradient(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;
|
|
}
|
|
export function isClipPathChanged(clipPaths, prevClipPaths) {
|
|
if (clipPaths === prevClipPaths || (!clipPaths && !prevClipPaths)) {
|
|
return false;
|
|
}
|
|
if (!clipPaths || !prevClipPaths || (clipPaths.length !== prevClipPaths.length)) {
|
|
return true;
|
|
}
|
|
for (var i = 0; i < clipPaths.length; i++) {
|
|
if (clipPaths[i] !== prevClipPaths[i]) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|