#include #include #include #include #include #include #include #include #include "geometry.h" Rectangles::Rectangles() { rectangles.clear(); } Rectangles::Rectangles(vector rectangles_to_put) { for (size_t i = 0; i < rectangles_to_put.size(); i++) { rectangles.push_back(rectangles_to_put[i]); } } Rectangle & Rectangles:: operator[](int number) { return rectangles[number]; } int Rectangles::size() const { return rectangles.size(); } bool Rectangles:: operator==(Rectangles &x) const { if (size() != x.size()) { return false; } for (int i = 0; i < size(); i++) { if (!(rectangles[i] == x[i])) { return false; } } return true; } void Rectangles::split_horizontally(int idx, int place) { Rectangle x = rectangles[idx]; rectangles.erase(rectangles.begin() + idx); pair to_put = x.split_horizontally(place); rectangles.insert(rectangles.begin() + idx, to_put.first); rectangles.insert(rectangles.begin() + idx + 1, to_put.second); } void Rectangles::split_vertically(int idx, int place) { Rectangle x = rectangles[idx]; rectangles.erase(rectangles.begin() + idx); pair to_put = x.split_vertically(place); rectangles.insert(rectangles.begin() + idx, to_put.first); rectangles.insert(rectangles.begin() + idx + 1, to_put.second); } Rectangles & Rectangles::operator+=(const Vector &vector) { for (int i = 0; i < size(); i++) { rectangles[i] = rectangles[i] + vector; } return *this; } //operators Rectangles operator+(const Rectangles &rectangles, const Vector &vector) { Rectangles result = rectangles; result += vector; return Rectangles(result.rectangles); } Rectangles operator+(const Vector &vector, const Rectangles &rectangles ) { return rectangles+vector; }