Iosevka/font-src/support/geometry/box.js
2021-07-15 21:14:08 -07:00

49 lines
1,005 B
JavaScript

"use strict";
const { mix } = require("../utils");
class Box {
constructor(t, b, l, r) {
this.top = t;
this.bottom = this.bot = b;
this.left = l;
this.right = r;
this.xMid = this.xMiddle = mix(l, r, 0.5);
this.yMid = this.yMiddle = mix(b, t, 0.5);
}
withTop(t) {
return new Box(t, this.bottom, this.left, this.right);
}
withBottom(b) {
return new Box(this.top, b, this.left, this.right);
}
withLeft(l) {
return new Box(this.top, this.bottom, l, this.right);
}
withRight(r) {
return new Box(this.top, this.bottom, this.left, r);
}
withXPadding(d) {
return new Box(this.top, this.bottom, this.left + d, this.right - d);
}
withYPadding(d) {
return new Box(this.top - d, this.bottom + d, this.left, this.right);
}
mixX(t) {
return mix(this.left, this.right, t);
}
mixXMidLeft(t) {
return mix(this.xMid, this.left, t);
}
mixXMidRight(t) {
return mix(this.xMid, this.right, t);
}
mixY(t) {
return mix(this.bottom, this.top, t);
}
}
exports.Box = Box;