mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-15 16:35:06 +03:00
Add a method to check if a Size can fit inside a SizeRange. When determining if a size is containable take step values into account if they are not set to 0. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
113 lines
2 KiB
C++
113 lines
2 KiB
C++
/* 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__
|
|
|
|
#include <string>
|
|
|
|
namespace libcamera {
|
|
|
|
struct Rectangle {
|
|
int x;
|
|
int y;
|
|
unsigned int w;
|
|
unsigned int h;
|
|
|
|
const std::string toString() const;
|
|
};
|
|
|
|
bool operator==(const Rectangle &lhs, const Rectangle &rhs);
|
|
static inline bool operator!=(const Rectangle &lhs, const Rectangle &rhs)
|
|
{
|
|
return !(lhs == rhs);
|
|
}
|
|
|
|
struct Size {
|
|
Size()
|
|
: Size(0, 0)
|
|
{
|
|
}
|
|
|
|
Size(unsigned int w, unsigned int h)
|
|
: width(w), height(h)
|
|
{
|
|
}
|
|
|
|
unsigned int width;
|
|
unsigned int height;
|
|
|
|
const std::string toString() const;
|
|
};
|
|
|
|
bool operator==(const Size &lhs, const Size &rhs);
|
|
bool operator<(const Size &lhs, const Size &rhs);
|
|
|
|
static inline bool operator!=(const Size &lhs, const Size &rhs)
|
|
{
|
|
return !(lhs == rhs);
|
|
}
|
|
|
|
static inline bool operator<=(const Size &lhs, const Size &rhs)
|
|
{
|
|
return lhs < rhs || lhs == rhs;
|
|
}
|
|
|
|
static inline bool operator>(const Size &lhs, const Size &rhs)
|
|
{
|
|
return !(lhs <= rhs);
|
|
}
|
|
|
|
static inline bool operator>=(const Size &lhs, const Size &rhs)
|
|
{
|
|
return !(lhs < rhs);
|
|
}
|
|
|
|
class SizeRange
|
|
{
|
|
public:
|
|
SizeRange()
|
|
{
|
|
}
|
|
|
|
SizeRange(unsigned int width, unsigned int height)
|
|
: min(width, height), max(width, height), hStep(1), vStep(1)
|
|
{
|
|
}
|
|
|
|
SizeRange(unsigned int minW, unsigned int minH,
|
|
unsigned int maxW, unsigned int maxH)
|
|
: min(minW, minH), max(maxW, maxH), hStep(1), vStep(1)
|
|
{
|
|
}
|
|
|
|
SizeRange(unsigned int minW, unsigned int minH,
|
|
unsigned int maxW, unsigned int maxH,
|
|
unsigned int hstep, unsigned int vstep)
|
|
: min(minW, minH), max(maxW, maxH), hStep(hstep), vStep(vstep)
|
|
{
|
|
}
|
|
|
|
bool contains(const Size &size) const;
|
|
|
|
std::string toString() const;
|
|
|
|
Size min;
|
|
Size max;
|
|
unsigned int hStep;
|
|
unsigned int vStep;
|
|
};
|
|
|
|
bool operator==(const SizeRange &lhs, const SizeRange &rhs);
|
|
static inline bool operator!=(const SizeRange &lhs, const SizeRange &rhs)
|
|
{
|
|
return !(lhs == rhs);
|
|
}
|
|
|
|
} /* namespace libcamera */
|
|
|
|
#endif /* __LIBCAMERA_GEOMETRY_H__ */
|