summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-07-15 01:41:07 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-07-15 17:29:59 +0300
commit4f509caa8ed0166ef2e99846f12b7997a37c3a7e (patch)
tree5ff55b3f5a5948e3a0d00333143f71f1ce97f0a8
parent935aec66ae50ec2448e052c95757b2a83e3999ba (diff)
libcamera: geometry: Give constructors to Rectangle
Rectangle, unlike Size, has no constructor, requiring the users to explicitly initialize the instances. This is error-prone, add constructors. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
-rw-r--r--include/libcamera/geometry.h15
-rw-r--r--src/libcamera/camera_sensor.cpp2
-rw-r--r--src/libcamera/geometry.cpp22
-rw-r--r--src/libcamera/pipeline/ipu3/imgu.cpp7
-rw-r--r--src/libcamera/pipeline/raspberrypi/raspberrypi.cpp7
-rw-r--r--src/libcamera/pipeline/vimc/vimc.cpp7
6 files changed, 41 insertions, 19 deletions
diff --git a/include/libcamera/geometry.h b/include/libcamera/geometry.h
index f3088d33..380248ac 100644
--- a/include/libcamera/geometry.h
+++ b/include/libcamera/geometry.h
@@ -127,6 +127,21 @@ static inline bool operator!=(const SizeRange &lhs, const SizeRange &rhs)
}
struct Rectangle {
+ Rectangle()
+ : Rectangle(0, 0, 0, 0)
+ {
+ }
+
+ Rectangle(int xpos, int ypos, const Size &size)
+ : x(xpos), y(ypos), width(size.width), height(size.height)
+ {
+ }
+
+ Rectangle(int xpos, int ypos, unsigned int w, unsigned int h)
+ : x(xpos), y(ypos), width(w), height(h)
+ {
+ }
+
int x;
int y;
unsigned int width;
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index b14b4051..6e93cc51 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -487,7 +487,7 @@ int CameraSensor::sensorInfo(CameraSensorInfo *info) const
info->model = model();
/* Get the active area size. */
- Rectangle rect = {};
+ Rectangle rect;
int ret = subdev_->getSelection(pad_, V4L2_SEL_TGT_CROP_DEFAULT, &rect);
if (ret) {
LOG(CameraSensor, Error)
diff --git a/src/libcamera/geometry.cpp b/src/libcamera/geometry.cpp
index 5a0bcf7c..3a3784df 100644
--- a/src/libcamera/geometry.cpp
+++ b/src/libcamera/geometry.cpp
@@ -298,6 +298,28 @@ bool operator==(const SizeRange &lhs, const SizeRange &rhs)
*/
/**
+ * \fn Rectangle::Rectangle()
+ * \brief Construct a Rectangle with all coordinates set to 0
+ */
+
+/**
+ * \fn Rectangle::Rectangle(int x, int y, const Size &size)
+ * \brief Construct a Rectangle with the given position and size
+ * \param[in] x The horizontal coordinate of the top-left corner
+ * \param[in] y The vertical coordinate of the top-left corner
+ * \param[in] size The size
+ */
+
+/**
+ * \fn Rectangle::Rectangle(int x, int y, unsigned int width, unsigned int height)
+ * \brief Construct a Rectangle with the given position and size
+ * \param[in] x The horizontal coordinate of the top-left corner
+ * \param[in] y The vertical coordinate of the top-left corner
+ * \param[in] width The width
+ * \param[in] height The height
+ */
+
+/**
* \var Rectangle::x
* \brief The horizontal coordinate of the rectangle's top-left corner
*/
diff --git a/src/libcamera/pipeline/ipu3/imgu.cpp b/src/libcamera/pipeline/ipu3/imgu.cpp
index d7f4173d..4bec4b2f 100644
--- a/src/libcamera/pipeline/ipu3/imgu.cpp
+++ b/src/libcamera/pipeline/ipu3/imgu.cpp
@@ -100,12 +100,7 @@ int ImgUDevice::configureInput(const Size &size,
* to configure the crop/compose rectangles, contradicting the
* V4L2 specification.
*/
- Rectangle rect = {
- .x = 0,
- .y = 0,
- .width = inputFormat->size.width,
- .height = inputFormat->size.height,
- };
+ Rectangle rect{ 0, 0, inputFormat->size };
ret = imgu_->setSelection(PAD_INPUT, V4L2_SEL_TGT_CROP, &rect);
if (ret)
return ret;
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index 009e502b..2d848ac3 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -752,12 +752,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)
}
/* Adjust aspect ratio by providing crops on the input image. */
- Rectangle crop = {
- .x = 0,
- .y = 0,
- .width = sensorFormat.size.width,
- .height = sensorFormat.size.height
- };
+ Rectangle crop{ 0, 0, sensorFormat.size };
int ar = maxSize.height * sensorFormat.size.width - maxSize.width * sensorFormat.size.height;
if (ar > 0)
diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp
index a6f457c7..4f461b92 100644
--- a/src/libcamera/pipeline/vimc/vimc.cpp
+++ b/src/libcamera/pipeline/vimc/vimc.cpp
@@ -256,12 +256,7 @@ int PipelineHandlerVimc::configure(Camera *camera, CameraConfiguration *config)
return ret;
if (data->media_->version() >= KERNEL_VERSION(5, 6, 0)) {
- Rectangle crop = {
- .x = 0,
- .y = 0,
- .width = subformat.size.width,
- .height = subformat.size.height,
- };
+ Rectangle crop{ 0, 0, subformat.size };
ret = data->scaler_->setSelection(0, V4L2_SEL_TGT_CROP, &crop);
if (ret)
return ret;