[libcamera-devel] [PATCH v3 04/16] libcamera: geometry: SizeRange: Add contains()
Niklas Söderlund
niklas.soderlund at ragnatech.se
Sun Jun 16 15:33:50 CEST 2019
Add a method to check if a Size can fit inside a SizeRange. When
determining if a size is containable take step values into account if
they are not set to 0.
Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
---
include/libcamera/geometry.h | 2 ++
src/libcamera/geometry.cpp | 16 ++++++++++++++++
2 files changed, 18 insertions(+)
diff --git a/include/libcamera/geometry.h b/include/libcamera/geometry.h
index 03962d7d09fac2b0..52f4d010de76f840 100644
--- a/include/libcamera/geometry.h
+++ b/include/libcamera/geometry.h
@@ -92,6 +92,8 @@ public:
{
}
+ bool contains(const Size &size) const;
+
std::string toString() const;
Size min;
diff --git a/src/libcamera/geometry.cpp b/src/libcamera/geometry.cpp
index 895861eb0678181b..ef919cb6beb19864 100644
--- a/src/libcamera/geometry.cpp
+++ b/src/libcamera/geometry.cpp
@@ -261,6 +261,22 @@ bool operator<(const Size &lhs, const Size &rhs)
* \brief The vertical step
*/
+/**
+ * \brief Test if a size is contained in the range
+ * \param[in] size Size to check
+ * \returns True if \a size can be contained
+ */
+bool SizeRange::contains(const Size &size) const
+{
+ if (size.width < min.width || size.width > max.width ||
+ size.height < min.height || size.height > max.height ||
+ (hStep && (size.width - min.width) % hStep) ||
+ (vStep && (size.height - min.height) % vStep))
+ return false;
+
+ return true;
+}
+
/**
* \brief Assemble and return a string describing the size range
* \return A string describing the SizeRange
--
2.21.0
More information about the libcamera-devel
mailing list