Files
blockly/core/utils/rect.ts
Maribeth Bottorff 88ff901a72 chore: use prettier instead of clang-format (#7014)
* chore: add and configure prettier

* chore: remove clang-format

* chore: remove clang-format config

* chore: lint additional ts files

* chore: fix lint errors in blocks

* chore: add prettier-ignore where needed

* chore: ignore js blocks when formatting

* chore: fix playground html syntax

* chore: fix yaml spacing from merge

* chore: convert text blocks to use arrow functions

* chore: format everything with prettier

* chore: fix lint unused imports in blocks
2023-05-10 16:01:39 -07:00

63 lines
1.5 KiB
TypeScript

/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
/**
* Utility methods for rectangle manipulation.
* These methods are not specific to Blockly, and could be factored out into
* a JavaScript framework such as Closure.
*
* @class
*/
import * as goog from '../../closure/goog/goog.js';
goog.declareModuleId('Blockly.utils.Rect');
/**
* Class for representing rectangular regions.
*/
export class Rect {
/**
* @param top Top.
* @param bottom Bottom.
* @param left Left.
* @param right Right.
*/
constructor(
public top: number,
public bottom: number,
public left: number,
public right: number
) {}
/**
* Tests whether this rectangle contains a x/y coordinate.
*
* @param x The x coordinate to test for containment.
* @param y The y coordinate to test for containment.
* @returns Whether this rectangle contains given coordinate.
*/
contains(x: number, y: number): boolean {
return (
x >= this.left && x <= this.right && y >= this.top && y <= this.bottom
);
}
/**
* Tests whether this rectangle intersects the provided rectangle.
* Assumes that the coordinate system increases going down and left.
*
* @param other The other rectangle to check for intersection with.
* @returns Whether this rectangle intersects the provided rectangle.
*/
intersects(other: Rect): boolean {
return !(
this.left > other.right ||
this.right < other.left ||
this.top > other.bottom ||
this.bottom < other.top
);
}
}