feat: adding animation for the window border

This commit is contained in:
Lucas Oskorep
2024-11-08 19:54:19 -05:00
parent 91213ed63a
commit 39ddbcd2bc
5 changed files with 175 additions and 36 deletions
+73
View File
@@ -0,0 +1,73 @@
export default class RGBColor {
r: number;
g: number;
b: number;
a: number;
constructor(r: number, g: number, b: number, a: number = 0.8) {
this.r = r;
this.g = g;
this.b = b;
this.a = a;
}
static fromHSL(hsl: HSLColor): RGBColor {
// Normalize HSL values
hsl.h = hsl.h % 360;
hsl.s = Math.max(0, Math.min(1, hsl.s));
hsl.l = Math.max(0, Math.min(1, hsl.l));
hsl.a = Math.max(0, Math.min(1, hsl.a)); // Clamp alpha between 0 and 1
const c = (1 - Math.abs(2 * hsl.l - 1)) * hsl.s;
const x = c * (1 - Math.abs((hsl.h / 60) % 2 - 1));
const m = hsl.l - c / 2;
let r = 0, g = 0, b = 0;
if (hsl.h < 60) {
r = c;
g = x;
b = 0;
} else if (hsl.h < 120) {
r = x;
g = c;
b = 0;
} else if (hsl.h < 180) {
r = 0;
g = c;
b = x;
} else if (hsl.h < 240) {
r = 0;
g = x;
b = c;
} else if (hsl.h < 300) {
r = x;
g = 0;
b = c;
} else {
r = c;
g = 0;
b = x;
}
return new RGBColor(
Math.round((r + m) * 255),
Math.round((g + m) * 255),
Math.round((b + m) * 255),
hsl.a
);
}
}
export class HSLColor {
h: number;
s: number;
l: number;
a: number;
constructor(h: number, s: number, l: number, a: number = .8) {
this.h = h;
this.s = s;
this.l = l;
this.a = a;
}
}