8 #ifndef __LIBCAMERA_GEOMETRY_H__ 9 #define __LIBCAMERA_GEOMETRY_H__ 14 #include <libcamera/compiler.h> 28 constexpr
Point(
int xpos,
int ypos)
45 static inline bool operator!=(
const Point &lhs,
const Point &rhs)
58 constexpr
Size(
unsigned int w,
unsigned int h)
66 bool isNull()
const {
return !width && !height; }
71 width = width / hAlignment * hAlignment;
72 height = height / vAlignment * vAlignment;
78 width = (width + hAlignment - 1) / hAlignment * hAlignment;
79 height = (height + vAlignment - 1) / vAlignment * vAlignment;
85 width = std::min(width, bound.
width);
86 height = std::min(height, bound.
height);
92 width = std::max(width, expand.
width);
93 height = std::max(height, expand.
height);
98 unsigned int vAlignment)
const 101 width / hAlignment * hAlignment,
102 height / vAlignment * vAlignment
107 unsigned int vAlignment)
const 110 (width + hAlignment - 1) / hAlignment * hAlignment,
111 (height + vAlignment - 1) / vAlignment * vAlignment
118 std::min(width, bound.
width),
119 std::min(height, bound.
height)
126 std::max(width, expand.
width),
127 std::max(height, expand.
height)
131 __nodiscard
Size boundedToAspectRatio(
const Size &ratio)
const;
132 __nodiscard
Size expandedToAspectRatio(
const Size &ratio)
const;
137 Size operator/(
float factor)
const;
139 Size &operator*=(
float factor);
140 Size &operator/=(
float factor);
143 bool operator==(
const Size &lhs,
const Size &rhs);
146 static inline bool operator!=(
const Size &lhs,
const Size &rhs)
148 return !(lhs == rhs);
151 static inline bool operator<=(
const Size &lhs,
const Size &rhs)
153 return lhs < rhs || lhs == rhs;
156 static inline bool operator>(
const Size &lhs,
const Size &rhs)
158 return !(lhs <= rhs);
161 static inline bool operator>=(
const Size &lhs,
const Size &rhs)
175 : min(size), max(size), hStep(1), vStep(1)
180 : min(minSize), max(maxSize), hStep(1), vStep(1)
185 unsigned int hstep,
unsigned int vstep)
186 : min(minSize), max(maxSize), hStep(hstep), vStep(vstep)
190 bool contains(
const Size &size)
const;
203 return !(lhs == rhs);
210 : Rectangle(0, 0, 0, 0)
215 :
x(xpos),
y(ypos), width(size.width), height(size.height)
219 constexpr
Rectangle(
int xpos,
int ypos,
unsigned int w,
unsigned int h)
220 :
x(xpos),
y(ypos), width(w), height(h)
225 :
x(0),
y(0), width(size.width), height(size.height)
234 bool isNull()
const {
return !width && !height; }
237 Point center()
const;
241 return { width, height };
255 const Size &denominator)
const;
262 return !(lhs == rhs);
__nodiscard constexpr Size expandedTo(const Size &expand) const
Expand the size to expand.
Definition: geometry.h:123
constexpr Point operator-() const
Negate a Point by negating both its x and y coordinates.
Definition: geometry.h:38
Point topLeft() const
Retrieve the coordinates of the top left corner of this Rectangle.
Definition: geometry.h:244
constexpr Rectangle(const Size &size)
Construct a Rectangle of size with its top left corner located at (0,0)
Definition: geometry.h:224
unsigned int vStep
The vertical step.
Definition: geometry.h:197
__nodiscard constexpr Size alignedUpTo(unsigned int hAlignment, unsigned int vAlignment) const
Align the size up horizontally and vertically.
Definition: geometry.h:106
Size & alignUpTo(unsigned int hAlignment, unsigned int vAlignment)
Align the size up horizontally and vertically in place.
Definition: geometry.h:76
Size & expandTo(const Size &expand)
Expand the size to expand.
Definition: geometry.h:90
SizeRange(const Size &size)
Construct a size range representing a single size.
Definition: geometry.h:174
Transform operator*(Transform t0, Transform t1)
Compose two transforms together.
Definition: transform.cpp:207
Top-level libcamera namespace.
Definition: bound_method.h:15
unsigned int hStep
The horizontal step.
Definition: geometry.h:196
int y
The vertical coordinate of the rectangle's top-left corner.
Definition: geometry.h:230
SizeRange(const Size &minSize, const Size &maxSize, unsigned int hstep, unsigned int vstep)
Construct a size range with specified min, max and step.
Definition: geometry.h:184
constexpr Rectangle(int xpos, int ypos, unsigned int w, unsigned int h)
Construct a Rectangle with the given position and size.
Definition: geometry.h:219
Describe a point in two-dimensional space.
Definition: geometry.h:20
Describe a two-dimensional size.
Definition: geometry.h:50
SizeRange()
Construct a size range initialized to 0.
Definition: geometry.h:169
bool isNull() const
Check if the rectangle is null.
Definition: geometry.h:234
__nodiscard constexpr Size boundedTo(const Size &bound) const
Bound the size to bound.
Definition: geometry.h:115
int x
The horizontal coordinate of the rectangle's top-left corner.
Definition: geometry.h:229
Size & alignDownTo(unsigned int hAlignment, unsigned int vAlignment)
Align the size down horizontally and vertically in place.
Definition: geometry.h:69
bool isNull() const
Check if the size is null.
Definition: geometry.h:66
int x
The x-coordinate of the Point.
Definition: geometry.h:33
constexpr Rectangle()
Construct a Rectangle with all coordinates set to 0.
Definition: geometry.h:209
Size size() const
Retrieve the size of this rectangle.
Definition: geometry.h:239
bool operator<(const Size &lhs, const Size &rhs)
Compare sizes for smaller than order.
Definition: geometry.cpp:343
Describe a rectangle's position and dimensions.
Definition: geometry.h:206
constexpr Point(int xpos, int ypos)
Construct a Point at given xpos and ypos values.
Definition: geometry.h:28
unsigned int width
The Size width.
Definition: geometry.h:63
constexpr Size()
Construct a Size with width and height set to 0.
Definition: geometry.h:53
Size & boundTo(const Size &bound)
Bound the size to bound in place.
Definition: geometry.h:83
Size min
The minimum size.
Definition: geometry.h:194
unsigned int height
The Size height.
Definition: geometry.h:64
constexpr Size(unsigned int w, unsigned int h)
Construct a Size with given width and height.
Definition: geometry.h:58
SizeRange(const Size &minSize, const Size &maxSize)
Construct a size range with specified min and max, and steps of 1.
Definition: geometry.h:179
Describe a range of sizes.
Definition: geometry.h:166
const std::string toString() const
Assemble and return a string describing the point.
Definition: geometry.cpp:56
bool operator==(const Point &lhs, const Point &rhs)
Compare points for equality.
Definition: geometry.cpp:75
unsigned int width
The distance between the left and right sides.
Definition: geometry.h:231
constexpr Point()
Construct a Point with x and y set to 0.
Definition: geometry.h:23
constexpr Rectangle(int xpos, int ypos, const Size &size)
Construct a Rectangle with the given position and size.
Definition: geometry.h:214
unsigned int height
The distance between the top and bottom sides.
Definition: geometry.h:232
__nodiscard constexpr Size alignedDownTo(unsigned int hAlignment, unsigned int vAlignment) const
Align the size down horizontally and vertically.
Definition: geometry.h:97
int y
The y-coordinate of the Point.
Definition: geometry.h:34
Size max
The maximum size.
Definition: geometry.h:195