75 {
76 T r1_xmin = rect1.x;
77 T r1_xmax = rect1.x + rect1.width;
78 T r1_ymin = rect1.y;
79 T r1_ymax = rect1.y + rect1.height;
80 T r2_xmin = rect2.x;
81 T r2_xmax = rect2.x + rect2.width;
82 T r2_ymin = rect2.y;
83 T r2_ymax = rect2.y + rect2.height;
84 if (r2_xmin <= r1_xmax && r2_xmax >= r1_xmin && r2_ymin <= r1_ymax &&
85 r2_ymax >= r1_ymin) {
86 T xmin = std::max(r1_xmin, r2_xmin);
87 T ymin = std::max(r1_ymin, r2_ymin);
88 T xmax = std::min(r1_xmax, r2_xmax);
89 T ymax = std::min(r1_ymax, r2_ymax);
90 return Rect<T>(xmin, ymin, xmax - xmin, ymax - ymin);
91 } else {
93 }
94 }