[PATCH v3 03/16] libcamera: matrix: Add a Span based constructor
Paul Elder
paul.elder at ideasonboard.com
Wed May 7 17:40:17 CEST 2025
On Thu, Apr 03, 2025 at 05:49:08PM +0200, Stefan Klug wrote:
> When one wants to create a Matrix from existing data, currently the only
> way is via std::array. Add a Span based constructor to allow creation
> from vectors and alike.
>
> Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
>
> ---
>
> Changes in v2:
> - Added this patch
>
> Changes in v3:
> - Pass the Span by value
> ---
> include/libcamera/internal/matrix.h | 5 +++++
> src/libcamera/matrix.cpp | 10 ++++++++++
> 2 files changed, 15 insertions(+)
>
> diff --git a/include/libcamera/internal/matrix.h b/include/libcamera/internal/matrix.h
> index 512c1162c3bc..6d40567af0a0 100644
> --- a/include/libcamera/internal/matrix.h
> +++ b/include/libcamera/internal/matrix.h
> @@ -34,6 +34,11 @@ public:
> std::copy(data.begin(), data.end(), data_.begin());
> }
>
> + Matrix(const Span<const T, Rows * Cols> data)
> + {
> + std::copy(data.begin(), data.end(), data_.begin());
> + }
> +
> static constexpr Matrix identity()
> {
> Matrix ret;
> diff --git a/src/libcamera/matrix.cpp b/src/libcamera/matrix.cpp
> index e7e027225666..49e2aa3b4f2c 100644
> --- a/src/libcamera/matrix.cpp
> +++ b/src/libcamera/matrix.cpp
> @@ -41,6 +41,16 @@ LOG_DEFINE_CATEGORY(Matrix)
> * number of rows and columns of the matrix (Rows x Cols).
> */
>
> +/**
> + * \fn Matrix::Matrix(const Span<const T, Rows * Cols> data)
> + * \brief Construct a matrix from supplied data
> + * \param[in] data Data from which to construct a matrix
> + *
> + * \a data is a one-dimensional Span and will be turned into a matrix in
> + * row-major order. The size of \a data must be equal to the product of the
> + * number of rows and columns of the matrix (Rows x Cols).
> + */
> +
> /**
> * \fn Matrix::identity()
> * \brief Construct an identity matrix
> --
> 2.43.0
>
More information about the libcamera-devel
mailing list