summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/py/libcamera/py_enums.cpp3
-rw-r--r--src/py/libcamera/py_helpers.cpp16
2 files changed, 12 insertions, 7 deletions
diff --git a/src/py/libcamera/py_enums.cpp b/src/py/libcamera/py_enums.cpp
index ca6aeb86..9e75ec1a 100644
--- a/src/py/libcamera/py_enums.cpp
+++ b/src/py/libcamera/py_enums.cpp
@@ -32,7 +32,8 @@ void init_py_enums(py::module &m)
.value("Float", ControlType::ControlTypeFloat)
.value("String", ControlType::ControlTypeString)
.value("Rectangle", ControlType::ControlTypeRectangle)
- .value("Size", ControlType::ControlTypeSize);
+ .value("Size", ControlType::ControlTypeSize)
+ .value("Point", ControlType::ControlTypePoint);
py::enum_<Orientation>(m, "Orientation")
.value("Rotate0", Orientation::Rotate0)
diff --git a/src/py/libcamera/py_helpers.cpp b/src/py/libcamera/py_helpers.cpp
index 79891ab6..1ad1d4c1 100644
--- a/src/py/libcamera/py_helpers.cpp
+++ b/src/py/libcamera/py_helpers.cpp
@@ -34,6 +34,8 @@ static py::object valueOrTuple(const ControlValue &cv)
py::object controlValueToPy(const ControlValue &cv)
{
switch (cv.type()) {
+ case ControlTypeNone:
+ return py::none();
case ControlTypeBool:
return valueOrTuple<bool>(cv);
case ControlTypeByte:
@@ -46,14 +48,14 @@ py::object controlValueToPy(const ControlValue &cv)
return valueOrTuple<float>(cv);
case ControlTypeString:
return py::cast(cv.get<std::string>());
- case ControlTypeRectangle:
- return valueOrTuple<Rectangle>(cv);
case ControlTypeSize: {
const Size *v = reinterpret_cast<const Size *>(cv.data().data());
return py::cast(v);
}
- case ControlTypeNone:
- return py::none();
+ case ControlTypeRectangle:
+ return valueOrTuple<Rectangle>(cv);
+ case ControlTypePoint:
+ return valueOrTuple<Point>(cv);
default:
throw std::runtime_error("Unsupported ControlValue type");
}
@@ -73,6 +75,8 @@ static ControlValue controlValueMaybeArray(const py::object &ob)
ControlValue pyToControlValue(const py::object &ob, ControlType type)
{
switch (type) {
+ case ControlTypeNone:
+ return ControlValue();
case ControlTypeBool:
return ControlValue(ob.cast<bool>());
case ControlTypeByte:
@@ -89,8 +93,8 @@ ControlValue pyToControlValue(const py::object &ob, ControlType type)
return controlValueMaybeArray<Rectangle>(ob);
case ControlTypeSize:
return ControlValue(ob.cast<Size>());
- case ControlTypeNone:
- return ControlValue();
+ case ControlTypePoint:
+ return controlValueMaybeArray<Point>(ob);
default:
throw std::runtime_error("Control type not implemented");
}