libcamera  v0.3.0
Supporting cameras in Linux since 2019
Public Member Functions | Public Attributes | List of all members
libcamera::Rectangle Class Reference

Describe a rectangle's position and dimensions. More...

Public Member Functions

constexpr Rectangle ()
 Construct a Rectangle with all coordinates set to 0.
 
constexpr Rectangle (int xpos, int ypos, const Size &size)
 Construct a Rectangle with the given position and size. More...
 
constexpr Rectangle (int xpos, int ypos, unsigned int w, unsigned int h)
 Construct a Rectangle with the given position and size. More...
 
constexpr Rectangle (const Size &size)
 Construct a Rectangle of size with its top left corner located at (0,0) More...
 
bool isNull () const
 Check if the rectangle is null. More...
 
const std::string toString () const
 Assemble and return a string describing the rectangle. More...
 
Point center () const
 Retrieve the center point of this rectangle. More...
 
Size size () const
 Retrieve the size of this rectangle. More...
 
Point topLeft () const
 Retrieve the coordinates of the top left corner of this Rectangle. More...
 
RectanglescaleBy (const Size &numerator, const Size &denominator)
 Apply a non-uniform rational scaling in place to this Rectangle. More...
 
RectangletranslateBy (const Point &point)
 Translate this Rectangle in place by the given Point. More...
 
__nodiscard Rectangle boundedTo (const Rectangle &bound) const
 Calculate the intersection of this Rectangle with another. More...
 
__nodiscard Rectangle enclosedIn (const Rectangle &boundary) const
 Enclose a Rectangle so as not to exceed another Rectangle. More...
 
__nodiscard Rectangle scaledBy (const Size &numerator, const Size &denominator) const
 Apply a non-uniform rational scaling to this Rectangle. More...
 
__nodiscard Rectangle translatedBy (const Point &point) const
 Translate a Rectangle by the given amounts. More...
 

Public Attributes

int x
 The horizontal coordinate of the rectangle's top-left corner.
 
int y
 The vertical coordinate of the rectangle's top-left corner.
 
unsigned int width
 The distance between the left and right sides.
 
unsigned int height
 The distance between the top and bottom sides.
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ Rectangle() [1/3]

libcamera::Rectangle::Rectangle ( int  x,
int  y,
const Size size 
)
inline

Construct a Rectangle with the given position and size.

Parameters
[in]xThe horizontal coordinate of the top-left corner
[in]yThe vertical coordinate of the top-left corner
[in]sizeThe size

◆ Rectangle() [2/3]

libcamera::Rectangle::Rectangle ( int  x,
int  y,
unsigned int  width,
unsigned int  height 
)
inline

Construct a Rectangle with the given position and size.

Parameters
[in]xThe horizontal coordinate of the top-left corner
[in]yThe vertical coordinate of the top-left corner
[in]widthThe width
[in]heightThe height

◆ Rectangle() [3/3]

libcamera::Rectangle::Rectangle ( const Size size)
inlineexplicit

Construct a Rectangle of size with its top left corner located at (0,0)

Parameters
[in]sizeThe desired Rectangle size

Member Function Documentation

◆ boundedTo()

Rectangle libcamera::Rectangle::boundedTo ( const Rectangle bound) const

Calculate the intersection of this Rectangle with another.

Parameters
[in]boundThe Rectangle that is intersected with this Rectangle

This function calculates the standard intersection of two rectangles. If the rectangles do not overlap in either the x or y direction, then the size of that dimension in the result (its width or height) is set to zero. Even when one dimension is set to zero, note that the other dimension may still have a positive value if there was some overlap.

Returns
A Rectangle that is the intersection of the input rectangles

◆ center()

Point libcamera::Rectangle::center ( ) const

Retrieve the center point of this rectangle.

Returns
The center Point

◆ enclosedIn()

Rectangle libcamera::Rectangle::enclosedIn ( const Rectangle boundary) const

Enclose a Rectangle so as not to exceed another Rectangle.

Parameters
[in]boundaryThe limit that the returned Rectangle will not exceed

The Rectangle is modified so that it does not exceed the given boundary. This process involves translating the Rectangle if any of its edges lie beyond boundary, so that those edges then lie along the boundary instead.

If either width or height are larger than boundary, then the returned Rectangle is clipped to be no larger. But other than this, the Rectangle is not clipped or reduced in size, merely translated.

Note that this is not a conventional Rectangle intersection function which is provided by boundedTo().

Returns
A Rectangle that does not extend beyond a boundary Rectangle

◆ isNull()

bool libcamera::Rectangle::isNull ( ) const
inline

Check if the rectangle is null.

Returns
True if both the width and height are 0, or false otherwise

◆ scaleBy()

Rectangle & libcamera::Rectangle::scaleBy ( const Size numerator,
const Size denominator 
)

Apply a non-uniform rational scaling in place to this Rectangle.

Parameters
[in]numeratorThe numerators of the x and y scaling factors
[in]denominatorThe denominators of the x and y scaling factors

A non-uniform scaling is applied in place such the resulting x coordinates are multiplied by numerator.width / denominator.width, and similarly for the y coordinates (using height in place of width).

Returns
A reference to this object

◆ scaledBy()

Rectangle libcamera::Rectangle::scaledBy ( const Size numerator,
const Size denominator 
) const

Apply a non-uniform rational scaling to this Rectangle.

Parameters
[in]numeratorThe numerators of the x and y scaling factors
[in]denominatorThe denominators of the x and y scaling factors

A non-uniform scaling is applied such the resulting x coordinates are multiplied by numerator.width / denominator.width, and similarly for the y coordinates (using height in place of width).

Returns
The non-uniformly scaled Rectangle

◆ size()

Size libcamera::Rectangle::size ( ) const
inline

Retrieve the size of this rectangle.

Returns
The Rectangle size

◆ topLeft()

Point libcamera::Rectangle::topLeft ( ) const
inline

Retrieve the coordinates of the top left corner of this Rectangle.

Returns
The Rectangle's top left corner

◆ toString()

const std::string libcamera::Rectangle::toString ( ) const

Assemble and return a string describing the rectangle.

Returns
A string describing the Rectangle

◆ translateBy()

Rectangle & libcamera::Rectangle::translateBy ( const Point point)

Translate this Rectangle in place by the given Point.

Parameters
[in]pointThe amount to translate the Rectangle by

The Rectangle is translated in the x-direction by the point's x coordinate and in the y-direction by the point's y coordinate.

Returns
A reference to this object

◆ translatedBy()

Rectangle libcamera::Rectangle::translatedBy ( const Point point) const

Translate a Rectangle by the given amounts.

Parameters
[in]pointThe amount to translate the Rectangle by

The Rectangle is translated in the x-direction by the point's x coordinate and in the y-direction by the point's y coordinate.

Returns
The translated Rectangle

The documentation for this class was generated from the following files: