From patchwork Wed Sep 25 08:12:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harvey Yang X-Patchwork-Id: 21350 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 60282C0F1B for ; Wed, 25 Sep 2024 08:16:07 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 04B0A6350B; Wed, 25 Sep 2024 10:16:07 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="O++BF+7f"; 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 441E463502 for ; Wed, 25 Sep 2024 10:16:03 +0200 (CEST) Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-205659dc63aso55246875ad.1 for ; Wed, 25 Sep 2024 01:16:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1727252161; x=1727856961; 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=O++BF+7fQvClx7sFpwYRd8bDJ0VTaGRtisEYjwpmOyhACgtWjSm/Z7ACsKJuAffkKN ZzLHODMD9QpdnZGXh3ql5UljVn+TNbirng3o97BoB/X8nCk99lC9zBDHy/6OZwEJ/a0b vXYK/+diFzybG5hVgIhYPgRWwr/s5Lslnci7w= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727252161; x=1727856961; 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=IlYwtpIiuPC8fwFLIGu3DhiN8pk7U7r9Nt6YC7lKHxWh5vIT73gIXvbL1W7NW0IaXc WO8fB9JVsykDPEr65olVIu7pQiNXutp3CCczBgaKu4Jv8UN+SFWTHDhT2bm+Y45F+PYM 7VOJkf7thky89kMgb6Xwcbz5wgkjFqbP0mrTXKm2O24EQ23NRbD5zgsAZECDKVj2K4KS 9D7YXWCCErxxIac77TM3Hj7Ap4wO4MXOa76FSDMMejeMXw4+ig6vWYrLzHdK7PR7uZz8 xHoKxPv5nsXfScMVxH4+9sPeIh9+mpCakD3sgs/u3YRpb04/nw88x4BR4JtOtTfKZNkf i39Q== X-Gm-Message-State: AOJu0YwmVyj7yDBOO8fZtKTOOP9+G8831dMwyzjwhI+v2GBaYr+RuzOE dYL+DvAna7qMGkpNPW0tL+Cen9RbrVoUGBv8GLiS9Mznz1aUf+jwKDAU2I8VSGVBtbn5c2OtrOo = X-Google-Smtp-Source: AGHT+IG04SXniC3wCns0hjTy1nUbhn/ErQCqDQPo4Z+CIniqwulOJmqkBLUlqcEP5lJn6axsUp8JKQ== X-Received: by 2002:a17:902:c94a:b0:202:26d:146c with SMTP id d9443c01a7336-20afc42d838mr24931395ad.5.1727252160864; Wed, 25 Sep 2024 01:16:00 -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-20b002aaa8fsm6336465ad.240.2024.09.25.01.15.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Sep 2024 01:16:00 -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 v8 1/3] libcamera: Add rectangle two-point constructor Date: Wed, 25 Sep 2024 08:12:24 +0000 Message-ID: <20240925081551.3265942-2-chenghaoyang@google.com> X-Mailer: git-send-email 2.46.0.792.g87dc391469-goog In-Reply-To: <20240925081551.3265942-1-chenghaoyang@google.com> References: <20240925081551.3265942-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; } };