diff options
author | Yudhistira Erlandinata <yerlandinata@chromium.org> | 2024-09-30 16:02:24 +0200 |
---|---|---|
committer | Jacopo Mondi <jacopo.mondi@ideasonboard.com> | 2024-10-01 21:01:49 +0200 |
commit | 200d535ca85f23e6c562335c5d9badb5be4db28f (patch) | |
tree | 3ea3166bef8a435e057675f55a777d37a805a001 | |
parent | 724bbf7d2506d65e060c9475010738983f5b85bd (diff) |
libcamera: controls: Add ControlTypePoint
Add a control_type<> specialization for libcamera::Point to allow
storing data of that type in a ControlValue instance.
The new control type will be used by controls introduced in the
next patches.
Signed-off-by: Yudhistira Erlandinata <yerlandinata@chromium.org>
Co-developed-by: Becker Hsieh <beckerh@chromium.org>
Co-developed-by: Harvey Yang <chenghaoyang@chromium.org>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Harvey Yang <chenghaoyang@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r-- | include/libcamera/controls.h | 6 | ||||
-rw-r--r-- | src/libcamera/controls.cpp | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h index c5131870..ca60bbac 100644 --- a/include/libcamera/controls.h +++ b/include/libcamera/controls.h @@ -35,6 +35,7 @@ enum ControlType { ControlTypeString, ControlTypeRectangle, ControlTypeSize, + ControlTypePoint, }; namespace details { @@ -97,6 +98,11 @@ struct control_type<Size> { static constexpr std::size_t size = 0; }; +template<> +struct control_type<Point> { + static constexpr ControlType value = ControlTypePoint; +}; + template<typename T, std::size_t N> struct control_type<Span<T, N>> : public control_type<std::remove_cv_t<T>> { static constexpr std::size_t size = N; diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp index ea439730..62185d64 100644 --- a/src/libcamera/controls.cpp +++ b/src/libcamera/controls.cpp @@ -60,6 +60,7 @@ static constexpr size_t ControlValueSize[] = { [ControlTypeString] = sizeof(char), [ControlTypeRectangle] = sizeof(Rectangle), [ControlTypeSize] = sizeof(Size), + [ControlTypePoint] = sizeof(Point), }; } /* namespace */ @@ -254,6 +255,11 @@ std::string ControlValue::toString() const str += value->toString(); break; } + case ControlTypePoint: { + const Point *value = reinterpret_cast<const Point *>(data); + str += value->toString(); + break; + } case ControlTypeNone: case ControlTypeString: break; |