new file mode 100644
@@ -0,0 +1,49 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2019, Google Inc.
+ *
+ * geometry.cpp - Geometry-related structures
+ */
+
+#include "geometry.h"
+
+/**
+ * \file geometry.h
+ * \brief Data structures related to geometric objects
+ */
+
+namespace libcamera {
+
+/**
+ * \struct Rectangle
+ * \brief Describe a rectangle's position and dimensions
+ *
+ * Rectangles are used to identify an area of an image. They are specified by
+ * the coordinates of top-left corner and their horizontal and vertical size.
+ *
+ * The measure unit of the rectangle coordinates and size, as well as the
+ * reference point from which the Rectangle::x and Rectangle::y displacements
+ * refers to, are defined by the context were rectangle is used.
+ */
+
+/**
+ * \var Rectangle::x
+ * \brief The horizontal coordinate of the rectangle's top-left corner
+ */
+
+/**
+ * \var Rectangle::y
+ * \brief The vertical coordinate of the rectangle's top-left corner
+ */
+
+/**
+ * \var Rectangle::w
+ * \brief The distance between the left and right sides
+ */
+
+/**
+ * \var Rectangle::h
+ * \brief The distance between the top and bottom sides
+ */
+
+} /* namespace libcamera */
new file mode 100644
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2019, Google Inc.
+ *
+ * geometry.h - Geometry-related structure
+ */
+
+#ifndef __LIBCAMERA_GEOMETRY_H__
+#define __LIBCAMERA_GEOMETRY_H__
+
+namespace libcamera {
+
+struct Rectangle {
+ int x;
+ int y;
+ unsigned int w;
+ unsigned int h;
+};
+
+} /* namespace libcamera */
+
+#endif /* __LIBCAMERA_GEOMETRY_H__ */
@@ -6,6 +6,7 @@ libcamera_sources = files([
'event_dispatcher.cpp',
'event_dispatcher_poll.cpp',
'event_notifier.cpp',
+ 'geometry.cpp',
'log.cpp',
'media_device.cpp',
'media_object.cpp',