mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 18:52:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			32 lines
		
	
	
	
		
			759 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			759 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "Rect.h"
 | |
| #include <AK/StdLibExtras.h>
 | |
| #include "kstdio.h"
 | |
| 
 | |
| void Rect::intersect(const Rect& other)
 | |
| {
 | |
|     int l = max(left(), other.left());
 | |
|     int r = min(right(), other.right());
 | |
|     int t = max(top(), other.top());
 | |
|     int b = min(bottom(), other.bottom());
 | |
| 
 | |
|     if (l >= r || t >= b) {
 | |
|         m_location = { };
 | |
|         m_size = { };
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     m_location.setX(l);
 | |
|     m_location.setY(t);
 | |
|     m_size.setWidth((r - l) + 1);
 | |
|     m_size.setHeight((b - t) + 1);
 | |
| }
 | |
| 
 | |
| Rect Rect::united(const Rect& other) const
 | |
| {
 | |
|     Rect rect;
 | |
|     rect.set_left(min(left(), other.left()));
 | |
|     rect.set_top(min(top(), other.top()));
 | |
|     rect.set_right(max(right(), other.right()));
 | |
|     rect.set_bottom(max(bottom(), other.bottom()));
 | |
|     return rect;
 | |
| }
 | 
