From 6c0afb8b33a1586b2e5bb5543edca5103769af0e Mon Sep 17 00:00:00 2001
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date: Fri, 10 Jul 2020 11:23:25 +0300
Subject: libcamera: geometry: Add helper functions to the Size class
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Pipeline handlers commonly have to calculate the minimum or maximum of
multiple sizes, or align a size's width and height. Add helper functions
to the Size class to perform those tasks.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
---
 test/geometry.cpp | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

(limited to 'test')

diff --git a/test/geometry.cpp b/test/geometry.cpp
index 904ad92c..fd0132c0 100644
--- a/test/geometry.cpp
+++ b/test/geometry.cpp
@@ -46,6 +46,35 @@ protected:
 			return TestFail;
 		}
 
+		/* Test alignedDownTo(), alignedUpTo(), boundedTo() and expandedTo() */
+		if (Size(0, 0).alignedDownTo(16, 8) != Size(0, 0) ||
+		    Size(1, 1).alignedDownTo(16, 8) != Size(0, 0) ||
+		    Size(16, 8).alignedDownTo(16, 8) != Size(16, 8)) {
+			cout << "Size::alignedDownTo() test failed" << endl;
+			return TestFail;
+		}
+
+		if (Size(0, 0).alignedUpTo(16, 8) != Size(0, 0) ||
+		    Size(1, 1).alignedUpTo(16, 8) != Size(16, 8) ||
+		    Size(16, 8).alignedUpTo(16, 8) != Size(16, 8)) {
+			cout << "Size::alignedUpTo() test failed" << endl;
+			return TestFail;
+		}
+
+		if (Size(0, 0).boundedTo({ 100, 100 }) != Size(0, 0) ||
+		    Size(200, 50).boundedTo({ 100, 100 }) != Size(100, 50) ||
+		    Size(50, 200).boundedTo({ 100, 100 }) != Size(50, 100)) {
+			cout << "Size::boundedTo() test failed" << endl;
+			return TestFail;
+		}
+
+		if (Size(0, 0).expandedTo({ 100, 100 }) != Size(100, 100) ||
+		    Size(200, 50).expandedTo({ 100, 100 }) != Size(200, 100) ||
+		    Size(50, 200).expandedTo({ 100, 100 }) != Size(100, 200)) {
+			cout << "Size::expandedTo() test failed" << endl;
+			return TestFail;
+		}
+
 		/* Test Size equality and inequality. */
 		if (!compare(Size(100, 100), Size(100, 100), &operator==, "==", true))
 			return TestFail;
-- 
cgit v1.2.1