[PATCH v9 2/5] libcamera: geometry: Add two-point Rectangle constructor

Jacopo Mondi jacopo.mondi at ideasonboard.com
Tue Oct 1 09:50:17 CEST 2024


Hi Barnabás

On Mon, Sep 30, 2024 at 10:50:30PM GMT, Barnabás Pőcze wrote:
> Hi
>
>
> 2024. szeptember 30., hétfő 21:59 keltezéssel, Jacopo Mondi <jacopo.mondi at ideasonboard.com> írta:
>
> > From: Yudhistira Erlandinata <yerlandinata at chromium.org>
> >
> > Add a constructor to the Rectangle class that accepts two points.
> >
> > The constructed Rectangle spans all the space between the two given
> > points.
> >
> > Signed-off-by: Yudhistira Erlandinata <yerlandinata at chromium.org>
> > Co-developed-by: Harvey Yang <chenghaoyang at chromium.org>
> > Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
> > Signed-off-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
> > ---
> >  include/libcamera/geometry.h |  7 +++++
> >  src/libcamera/geometry.cpp   | 58 ++++++++++++++++++++++++++++++++++++
> >  test/geometry.cpp            | 14 +++++++++
> >  3 files changed, 79 insertions(+)
> >
> > diff --git a/include/libcamera/geometry.h b/include/libcamera/geometry.h
> > index 3e6f0f5d7fab..2cc25f1facd9 100644
> > --- a/include/libcamera/geometry.h
> > +++ b/include/libcamera/geometry.h
> > @@ -262,6 +262,13 @@ public:
> >  	{
> >  	}
> >
> > +	constexpr Rectangle(const Point &point1, const Point &point2)
> > +		: Rectangle(std::min(point1.x, point2.x), std::min(point1.y, point2.y),
> > +			    std::max(point1.x, point2.x) - std::min(point1.x, point2.x),
> > +			    std::max(point1.y, point2.y) - std::min(point1.y, point2.y))
>
> The subtraction can lead to under/overflow. I believe simply casting to
> `unsigned` avoids that, e.g.:
>
>   unsigned(std::max(point1.x, point2.x)) - unsigned(std::min(point1.x, point2.x))
>
> Although I don't foresee it causing any issues, since the fix is easy,
> I think it's worth doing.

Is this because we're subtracting two signed values and assign the
result to an unsigned ?

It shouldn't be an issue, but better safe than sorry, so I'll happily
take your suggestion in.

Thanks
  j

>
>
> Regards,
> Barnabás Pőcze
>
> > +	{
> > +	}
> > +
> >  	int x;
> >  	int y;
> >  	unsigned int width;
> > [...]


More information about the libcamera-devel mailing list