Facebook
From Walloping Echidna, 7 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 281
  1. #include <utility>
  2. #include <limits>
  3. #include <algorithm>
  4. #include <iostream>
  5. #include <stdio.h>
  6. #include <set>
  7. #include <assert.h>
  8. #include <vector>
  9. #include "geometry.h"
  10.  
  11.  
  12.  
  13. Rectangles::Rectangles()
  14. {
  15.         rectangles.clear();
  16.  
  17. }
  18.  
  19. Rectangles::Rectangles(vector<Rectangle> rectangles_to_put)
  20. {
  21.         for (size_t i = 0; i < rectangles_to_put.size(); i++)
  22.         {
  23.                 rectangles.push_back(rectangles_to_put[i]);
  24.         }
  25. }
  26.  
  27.  
  28. Rectangle & Rectangles:: operator[](int number)
  29. {
  30.         return rectangles[number];
  31. }
  32.  
  33. int Rectangles::size() const
  34. {
  35.         return rectangles.size();
  36. }
  37.  
  38. bool Rectangles:: operator==(Rectangles &x) const
  39. {
  40.         if (size() != x.size())
  41.         {
  42.                 return false;
  43.         }
  44.         for (int i = 0; i < size(); i++)
  45.         {
  46.                 if (!(rectangles[i] == x[i]))
  47.                 {
  48.                         return false;
  49.                 }
  50.         }
  51.         return true;
  52. }
  53.  
  54. void Rectangles::split_horizontally(int idx, int place)
  55. {
  56.         Rectangle x = rectangles[idx];
  57.         rectangles.erase(rectangles.begin() + idx);
  58.         pair<Rectangle, Rectangle> to_put = x.split_horizontally(place);
  59.         rectangles.insert(rectangles.begin() + idx, to_put.first);
  60.         rectangles.insert(rectangles.begin() + idx + 1, to_put.second);
  61. }
  62.  
  63. void Rectangles::split_vertically(int idx, int place)
  64. {
  65.         Rectangle x = rectangles[idx];
  66.         rectangles.erase(rectangles.begin() + idx);
  67.         pair<Rectangle, Rectangle> to_put = x.split_vertically(place);
  68.         rectangles.insert(rectangles.begin() + idx, to_put.first);
  69.         rectangles.insert(rectangles.begin() + idx + 1, to_put.second);
  70. }
  71.  
  72.  
  73. Rectangles & Rectangles::operator+=(const Vector &vector)
  74. {
  75.         for (int i = 0; i < size(); i++)
  76.         {
  77.                 rectangles[i] = rectangles[i] + vector;
  78.         }
  79.         return *this;
  80. }
  81.  
  82.  
  83.  
  84. //operators
  85.  
  86. Rectangles operator+(const Rectangles &rectangles, const Vector &vector)
  87. {
  88.         Rectangles result = rectangles;
  89.         result += vector;
  90.         return Rectangles(result.rectangles);
  91. }
  92.  
  93. Rectangles operator+(const Vector &vector, const Rectangles &rectangles )
  94. {
  95.         return rectangles+vector;
  96. }
  97.