{"id":17958,"url":"https://patchwork.libcamera.org/api/1.1/patches/17958/?format=json","web_url":"https://patchwork.libcamera.org/patch/17958/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20221208134414.2917-1-david.plowman@raspberrypi.com>","date":"2022-12-08T13:44:14","name":"[libcamera-devel] py: Support controls that use an array of Rectangles","commit_ref":"a6b1ff2e6caa632fe041e3eae569acb861e3353b","pull_url":null,"state":"accepted","archived":false,"hash":"0634a60673c4606e895b83b273e16b5df2c99a85","submitter":{"id":42,"url":"https://patchwork.libcamera.org/api/1.1/people/42/?format=json","name":"David Plowman","email":"david.plowman@raspberrypi.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/17958/mbox/","series":[{"id":3661,"url":"https://patchwork.libcamera.org/api/1.1/series/3661/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=3661","date":"2022-12-08T13:44:14","name":"[libcamera-devel] py: Support controls that use an array of Rectangles","version":1,"mbox":"https://patchwork.libcamera.org/series/3661/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/17958/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/17958/checks/","tags":{},"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 88877BE08B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  8 Dec 2022 13:44:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CB90E63340;\n\tThu,  8 Dec 2022 14:44:20 +0100 (CET)","from mail-wm1-x332.google.com (mail-wm1-x332.google.com\n\t[IPv6:2a00:1450:4864:20::332])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A78046333B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  8 Dec 2022 14:44:18 +0100 (CET)","by mail-wm1-x332.google.com with SMTP id v7so1090909wmn.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 08 Dec 2022 05:44:18 -0800 (PST)","from pi4-davidp.pitowers.org\n\t([2a00:1098:3142:14:e4a2:3070:eea4:e434])\n\tby smtp.gmail.com with ESMTPSA id\n\tl12-20020a5d668c000000b00235da296623sm22537130wru.31.2022.12.08.05.44.17\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 08 Dec 2022 05:44:17 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1670507060;\n\tbh=pD1HA6wyMaPB4DozO4ha4O7g1INwrPF6gZsNQw58020=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:From;\n\tb=ieYiHgHduQWMT3G9zOY10etxiRR4I0pwcUP1hPdkKL0XH1kTRV6LYZN7XRSodPU2W\n\t1bGRcAqTN94cWq1FbgSwfnDMIy0mrmJY3qM5yd7wOSA6VuMrUM30rGrmr2lFKwxiXV\n\t2J5nIw8dEKyN4oDL29cBMwc6R61DkOMa94U7boOxuWZHLNG0gIK8X+eeidTlQiowgE\n\twuT2AdUDegx1oAoWIjyk/Rawaczz4V+buQzWD6dLaynguA12vHCL/mRaOqXQACTSbZ\n\tHUwWEkJHmzj72V6Cy/6EpPxVvBwnUA8Pm0I5maUpn1xqucZfPKixH9+TSi8Qeg3Kax\n\tLUEZD32oT49ng==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:from:to:cc:subject:date:message-id:reply-to;\n\tbh=FJolOTrMlufze8JmyK3JaUqHtwvmpMdh2Nq8ZEQwEhU=;\n\tb=HIKZUVXBV87MdbJ8qONEhhp14pnFSSC/twaKpGtO5VTFKK3UOhs5S0NN2Q7WVuE0pT\n\tYwMD2reGc8UXCXikWOkDIdvL0if5PxiREanMICGTX4csNUbj1JYP/Th2Hsyru274GPDJ\n\tq6hBc4Klpl4B5WkxWOrIvqYypzI6TlQJgbErHF8lH/yZY1zdO7ieTUzd187FMV5nhexr\n\twKGeOEkuvD6ye2fiQAmRNcjxK8kg6ltdCXUBB6PkktGAymuoTHlM1HJ/GYYx8m+riiR0\n\t459IVQkdWp6XtizpWaZ6bDqt7Og325Mg8avsH899AF/8OdypfK1Usz3ccIMBXLXAVuZq\n\tYMUA=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"HIKZUVXB\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=FJolOTrMlufze8JmyK3JaUqHtwvmpMdh2Nq8ZEQwEhU=;\n\tb=ud2Dw0dD0MED3AZDB4y+VN44rrWu9GpkBTwMQoEonNjP9IzDFBDYmqYjmQn1g7Xasa\n\tuRIpdTetCDuIYkfZC3aXrsJrG/1YH2oqhJd7msAwREeMElWydL3PVQufXUMUmIExqYz3\n\t7SARiUIPZXZXEBCAN4cVNJ1dW5xnUs1t15mlmSvv10K2Gt9sPtVurjdhb9m9PhZIdUv/\n\t1r1bk1N708gez+6sgdDlFLy/aA8NTnwyiDs4MJhlJx5ZgA7Oh9Uk9RaNZU4QVV9ie/Kt\n\t929cLkR2NE7MVFPwOL1qQMqit6LIDEdrbK3/Y4u0X90i2f+JNc0ooOVCWBPsWcccjw7R\n\tjuuw==","X-Gm-Message-State":"ANoB5pmabybIWp7Q0W3Mo1n86DV6Ts76xejEcgi9KuX1kRtJeFhYAcFN\n\tixA258g+vMCm1myhhs1tZlIK3hGy7co6SJ7c","X-Google-Smtp-Source":"AA0mqf7xLEhKEd2FFoI7H7bmAxIMApDsSfy2dDYVpRY2HbEzJCWZlgcO7h+mtTINwBTlE9H2ltv1Cg==","X-Received":"by 2002:a05:600c:1e89:b0:3cf:774b:ce6f with SMTP id\n\tbe9-20020a05600c1e8900b003cf774bce6fmr24957738wmb.133.1670507058016; \n\tThu, 08 Dec 2022 05:44:18 -0800 (PST)","To":"libcamera-devel@lists.libcamera.org","Date":"Thu,  8 Dec 2022 13:44:14 +0000","Message-Id":"<20221208134414.2917-1-david.plowman@raspberrypi.com>","X-Mailer":"git-send-email 2.30.2","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH] py: Support controls that use an array of\n\tRectangles","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>","From":"David Plowman via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"David Plowman <david.plowman@raspberrypi.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"The Python bindings will now accept, or return, a list or tuple of\nlibcamera.Rectangle objects for such controls.\n\nThis had previously been omitted, but now we have, for example, the\nAfWindows control which requires this feature.\n\nSigned-off-by: David Plowman <david.plowman@raspberrypi.com>\n---\n src/py/libcamera/py_helpers.cpp | 8 +++-----\n 1 file changed, 3 insertions(+), 5 deletions(-)","diff":"diff --git a/src/py/libcamera/py_helpers.cpp b/src/py/libcamera/py_helpers.cpp\nindex f685e606..79891ab6 100644\n--- a/src/py/libcamera/py_helpers.cpp\n+++ b/src/py/libcamera/py_helpers.cpp\n@@ -46,10 +46,8 @@ py::object controlValueToPy(const ControlValue &cv)\n \t\treturn valueOrTuple<float>(cv);\n \tcase ControlTypeString:\n \t\treturn py::cast(cv.get<std::string>());\n-\tcase ControlTypeRectangle: {\n-\t\tconst Rectangle *v = reinterpret_cast<const Rectangle *>(cv.data().data());\n-\t\treturn py::cast(v);\n-\t}\n+\tcase ControlTypeRectangle:\n+\t\treturn valueOrTuple<Rectangle>(cv);\n \tcase ControlTypeSize: {\n \t\tconst Size *v = reinterpret_cast<const Size *>(cv.data().data());\n \t\treturn py::cast(v);\n@@ -88,7 +86,7 @@ ControlValue pyToControlValue(const py::object &ob, ControlType type)\n \tcase ControlTypeString:\n \t\treturn ControlValue(ob.cast<std::string>());\n \tcase ControlTypeRectangle:\n-\t\treturn ControlValue(ob.cast<Rectangle>());\n+\t\treturn controlValueMaybeArray<Rectangle>(ob);\n \tcase ControlTypeSize:\n \t\treturn ControlValue(ob.cast<Size>());\n \tcase ControlTypeNone:\n","prefixes":["libcamera-devel"]}