export default class GeometryRectCollection { constructor() { this.rects = []; } isContainingRect(rect) { for (let r = 0; r < this.rects.length; r++) { if (rect.isEqual(this.rects[r])) { return true; } } return false; } getUniqueWidth() { if (this.getLength() === 0) { return null; } else if (this.getLength() === 1) { return this.rects[0]; } let widths = [this.rects[0].width]; for (let r = 0; r < this.getLength(); r++) { if (widths.indexOf(this.rects[r].width) !== -1) { return this.rects[r]; } widths.push(rect.width); } return null; } getUniqueHeight() { if (this.getLength() === 0) { return null; } else if (this.getLength() === 1) { return this.rects[0].height; } let heights = [this.rects[0].height]; for (let r = 0; r < this.getLength(); r++) { if (heights.indexOf(rect.height) !== -1) { return rect.height; } heights.push(rect.height); } return null; } addRect(rect) { if (!this.isContainingRect(rect)) { this.rects.push(rect); } } getLength() { return this.rects.length; } getEqualWidths() { if (this.getLength() === 0) { return null; } let width = this.rects[0].width; for (let r = 1; r < this.getLength(); r++) { if (this.rects[r].width === width) { return false; } } return true; } hasEqualWidths() { if (this.getLength() === 0) { return false; } let width = this.rects[0].width; for (let r = 1; r < this.getLength(); r++) { if (this.rects[r].width !== width) { return false; } } return true; } hasEqualHeights() { if (this.getLength() === 0) { return false; } let height = this.rects[0].height; for (let r = 1; r < this.getLength(); r++) { if (this.rects[r].height !== height) { return false; } } return true; } forEach(callback) { this.rects.forEach(callback); } getRect(index) { return this.rects[index]; } }