package org.eclipse.nebula.widgets.nattable.core.geometry

import java.math.BigDecimal

class PixelRectangleInvariants {
	
	def static PixelRectangle intersect(PixelRectangle rect1, PixelRectangle rect2) {
		val startX = rect1.x.max(rect2.x)
		val startY = rect1.y.max(rect2.y)
		val endX = rect1.x + rect1.width.min(rect2.x + rect2.width)
		val endY = rect1.y + rect1.height.min(rect2.y + rect2.height)
		new PixelRectangle(startX, startY, BigDecimal::ZERO.max(endX - startX), BigDecimal::ZERO.max(endY - startY))
	}
	
	def static boolean isEmpty(PixelRectangle rect) {
		rect.width == 0 || rect.height == 0
	}
	
}