summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHan-Lin Chen <hanlinchen@chromium.org>2022-04-19 20:42:19 +0800
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-04-22 00:38:50 +0300
commitc730dc74795d6a603ac9f725c081ff07ed70ee35 (patch)
treed7a71fb20c18575f2bdde6c036972d751038a2a4
parentdd8b1723ac56580600ada71d670d5c01ce9eedf7 (diff)
libcamera: geometry: Add operator<< for classes in geometry
Add operator<< for geometry classes for easier logging. Signed-off-by: Han-Lin Chen <hanlinchen@chromium.org> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--include/libcamera/geometry.h8
-rw-r--r--src/libcamera/geometry.cpp65
2 files changed, 65 insertions, 8 deletions
diff --git a/include/libcamera/geometry.h b/include/libcamera/geometry.h
index 7838b679..d4a144bc 100644
--- a/include/libcamera/geometry.h
+++ b/include/libcamera/geometry.h
@@ -46,6 +46,8 @@ static inline bool operator!=(const Point &lhs, const Point &rhs)
return !(lhs == rhs);
}
+std::ostream &operator<<(std::ostream &out, const Point &p);
+
class Size
{
public:
@@ -192,6 +194,8 @@ static inline bool operator>=(const Size &lhs, const Size &rhs)
return !(lhs < rhs);
}
+std::ostream &operator<<(std::ostream &out, const Size &s);
+
class SizeRange
{
public:
@@ -232,6 +236,8 @@ static inline bool operator!=(const SizeRange &lhs, const SizeRange &rhs)
return !(lhs == rhs);
}
+std::ostream &operator<<(std::ostream &out, const SizeRange &sr);
+
class Rectangle
{
public:
@@ -291,4 +297,6 @@ static inline bool operator!=(const Rectangle &lhs, const Rectangle &rhs)
return !(lhs == rhs);
}
+std::ostream &operator<<(std::ostream &out, const Rectangle &r);
+
} /* namespace libcamera */
diff --git a/src/libcamera/geometry.cpp b/src/libcamera/geometry.cpp
index cb3c2de1..3b366af2 100644
--- a/src/libcamera/geometry.cpp
+++ b/src/libcamera/geometry.cpp
@@ -56,8 +56,7 @@ namespace libcamera {
const std::string Point::toString() const
{
std::stringstream ss;
-
- ss << "(" << x << "," << y << ")";
+ ss << *this;
return ss.str();
}
@@ -84,6 +83,18 @@ bool operator==(const Point &lhs, const Point &rhs)
*/
/**
+ * \brief Insert a text representation of a Point into an output stream
+ * \param[in] out The output stream
+ * \param[in] p The point
+ * \return The output stream \a out
+ */
+std::ostream &operator<<(std::ostream &out, const Point &p)
+{
+ out << "(" << p.x << ", " << p.y << ")";
+ return out;
+}
+
+/**
* \struct Size
* \brief Describe a two-dimensional size
*
@@ -124,7 +135,10 @@ bool operator==(const Point &lhs, const Point &rhs)
*/
const std::string Size::toString() const
{
- return std::to_string(width) + "x" + std::to_string(height);
+ std::stringstream ss;
+ ss << *this;
+
+ return ss.str();
}
/**
@@ -429,6 +443,18 @@ bool operator<(const Size &lhs, const Size &rhs)
*/
/**
+ * \brief Insert a text representation of a Size into an output stream
+ * \param[in] out The output stream
+ * \param[in] s The size
+ * \return The output stream \a out
+ */
+std::ostream &operator<<(std::ostream &out, const Size &s)
+{
+ out << s.width << "x" << s.height;
+ return out;
+}
+
+/**
* \struct SizeRange
* \brief Describe a range of sizes
*
@@ -528,9 +554,7 @@ bool SizeRange::contains(const Size &size) const
std::string SizeRange::toString() const
{
std::stringstream ss;
-
- ss << "(" << min.toString() << ")-(" << max.toString() << ")/(+"
- << hStep << ",+" << vStep << ")";
+ ss << *this;
return ss.str();
}
@@ -551,6 +575,20 @@ bool operator==(const SizeRange &lhs, const SizeRange &rhs)
*/
/**
+ * \brief Insert a text representation of a SizeRange into an output stream
+ * \param[in] out The output stream
+ * \param[in] sr The size range
+ * \return The output stream \a out
+ */
+std::ostream &operator<<(std::ostream &out, const SizeRange &sr)
+{
+ out << "(" << sr.min << ")-(" << sr.max << ")/(+"
+ << sr.hStep << ",+" << sr.vStep << ")";
+
+ return out;
+}
+
+/**
* \struct Rectangle
* \brief Describe a rectangle's position and dimensions
*
@@ -624,8 +662,7 @@ bool operator==(const SizeRange &lhs, const SizeRange &rhs)
const std::string Rectangle::toString() const
{
std::stringstream ss;
-
- ss << "(" << x << "x" << y << ")/" << width << "x" << height;
+ ss << *this;
return ss.str();
}
@@ -796,4 +833,16 @@ bool operator==(const Rectangle &lhs, const Rectangle &rhs)
* \return True if the two rectangles are not equal, false otherwise
*/
+/**
+ * \brief Insert a text representation of a Rectangle into an output stream
+ * \param[in] out The output stream
+ * \param[in] r The rectangle
+ * \return The output stream \a out
+ */
+std::ostream &operator<<(std::ostream &out, const Rectangle &r)
+{
+ out << "(" << r.x << "x" << r.y << ")/" << r.width << "x" << r.height;
+ return out;
+}
+
} /* namespace libcamera */