diff --git a/src/clamp.cpp b/src/clamp.cpp index 88f0cf6c..8a8b034e 100644 --- a/src/clamp.cpp +++ b/src/clamp.cpp @@ -181,7 +181,17 @@ less(const libcamera::ControlValue &lhs, const libcamera::ControlValue &rhs) return false; } } + else if (rhs.isArray()) { + // scalar-array comparison + const libcamera::Span vb = rhs.get>(); + const T va = lhs.get(); + for (size_t i = 0; i < vb.size(); i++) + if (va < vb[i]) + return true; + return false; + } else { + assert(!lhs.isArray() && !rhs.isArray()); // scalar-scalar comparison return lhs.get() < rhs.get(); } @@ -211,7 +221,17 @@ greater(const libcamera::ControlValue &lhs, const libcamera::ControlValue &rhs) return false; } } + else if (rhs.isArray()) { + // scalar-array comparison + const libcamera::Span vb = rhs.get>(); + const T va = lhs.get(); + for (size_t i = 0; i < vb.size(); i++) + if (va > vb[i]) + return true; + return false; + } else { + assert(!lhs.isArray() && !rhs.isArray()); // scalar-scalar comparison return lhs.get() > rhs.get(); }