Message ID | 20200425205639.30566-1-laurent.pinchart@ideasonboard.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
Hi Laurent, Thanks for your work. On 2020-04-25 23:56:38 +0300, Laurent Pinchart wrote: > Add two control types to store rectangles and sizes. These will be > useful for the properties related to the pixel array. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> > --- > include/libcamera/controls.h | 13 +++++++++++++ > src/libcamera/controls.cpp | 12 ++++++++++++ > 2 files changed, 25 insertions(+) > > diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h > index 4b2e7e9cdd6c..80944efc133a 100644 > --- a/include/libcamera/controls.h > +++ b/include/libcamera/controls.h > @@ -13,6 +13,7 @@ > #include <string> > #include <unordered_map> > > +#include <libcamera/geometry.h> > #include <libcamera/span.h> > > namespace libcamera { > @@ -27,6 +28,8 @@ enum ControlType { > ControlTypeInteger64, > ControlTypeFloat, > ControlTypeString, > + ControlTypeRectangle, > + ControlTypeSize, > }; > > namespace details { > @@ -70,6 +73,16 @@ struct control_type<std::string> { > static constexpr ControlType value = ControlTypeString; > }; > > +template<> > +struct control_type<Rectangle> { > + static constexpr ControlType value = ControlTypeRectangle; > +}; > + > +template<> > +struct control_type<Size> { > + static constexpr ControlType value = ControlTypeSize; > +}; > + > template<typename T, std::size_t N> > struct control_type<Span<T, N>> : public control_type<std::remove_cv_t<T>> { > }; > diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp > index 540cc026417a..08df7f29e938 100644 > --- a/src/libcamera/controls.cpp > +++ b/src/libcamera/controls.cpp > @@ -58,6 +58,8 @@ static constexpr size_t ControlValueSize[] = { > [ControlTypeInteger64] = sizeof(int64_t), > [ControlTypeFloat] = sizeof(float), > [ControlTypeString] = sizeof(char), > + [ControlTypeRectangle] = sizeof(Rectangle), > + [ControlTypeSize] = sizeof(Size), > }; > > } /* namespace */ > @@ -242,6 +244,16 @@ std::string ControlValue::toString() const > str += std::to_string(*value); > break; > } > + case ControlTypeRectangle: { > + const Rectangle *value = reinterpret_cast<const Rectangle *>(data); > + str += value->toString(); > + break; > + } > + case ControlTypeSize: { > + const Size *value = reinterpret_cast<const Size *>(data); > + str += value->toString(); > + break; > + } > case ControlTypeNone: > case ControlTypeString: > break; > -- > Regards, > > Laurent Pinchart > > _______________________________________________ > libcamera-devel mailing list > libcamera-devel@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel
Hi Laurent, On Sat, Apr 25, 2020 at 11:56:38PM +0300, Laurent Pinchart wrote: > Add two control types to store rectangles and sizes. These will be > useful for the properties related to the pixel array. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Please push this one! > --- > include/libcamera/controls.h | 13 +++++++++++++ > src/libcamera/controls.cpp | 12 ++++++++++++ > 2 files changed, 25 insertions(+) > > diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h > index 4b2e7e9cdd6c..80944efc133a 100644 > --- a/include/libcamera/controls.h > +++ b/include/libcamera/controls.h > @@ -13,6 +13,7 @@ > #include <string> > #include <unordered_map> > > +#include <libcamera/geometry.h> > #include <libcamera/span.h> > > namespace libcamera { > @@ -27,6 +28,8 @@ enum ControlType { > ControlTypeInteger64, > ControlTypeFloat, > ControlTypeString, > + ControlTypeRectangle, > + ControlTypeSize, > }; > > namespace details { > @@ -70,6 +73,16 @@ struct control_type<std::string> { > static constexpr ControlType value = ControlTypeString; > }; > > +template<> > +struct control_type<Rectangle> { > + static constexpr ControlType value = ControlTypeRectangle; > +}; > + > +template<> > +struct control_type<Size> { > + static constexpr ControlType value = ControlTypeSize; > +}; > + > template<typename T, std::size_t N> > struct control_type<Span<T, N>> : public control_type<std::remove_cv_t<T>> { > }; > diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp > index 540cc026417a..08df7f29e938 100644 > --- a/src/libcamera/controls.cpp > +++ b/src/libcamera/controls.cpp > @@ -58,6 +58,8 @@ static constexpr size_t ControlValueSize[] = { > [ControlTypeInteger64] = sizeof(int64_t), > [ControlTypeFloat] = sizeof(float), > [ControlTypeString] = sizeof(char), > + [ControlTypeRectangle] = sizeof(Rectangle), > + [ControlTypeSize] = sizeof(Size), > }; > > } /* namespace */ > @@ -242,6 +244,16 @@ std::string ControlValue::toString() const > str += std::to_string(*value); > break; > } > + case ControlTypeRectangle: { > + const Rectangle *value = reinterpret_cast<const Rectangle *>(data); > + str += value->toString(); > + break; > + } > + case ControlTypeSize: { > + const Size *value = reinterpret_cast<const Size *>(data); > + str += value->toString(); > + break; > + } > case ControlTypeNone: > case ControlTypeString: > break; > -- > Regards, > > Laurent Pinchart >
diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h index 4b2e7e9cdd6c..80944efc133a 100644 --- a/include/libcamera/controls.h +++ b/include/libcamera/controls.h @@ -13,6 +13,7 @@ #include <string> #include <unordered_map> +#include <libcamera/geometry.h> #include <libcamera/span.h> namespace libcamera { @@ -27,6 +28,8 @@ enum ControlType { ControlTypeInteger64, ControlTypeFloat, ControlTypeString, + ControlTypeRectangle, + ControlTypeSize, }; namespace details { @@ -70,6 +73,16 @@ struct control_type<std::string> { static constexpr ControlType value = ControlTypeString; }; +template<> +struct control_type<Rectangle> { + static constexpr ControlType value = ControlTypeRectangle; +}; + +template<> +struct control_type<Size> { + static constexpr ControlType value = ControlTypeSize; +}; + template<typename T, std::size_t N> struct control_type<Span<T, N>> : public control_type<std::remove_cv_t<T>> { }; diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp index 540cc026417a..08df7f29e938 100644 --- a/src/libcamera/controls.cpp +++ b/src/libcamera/controls.cpp @@ -58,6 +58,8 @@ static constexpr size_t ControlValueSize[] = { [ControlTypeInteger64] = sizeof(int64_t), [ControlTypeFloat] = sizeof(float), [ControlTypeString] = sizeof(char), + [ControlTypeRectangle] = sizeof(Rectangle), + [ControlTypeSize] = sizeof(Size), }; } /* namespace */ @@ -242,6 +244,16 @@ std::string ControlValue::toString() const str += std::to_string(*value); break; } + case ControlTypeRectangle: { + const Rectangle *value = reinterpret_cast<const Rectangle *>(data); + str += value->toString(); + break; + } + case ControlTypeSize: { + const Size *value = reinterpret_cast<const Size *>(data); + str += value->toString(); + break; + } case ControlTypeNone: case ControlTypeString: break;
Add two control types to store rectangles and sizes. These will be useful for the properties related to the pixel array. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- include/libcamera/controls.h | 13 +++++++++++++ src/libcamera/controls.cpp | 12 ++++++++++++ 2 files changed, 25 insertions(+)