mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-09 17:40:09 +00:00
85 lines
2.7 KiB
TypeScript
85 lines
2.7 KiB
TypeScript
|
|
//API *************************************************
|
|
//like rect but rounded corners
|
|
export function loadPolyfills() {
|
|
if (typeof (window) != "undefined" && window.CanvasRenderingContext2D && !window.CanvasRenderingContext2D.prototype.roundRect) {
|
|
// @ts-expect-error Slightly broken polyfill - radius_low not impl. anywhere
|
|
window.CanvasRenderingContext2D.prototype.roundRect = function (
|
|
x,
|
|
y,
|
|
w,
|
|
h,
|
|
radius,
|
|
radius_low
|
|
) {
|
|
let top_left_radius = 0;
|
|
let top_right_radius = 0;
|
|
let bottom_left_radius = 0;
|
|
let bottom_right_radius = 0;
|
|
|
|
if (radius === 0) {
|
|
this.rect(x, y, w, h);
|
|
return;
|
|
}
|
|
|
|
if (radius_low === undefined)
|
|
radius_low = radius;
|
|
|
|
//make it compatible with official one
|
|
if (radius != null && radius.constructor === Array) {
|
|
if (radius.length == 1)
|
|
top_left_radius = top_right_radius = bottom_left_radius = bottom_right_radius = radius[0];
|
|
else if (radius.length == 2) {
|
|
top_left_radius = bottom_right_radius = radius[0];
|
|
top_right_radius = bottom_left_radius = radius[1];
|
|
}
|
|
else if (radius.length == 4) {
|
|
top_left_radius = radius[0];
|
|
top_right_radius = radius[1];
|
|
bottom_left_radius = radius[2];
|
|
bottom_right_radius = radius[3];
|
|
}
|
|
else
|
|
return;
|
|
}
|
|
else //old using numbers
|
|
{
|
|
top_left_radius = radius || 0;
|
|
top_right_radius = radius || 0;
|
|
bottom_left_radius = radius_low || 0;
|
|
bottom_right_radius = radius_low || 0;
|
|
}
|
|
|
|
//top right
|
|
this.moveTo(x + top_left_radius, y);
|
|
this.lineTo(x + w - top_right_radius, y);
|
|
this.quadraticCurveTo(x + w, y, x + w, y + top_right_radius);
|
|
|
|
//bottom right
|
|
this.lineTo(x + w, y + h - bottom_right_radius);
|
|
this.quadraticCurveTo(
|
|
x + w,
|
|
y + h,
|
|
x + w - bottom_right_radius,
|
|
y + h
|
|
);
|
|
|
|
//bottom left
|
|
this.lineTo(x + bottom_right_radius, y + h);
|
|
this.quadraticCurveTo(x, y + h, x, y + h - bottom_left_radius);
|
|
|
|
//top left
|
|
this.lineTo(x, y + bottom_left_radius);
|
|
this.quadraticCurveTo(x, y, x + top_left_radius, y);
|
|
};
|
|
}//if
|
|
|
|
if (typeof window != "undefined" && !window["requestAnimationFrame"]) {
|
|
window.requestAnimationFrame =
|
|
// @ts-expect-error Legacy code
|
|
window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame ||
|
|
function (callback) {
|
|
window.setTimeout(callback, 1000 / 60);
|
|
};
|
|
}
|
|
} |