Files
il/resources/public/js/cljs-runtime/module$node_modules$pixi_DOT_js$lib$scene$container$bounds$Bounds.js
2026-07-01 22:38:29 -06:00

228 lines
7.5 KiB
JavaScript

shadow$provide.module$node_modules$pixi_DOT_js$lib$scene$container$bounds$Bounds = function(global, require, module, exports) {
global = require("module$node_modules$pixi_DOT_js$lib$maths$matrix$Matrix");
var Rectangle = require("module$node_modules$pixi_DOT_js$lib$maths$shapes$Rectangle");
"use strict";
const defaultMatrix = new global.Matrix();
class Bounds {
constructor(minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity) {
this.minY = this.minX = Infinity;
this.maxY = this.maxX = -Infinity;
this.matrix = defaultMatrix;
this.minX = minX;
this.minY = minY;
this.maxX = maxX;
this.maxY = maxY;
}
isEmpty() {
return this.minX > this.maxX || this.minY > this.maxY;
}
get rectangle() {
this._rectangle || (this._rectangle = new Rectangle.Rectangle());
const rectangle = this._rectangle;
this.minX > this.maxX || this.minY > this.maxY ? (rectangle.x = 0, rectangle.y = 0, rectangle.width = 0, rectangle.height = 0) : rectangle.copyFromBounds(this);
return rectangle;
}
clear() {
this.minY = this.minX = Infinity;
this.maxY = this.maxX = -Infinity;
this.matrix = defaultMatrix;
return this;
}
set(x0, y0, x1, y1) {
this.minX = x0;
this.minY = y0;
this.maxX = x1;
this.maxY = y1;
}
addFrame(x0, y0, x1, y1, matrix) {
matrix || (matrix = this.matrix);
const a = matrix.a, b = matrix.b, c = matrix.c, d = matrix.d, tx = matrix.tx;
matrix = matrix.ty;
let minX = this.minX, minY = this.minY, maxX = this.maxX, maxY = this.maxY, x = a * x0 + c * y0 + tx, y = b * x0 + d * y0 + matrix;
x < minX && (minX = x);
y < minY && (minY = y);
x > maxX && (maxX = x);
y > maxY && (maxY = y);
x = a * x1 + c * y0 + tx;
y = b * x1 + d * y0 + matrix;
x < minX && (minX = x);
y < minY && (minY = y);
x > maxX && (maxX = x);
y > maxY && (maxY = y);
x = a * x0 + c * y1 + tx;
y = b * x0 + d * y1 + matrix;
x < minX && (minX = x);
y < minY && (minY = y);
x > maxX && (maxX = x);
y > maxY && (maxY = y);
x = a * x1 + c * y1 + tx;
y = b * x1 + d * y1 + matrix;
x < minX && (minX = x);
y < minY && (minY = y);
x > maxX && (maxX = x);
y > maxY && (maxY = y);
this.minX = minX;
this.minY = minY;
this.maxX = maxX;
this.maxY = maxY;
}
addRect(rect, matrix) {
this.addFrame(rect.x, rect.y, rect.x + rect.width, rect.y + rect.height, matrix);
}
addBounds(bounds, matrix) {
this.addFrame(bounds.minX, bounds.minY, bounds.maxX, bounds.maxY, matrix);
}
addBoundsMask(mask) {
this.minX = this.minX > mask.minX ? this.minX : mask.minX;
this.minY = this.minY > mask.minY ? this.minY : mask.minY;
this.maxX = this.maxX < mask.maxX ? this.maxX : mask.maxX;
this.maxY = this.maxY < mask.maxY ? this.maxY : mask.maxY;
}
applyMatrix(matrix) {
const minX = this.minX, minY = this.minY, maxX = this.maxX, maxY = this.maxY, {a, b, c, d, tx, ty} = matrix;
matrix = a * minX + c * minY + tx;
let y = b * minX + d * minY + ty;
this.minX = matrix;
this.minY = y;
this.maxX = matrix;
this.maxY = y;
matrix = a * maxX + c * minY + tx;
y = b * maxX + d * minY + ty;
this.minX = matrix < this.minX ? matrix : this.minX;
this.minY = y < this.minY ? y : this.minY;
this.maxX = matrix > this.maxX ? matrix : this.maxX;
this.maxY = y > this.maxY ? y : this.maxY;
matrix = a * minX + c * maxY + tx;
y = b * minX + d * maxY + ty;
this.minX = matrix < this.minX ? matrix : this.minX;
this.minY = y < this.minY ? y : this.minY;
this.maxX = matrix > this.maxX ? matrix : this.maxX;
this.maxY = y > this.maxY ? y : this.maxY;
matrix = a * maxX + c * maxY + tx;
y = b * maxX + d * maxY + ty;
this.minX = matrix < this.minX ? matrix : this.minX;
this.minY = y < this.minY ? y : this.minY;
this.maxX = matrix > this.maxX ? matrix : this.maxX;
this.maxY = y > this.maxY ? y : this.maxY;
}
fit(rect) {
this.minX < rect.left && (this.minX = rect.left);
this.maxX > rect.right && (this.maxX = rect.right);
this.minY < rect.top && (this.minY = rect.top);
this.maxY > rect.bottom && (this.maxY = rect.bottom);
return this;
}
fitBounds(left, right, top, bottom) {
this.minX < left && (this.minX = left);
this.maxX > right && (this.maxX = right);
this.minY < top && (this.minY = top);
this.maxY > bottom && (this.maxY = bottom);
return this;
}
pad(paddingX, paddingY = paddingX) {
this.minX -= paddingX;
this.maxX += paddingX;
this.minY -= paddingY;
this.maxY += paddingY;
return this;
}
ceil() {
this.minX = Math.floor(this.minX);
this.minY = Math.floor(this.minY);
this.maxX = Math.ceil(this.maxX);
this.maxY = Math.ceil(this.maxY);
return this;
}
clone() {
return new Bounds(this.minX, this.minY, this.maxX, this.maxY);
}
scale(x, y = x) {
this.minX *= x;
this.minY *= y;
this.maxX *= x;
this.maxY *= y;
return this;
}
get x() {
return this.minX;
}
set x(value) {
const width = this.maxX - this.minX;
this.minX = value;
this.maxX = value + width;
}
get y() {
return this.minY;
}
set y(value) {
const height = this.maxY - this.minY;
this.minY = value;
this.maxY = value + height;
}
get width() {
return this.maxX - this.minX;
}
set width(value) {
this.maxX = this.minX + value;
}
get height() {
return this.maxY - this.minY;
}
set height(value) {
this.maxY = this.minY + value;
}
get left() {
return this.minX;
}
get right() {
return this.maxX;
}
get top() {
return this.minY;
}
get bottom() {
return this.maxY;
}
get isPositive() {
return 0 < this.maxX - this.minX && 0 < this.maxY - this.minY;
}
get isValid() {
return Infinity !== this.minX + this.minY;
}
addVertexData(vertexData, beginOffset, endOffset, matrix) {
let minX = this.minX, minY = this.minY, maxX = this.maxX, maxY = this.maxY;
matrix || (matrix = this.matrix);
const a = matrix.a, b = matrix.b, c = matrix.c, d = matrix.d, tx = matrix.tx;
for (matrix = matrix.ty; beginOffset < endOffset; beginOffset += 2) {
var localX = vertexData[beginOffset];
const localY = vertexData[beginOffset + 1], x = a * localX + c * localY + tx;
localX = b * localX + d * localY + matrix;
minX = x < minX ? x : minX;
minY = localX < minY ? localX : minY;
maxX = x > maxX ? x : maxX;
maxY = localX > maxY ? localX : maxY;
}
this.minX = minX;
this.minY = minY;
this.maxX = maxX;
this.maxY = maxY;
}
containsPoint(x, y) {
return this.minX <= x && this.minY <= y && this.maxX >= x && this.maxY >= y ? !0 : !1;
}
toString() {
return `[pixi.js:Bounds minX=${this.minX} minY=${this.minY} maxX=${this.maxX} maxY=${this.maxY} width=${this.width} height=${this.height}]`;
}
copyFrom(bounds) {
this.minX = bounds.minX;
this.minY = bounds.minY;
this.maxX = bounds.maxX;
this.maxY = bounds.maxY;
return this;
}
}
exports.Bounds = Bounds;
};
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$scene$container$bounds$Bounds.js.map