[{"id":31307,"web_url":"https://patchwork.libcamera.org/comment/31307/","msgid":"<172708755538.3331495.12914551619764971590@ping.linuxembedded.co.uk>","date":"2024-09-23T10:32:35","subject":"Re: [PATCH v5 1/3] libcamera: Add rectangle two-point constructor","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Harvey Yang (2024-09-23 10:30:44)\n> From: Yudhistira Erlandinata <yerlandinata@chromium.org>\n> \n> Add a Rectangle constructor that accepts two points:\n> topLeft and bottomRight.\n> \n> Signed-off-by: Yudhistira Erlandinata <yerlandinata@chromium.org>\n> Co-developed-by: Harvey Yang <chenghaoyang@chromium.org>\n> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> ---\n>  include/libcamera/geometry.h |  7 +++++++\n>  src/libcamera/geometry.cpp   |  7 +++++++\n>  test/geometry.cpp            | 14 ++++++++++++++\n>  3 files changed, 28 insertions(+)\n> \n> diff --git a/include/libcamera/geometry.h b/include/libcamera/geometry.h\n> index 3e6f0f5d..5949d55c 100644\n> --- a/include/libcamera/geometry.h\n> +++ b/include/libcamera/geometry.h\n> @@ -262,6 +262,13 @@ public:\n>         {\n>         }\n>  \n> +       constexpr Rectangle(const Point &point1, const Point &point2)\n> +               : Rectangle(std::min(point1.x, point2.x), std::max(point1.y, point2.y),\n> +                           std::max(point1.x, point2.x) - std::min(point1.x, point2.x),\n> +                           std::max(point1.y, point2.y) - std::min(point1.y, point2.y))\n> +       {\n> +       }\n> +\n>         int x;\n>         int y;\n>         unsigned int width;\n> diff --git a/src/libcamera/geometry.cpp b/src/libcamera/geometry.cpp\n> index 00015136..b608e4f0 100644\n> --- a/src/libcamera/geometry.cpp\n> +++ b/src/libcamera/geometry.cpp\n> @@ -629,6 +629,13 @@ std::ostream &operator<<(std::ostream &out, const SizeRange &sr)\n>   * \\param[in] size The desired Rectangle size\n>   */\n>  \n> +/**\n> + * \\fn Rectangle::Rectangle(const Point &point1, const Point &point2)\n> + * \\brief Construct a Rectangle with the two given points\n> + * \\param[in] point1 One of the corner point of the rectangle\n\n\"One corner point of the rectangle\"\nor\n\"One of the corner points of the rectangle\"\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\n> + * \\param[in] point2 The diagonal corner point from \\a point1\n> + */\n> +\n>  /**\n>   * \\var Rectangle::x\n>   * \\brief The horizontal coordinate of the rectangle's top-left corner\n> diff --git a/test/geometry.cpp b/test/geometry.cpp\n> index 64169206..3ed2cc23 100644\n> --- a/test/geometry.cpp\n> +++ b/test/geometry.cpp\n> @@ -481,6 +481,20 @@ protected:\n>                         return TestFail;\n>                 }\n>  \n> +               Point topLeft(3, 3);\n> +               Point bottomRight(30, 30);\n> +               Point topRight(30, 3);\n> +               Point bottomLeft(3, 30);\n> +               Rectangle rect1(topLeft, bottomRight);\n> +               Rectangle rect2(topRight, bottomLeft);\n> +               Rectangle rect3(bottomRight, topLeft);\n> +               Rectangle rect4(bottomLeft, topRight);\n> +\n> +               if (rect1 != rect2 || rect1 != rect3 || rect1 != rect4) {\n> +                       cout << \"Point-from-point construction failed\" << endl;\n> +                       return TestFail;\n> +               }\n> +\n>                 return TestPass;\n>         }\n>  };\n> -- \n> 2.46.0.792.g87dc391469-goog\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 358AFC3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 23 Sep 2024 10:32:41 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 09BFC6350B;\n\tMon, 23 Sep 2024 12:32:40 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A84CC6037E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 23 Sep 2024 12:32:38 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 7F35B2E0;\n\tMon, 23 Sep 2024 12:31:12 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"oai6u81I\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1727087472;\n\tbh=KPbTWVy3vnTSdtIiShzeEa1+2AU9J/HW8+MoAA6TLxw=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=oai6u81I44JiAmghJ7L0BwF/U+duPL/XKyLThLSMiChU5BD9jBiZwGH2uR3DEsqjy\n\t0Y61m8cdnpz5K/ZhKSRoEsCsn1V2I59JddRVOsbf6UE0gediry3RsYa4eu3bLitXh6\n\tE8lN7QnNDtLM/reBmQKpZr9pSjtfdM02hmUjd++4=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20240923093317.3500444-2-chenghaoyang@google.com>","References":"<20240923093317.3500444-1-chenghaoyang@google.com>\n\t<20240923093317.3500444-2-chenghaoyang@google.com>","Subject":"Re: [PATCH v5 1/3] libcamera: Add rectangle two-point constructor","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Yudhistira Erlandinata <yerlandinata@chromium.org>,\n\tHarvey Yang <chenghaoyang@chromium.org>,\n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"Harvey Yang <chenghaoyang@chromium.org>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 23 Sep 2024 11:32:35 +0100","Message-ID":"<172708755538.3331495.12914551619764971590@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":31331,"web_url":"https://patchwork.libcamera.org/comment/31331/","msgid":"<CAEB1ahs=BDEOXqQnkyijbz+g5_itR1=DjU8YM4+1F26ss7otqw@mail.gmail.com>","date":"2024-09-24T11:04:32","subject":"Re: [PATCH v5 1/3] libcamera: Add rectangle two-point constructor","submitter":{"id":117,"url":"https://patchwork.libcamera.org/api/people/117/","name":"Cheng-Hao Yang","email":"chenghaoyang@chromium.org"},"content":"Hi Kieran,\n\nOn Mon, Sep 23, 2024 at 6:32 PM Kieran Bingham\n<kieran.bingham@ideasonboard.com> wrote:\n>\n> Quoting Harvey Yang (2024-09-23 10:30:44)\n> > From: Yudhistira Erlandinata <yerlandinata@chromium.org>\n> >\n> > Add a Rectangle constructor that accepts two points:\n> > topLeft and bottomRight.\n> >\n> > Signed-off-by: Yudhistira Erlandinata <yerlandinata@chromium.org>\n> > Co-developed-by: Harvey Yang <chenghaoyang@chromium.org>\n> > Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> > ---\n> >  include/libcamera/geometry.h |  7 +++++++\n> >  src/libcamera/geometry.cpp   |  7 +++++++\n> >  test/geometry.cpp            | 14 ++++++++++++++\n> >  3 files changed, 28 insertions(+)\n> >\n> > diff --git a/include/libcamera/geometry.h b/include/libcamera/geometry.h\n> > index 3e6f0f5d..5949d55c 100644\n> > --- a/include/libcamera/geometry.h\n> > +++ b/include/libcamera/geometry.h\n> > @@ -262,6 +262,13 @@ public:\n> >         {\n> >         }\n> >\n> > +       constexpr Rectangle(const Point &point1, const Point &point2)\n> > +               : Rectangle(std::min(point1.x, point2.x), std::max(point1.y, point2.y),\n> > +                           std::max(point1.x, point2.x) - std::min(point1.x, point2.x),\n> > +                           std::max(point1.y, point2.y) - std::min(point1.y, point2.y))\n> > +       {\n> > +       }\n> > +\n> >         int x;\n> >         int y;\n> >         unsigned int width;\n> > diff --git a/src/libcamera/geometry.cpp b/src/libcamera/geometry.cpp\n> > index 00015136..b608e4f0 100644\n> > --- a/src/libcamera/geometry.cpp\n> > +++ b/src/libcamera/geometry.cpp\n> > @@ -629,6 +629,13 @@ std::ostream &operator<<(std::ostream &out, const SizeRange &sr)\n> >   * \\param[in] size The desired Rectangle size\n> >   */\n> >\n> > +/**\n> > + * \\fn Rectangle::Rectangle(const Point &point1, const Point &point2)\n> > + * \\brief Construct a Rectangle with the two given points\n> > + * \\param[in] point1 One of the corner point of the rectangle\n>\n> \"One corner point of the rectangle\"\n> or\n> \"One of the corner points of the rectangle\"\n\nSorry to miss this in v6. Fixed in v7.\n\nBR,\nHarvey\n\n>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>\n>\n> > + * \\param[in] point2 The diagonal corner point from \\a point1\n> > + */\n> > +\n> >  /**\n> >   * \\var Rectangle::x\n> >   * \\brief The horizontal coordinate of the rectangle's top-left corner\n> > diff --git a/test/geometry.cpp b/test/geometry.cpp\n> > index 64169206..3ed2cc23 100644\n> > --- a/test/geometry.cpp\n> > +++ b/test/geometry.cpp\n> > @@ -481,6 +481,20 @@ protected:\n> >                         return TestFail;\n> >                 }\n> >\n> > +               Point topLeft(3, 3);\n> > +               Point bottomRight(30, 30);\n> > +               Point topRight(30, 3);\n> > +               Point bottomLeft(3, 30);\n> > +               Rectangle rect1(topLeft, bottomRight);\n> > +               Rectangle rect2(topRight, bottomLeft);\n> > +               Rectangle rect3(bottomRight, topLeft);\n> > +               Rectangle rect4(bottomLeft, topRight);\n> > +\n> > +               if (rect1 != rect2 || rect1 != rect3 || rect1 != rect4) {\n> > +                       cout << \"Point-from-point construction failed\" << endl;\n> > +                       return TestFail;\n> > +               }\n> > +\n> >                 return TestPass;\n> >         }\n> >  };\n> > --\n> > 2.46.0.792.g87dc391469-goog\n> >","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id F3F09C0F1B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 24 Sep 2024 11:04:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A5AF463512;\n\tTue, 24 Sep 2024 13:04:45 +0200 (CEST)","from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com\n\t[IPv6:2a00:1450:4864:20::22d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F311263500\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 24 Sep 2024 13:04:43 +0200 (CEST)","by mail-lj1-x22d.google.com with SMTP id\n\t38308e7fff4ca-2f77fe7ccc4so51228391fa.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 24 Sep 2024 04:04:43 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"aPs9YzoO\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=chromium.org; s=google; t=1727175883; x=1727780683;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=PJO4Z/GdGrPC/QOxH0MkgNSfP889REV84KdD+VCmiV0=;\n\tb=aPs9YzoORppnegvBEIVFj9/tPWx/9LNLadFCDk452X62HWp+iGND4rN30jUxn/OvZi\n\tX6/lNHh5c995OcVwQ/65KpQwgIna3URBYMRfe3thiho1sz3nd6LGlDQaazJGNYCNeJwr\n\t1m+FjlogVjK6ihhS/lwdw6DVIgdkbmpk4rAwk=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1727175883; x=1727780683;\n\th=content-transfer-encoding:cc:to:subject:message-id:date:from\n\t:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=PJO4Z/GdGrPC/QOxH0MkgNSfP889REV84KdD+VCmiV0=;\n\tb=PRdte24wS4UdeFPgdoSCBYcPk98CJezB/UkwTfhuWwErUw8mVL6qfb1TnR4Ub6nIqT\n\tLNtY4HqRHRn+Je5Lrk4xZHml5Hqazas7mQfbcYY+TbsQ/hePuOZGkgge37z/A5we8NVp\n\tcLRQe7a2n+vVYr7oTlDZ5wIjVtmbuuGy32uIRTJI7bpwG6bLnqCFeHNHVvVe9kpo9f1j\n\tlkG4uOi4/ecnFi9xQBCzssLpLv9uE2f0BKB5hC3WfeXpgBngN5uCIix//sMKc7Fo+pMd\n\tV/B4k+McUvOFVuP4XzqyeMW3+haHOWL8L575O8TkB+HE91yVxwWye2HeexLpcTX/CQZ+\n\tYXdQ==","X-Gm-Message-State":"AOJu0Yw6v6K4+hHXIp5D3nxY3Txx2oFyQvz9o1PEqgMFIy638j+nn1Sb\n\tsiDPWjeUGGlPxLeyt5b4tsCNqVF2rqD3wgILbCXnxmhys9VEfgfIY45yaPEJ0I4pTdoiFbfzPk1\n\tOyP3WUcaC2Ti5ZF2UdjYPHHpiPkSo+67ESga2","X-Google-Smtp-Source":"AGHT+IG4i7k7xe78DX3bCG3wdWjQdiOFtvnag6IATtqsRMpp+v+MCl+cyUsn9f/iwZH+Hwf/6y4xkfDwOBL9cxyDpr0=","X-Received":"by 2002:a05:651c:544:b0:2f3:fd4a:eac6 with SMTP id\n\t38308e7fff4ca-2f7cb300772mr80301381fa.18.1727175883048;\n\tTue, 24 Sep 2024 04:04:43 -0700 (PDT)","MIME-Version":"1.0","References":"<20240923093317.3500444-1-chenghaoyang@google.com>\n\t<20240923093317.3500444-2-chenghaoyang@google.com>\n\t<172708755538.3331495.12914551619764971590@ping.linuxembedded.co.uk>","In-Reply-To":"<172708755538.3331495.12914551619764971590@ping.linuxembedded.co.uk>","From":"Cheng-Hao Yang <chenghaoyang@chromium.org>","Date":"Tue, 24 Sep 2024 19:04:32 +0800","Message-ID":"<CAEB1ahs=BDEOXqQnkyijbz+g5_itR1=DjU8YM4+1F26ss7otqw@mail.gmail.com>","Subject":"Re: [PATCH v5 1/3] libcamera: Add rectangle two-point constructor","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org, \n\tYudhistira Erlandinata <yerlandinata@chromium.org>,\n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]