mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 09:36:46 +00:00
quickshell and hyprland additions
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
.pragma library
|
||||
|
||||
/**
|
||||
* @param {number} x
|
||||
* @param {number} y
|
||||
* @returns {Point}
|
||||
*/
|
||||
function createPoint(x, y) {
|
||||
return new Point(x, y);
|
||||
}
|
||||
|
||||
class Point {
|
||||
/**
|
||||
* @param {float} x
|
||||
* @param {float} y
|
||||
*/
|
||||
constructor(x, y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {float} x
|
||||
* @param {float} y
|
||||
* @returns {Point}
|
||||
*/
|
||||
copy(x = this.x, y = this.y) {
|
||||
return new Point(x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {float}
|
||||
*/
|
||||
getDistance() {
|
||||
return Math.sqrt(this.x * this.x + this.y * this.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {float}
|
||||
*/
|
||||
getDistanceSquared() {
|
||||
return this.x * this.x + this.y * this.y;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Point} other
|
||||
* @returns {float}
|
||||
*/
|
||||
dotProduct(other) {
|
||||
return this.x * other.x + this.y * other.y;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {float} otherX
|
||||
* @param {float} otherY
|
||||
* @returns {float}
|
||||
*/
|
||||
dotProductScalar(otherX, otherY) {
|
||||
return this.x * otherX + this.y * otherY;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Point} other
|
||||
* @returns {boolean}
|
||||
*/
|
||||
clockwise(other) {
|
||||
return this.x * other.y - this.y * other.x > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Point}
|
||||
*/
|
||||
getDirection() {
|
||||
const d = this.getDistance();
|
||||
return this.div(d);
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Point}
|
||||
*/
|
||||
negate() {
|
||||
return new Point(-this.x, -this.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Point} other
|
||||
* @returns {Point}
|
||||
*/
|
||||
minus(other) {
|
||||
return new Point(this.x - other.x, this.y - other.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Point} other
|
||||
* @returns {Point}
|
||||
*/
|
||||
plus(other) {
|
||||
return new Point(this.x + other.x, this.y + other.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {float} operand
|
||||
* @returns {Point}
|
||||
*/
|
||||
times(operand) {
|
||||
return new Point(this.x * operand, this.y * operand);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {float} operand
|
||||
* @returns {Point}
|
||||
*/
|
||||
div(operand) {
|
||||
return new Point(this.x / operand, this.y / operand);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {float} operand
|
||||
* @returns {Point}
|
||||
*/
|
||||
rem(operand) {
|
||||
return new Point(this.x % operand, this.y % operand);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Point} start
|
||||
* @param {Point} stop
|
||||
* @param {float} fraction
|
||||
* @returns {Point}
|
||||
*/
|
||||
static interpolate(start, stop, fraction) {
|
||||
return new Point(
|
||||
start.x + (stop.x - start.x) * fraction,
|
||||
start.y + (stop.y - start.y) * fraction
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {function(float, float): Point} f
|
||||
* @returns {Point}
|
||||
*/
|
||||
transformed(f) {
|
||||
const result = f(this.x, this.y);
|
||||
return new Point(result.x, result.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Point}
|
||||
*/
|
||||
rotate90() {
|
||||
return new Point(-this.y, this.x);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user