From patchwork Mon Sep 23 09:30:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cheng-Hao Yang X-Patchwork-Id: 21331 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 508B7C0F1B for ; Mon, 23 Sep 2024 09:33:30 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 6B2A163511; Mon, 23 Sep 2024 11:33:29 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="S/cfbqZX"; dkim-atps=neutral Received: from mail-pl1-x62c.google.com (mail-pl1-x62c.google.com [IPv6:2607:f8b0:4864:20::62c]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id D27ED6037E for ; Mon, 23 Sep 2024 11:33:25 +0200 (CEST) Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2068bee21d8so40480015ad.2 for ; Mon, 23 Sep 2024 02:33:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1727084004; x=1727688804; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5+PG4w4fqPObQDpO2iRBORfJQmqvEOjWQ7wghuQIuCM=; b=S/cfbqZXsBs4ey33IDiIWG91t6mIneDP2DlPz2RG0/HqtCnab+BQnK6x8wrxXse2+S uWzeU5I4DYHpmtZutzbyLbjtUbeaOLy3mMH2kuHSdD7GyvC7IC59rnfSsXscKIOHoUg8 jlYvmCyLWaT78Red7+bB9n3y9AwoD5ohZI+PE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727084004; x=1727688804; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5+PG4w4fqPObQDpO2iRBORfJQmqvEOjWQ7wghuQIuCM=; b=Ij9iFUKXSqx/HndJdPyU/9mdKfexRVWiSNL3YesejAbwzZUs1RYMvigNdcKm9XsKTM oCsTh9clXpAw4+cig2MI9JH+XsE4mE531tFdP4UyKAmCUnizt802JLWTeNTsq1wPRMBF RzGHUBK8GR9UYBzaYjT+w1L4vCZsPWucCcxxJR/TEJeaZ7yg5Bd0DoUKRjiVUvnl88ky wNIogxAO8Ij+upuQga0tKcR/u0zZlmsXIUMaAsaOZhhX2t4DIaI1zCjGQJBT41Vhds/N MM48YoRm6V2SvWWEyey9sunksESahbBxnhrwhPYflJD8rlXhNI1E2jhOypHUxHnIlzOV BGKQ== X-Gm-Message-State: AOJu0YyQhBYqSEY/t5miKysCB5mam2qstX7RdBJzPSAfBU1MP2lL14rW kOto48dy/pRL+1QLG1O3nE0ZqIlMcqCehlnPdfK7VYcCzghU5Ps6FtFtk98pG0NWEw35T2oQ4yU = X-Google-Smtp-Source: AGHT+IHhmkt25rJXdm6nntouFJ0CvUSgVNvWVmX4qUGe6sXV0vepge2iRRfM8+GHlIApYh2N2TqF+g== X-Received: by 2002:a17:902:e88f:b0:207:1722:37d4 with SMTP id d9443c01a7336-208d83db3c9mr149242845ad.33.1727084004101; Mon, 23 Sep 2024 02:33:24 -0700 (PDT) Received: from chenghaoyang-low.c.googlers.com.com (0.223.81.34.bc.googleusercontent.com. [34.81.223.0]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-207946d6673sm129864995ad.158.2024.09.23.02.33.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Sep 2024 02:33:23 -0700 (PDT) From: Harvey Yang X-Google-Original-From: Harvey Yang To: libcamera-devel@lists.libcamera.org Cc: Yudhistira Erlandinata , Harvey Yang , Jacopo Mondi Subject: [PATCH v5 1/3] libcamera: Add rectangle two-point constructor Date: Mon, 23 Sep 2024 09:30:44 +0000 Message-ID: <20240923093317.3500444-2-chenghaoyang@google.com> X-Mailer: git-send-email 2.46.0.792.g87dc391469-goog In-Reply-To: <20240923093317.3500444-1-chenghaoyang@google.com> References: <20240923093317.3500444-1-chenghaoyang@google.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" From: Yudhistira Erlandinata Add a Rectangle constructor that accepts two points: topLeft and bottomRight. Signed-off-by: Yudhistira Erlandinata Co-developed-by: Harvey Yang Reviewed-by: Jacopo Mondi Reviewed-by: Kieran Bingham --- include/libcamera/geometry.h | 7 +++++++ src/libcamera/geometry.cpp | 7 +++++++ test/geometry.cpp | 14 ++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/include/libcamera/geometry.h b/include/libcamera/geometry.h index 3e6f0f5d..5949d55c 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::max(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)) + { + } + int x; int y; unsigned int width; diff --git a/src/libcamera/geometry.cpp b/src/libcamera/geometry.cpp index 00015136..b608e4f0 100644 --- a/src/libcamera/geometry.cpp +++ b/src/libcamera/geometry.cpp @@ -629,6 +629,13 @@ std::ostream &operator<<(std::ostream &out, const SizeRange &sr) * \param[in] size The desired Rectangle size */ +/** + * \fn Rectangle::Rectangle(const Point &point1, const Point &point2) + * \brief Construct a Rectangle with the two given points + * \param[in] point1 One of the corner point of the rectangle + * \param[in] point2 The diagonal corner point from \a point1 + */ + /** * \var Rectangle::x * \brief The horizontal coordinate of the rectangle's top-left corner diff --git a/test/geometry.cpp b/test/geometry.cpp index 64169206..3ed2cc23 100644 --- a/test/geometry.cpp +++ b/test/geometry.cpp @@ -481,6 +481,20 @@ protected: return TestFail; } + Point topLeft(3, 3); + Point bottomRight(30, 30); + Point topRight(30, 3); + Point bottomLeft(3, 30); + Rectangle rect1(topLeft, bottomRight); + Rectangle rect2(topRight, bottomLeft); + Rectangle rect3(bottomRight, topLeft); + Rectangle rect4(bottomLeft, topRight); + + if (rect1 != rect2 || rect1 != rect3 || rect1 != rect4) { + cout << "Point-from-point construction failed" << endl; + return TestFail; + } + return TestPass; } };