From patchwork Tue Sep 24 11:02: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: 21343 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 DC814C0F1B for ; Tue, 24 Sep 2024 11:04:06 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 158D263513; Tue, 24 Sep 2024 13:04:05 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="FahYZNLq"; dkim-atps=neutral Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id E695063500 for ; Tue, 24 Sep 2024 13:04:01 +0200 (CEST) Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-7d4f85766f0so4412500a12.2 for ; Tue, 24 Sep 2024 04:04:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1727175840; x=1727780640; 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=tBhL4xEvsxdss/ASWIxhXN6eYcF3o/Wyd4aQEAOsBrg=; b=FahYZNLqt2rl4hJLp0x1jjUNeqSLPFsH2t5RbNwmwBRI+cc/c849W3RY8oej05U6W3 h0Hapo0gDSkgbvGWVke+evAdLjdwFZhtob5Ar8drZO24rvcenEfEuNOO4LpvM6SBcaoX s7MwnnSH/lOXu0y/PKkDe+eOQnXX1fp8uJgkI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727175840; x=1727780640; 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=tBhL4xEvsxdss/ASWIxhXN6eYcF3o/Wyd4aQEAOsBrg=; b=BHIsgZfHhX2cWgwqlV8vE2y9WXNHQ/e5e1jyMHqadNBfEy0Y2A4E6+aWuls1/EQ8Yu o5EKLS+9mYeWAFUjI3MjQ36L92U0A1Qi8WpDq18e6eKqbFcQ0IzZlKrCNS4q+X04vdqK GAtjOKJoUABeYDEcJA9foyPZ5rWWOQVmxuz5Mc4gVU1aNtmEqaabu6gmfZ1r2/M59eI7 ZzSebejlKNYhwJCkWcLvZxk0ZXX9y5zoNXL2X62/G4fOk8IPRvXaLgmcC7W2ExUtZGDq TNOzo5V4wmhuzepA+ah511rJrINHD1a/bUIZ2Nj8wxrj7hCt4jQ1r7m+bSFpoCeTrb0w pPvg== X-Gm-Message-State: AOJu0YzA93dP1TKs9ihh0RhypH76h4XD7fBE1RFXEr5HUel7vdY/PCYO fU/RwO5NaYB46vuMfOB6BTDXSrmn8BKX6jgymrMCh+IhMF8EdQ3qEBcbdyXUItTb+T6/LQxZ8fk = X-Google-Smtp-Source: AGHT+IG1M9lyMeWoMjzcxqNis2T6ntd6MqQMTJ80QPDeKDr5IqagisbDRoIp0jiWlXhj1ywg+ZnxyQ== X-Received: by 2002:a05:6a21:1193:b0:1d2:e1cc:649c with SMTP id adf61e73a8af0-1d30a91f295mr19977155637.15.1727175840127; Tue, 24 Sep 2024 04:04:00 -0700 (PDT) Received: from chenghaoyang-low.c.googlers.com.com (208.158.221.35.bc.googleusercontent.com. [35.221.158.208]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71afc9833c3sm993326b3a.182.2024.09.24.04.03.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Sep 2024 04:03:59 -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 v7 1/3] libcamera: Add rectangle two-point constructor Date: Tue, 24 Sep 2024 11:02:44 +0000 Message-ID: <20240924110353.2025397-2-chenghaoyang@google.com> X-Mailer: git-send-email 2.46.0.792.g87dc391469-goog In-Reply-To: <20240924110353.2025397-1-chenghaoyang@google.com> References: <20240924110353.2025397-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 --- 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..3c47dcdc 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 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; } };