esp32cam
OV2640 camera on ESP32-CAM
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
resolution.hpp
Go to the documentation of this file.
1#ifndef ESP32CAM_RESOLUTION_HPP
2#define ESP32CAM_RESOLUTION_HPP
3
4#include <Printable.h>
5#include <iterator>
6
7namespace esp32cam {
8
9class ResolutionList;
10
12class Resolution : public Printable {
13public:
21 static ResolutionList list();
22
29 static Resolution find(int minWidth, int minHeight);
30
35 explicit Resolution(int frameSize = -1);
36
38 bool isValid() const;
39
41 int getWidth() const;
42
44 int getHeight() const;
45
47 size_t printTo(Print& p) const override;
48
53 template<typename T>
54 T as() const {
55 return static_cast<T>(m_frameSize);
56 }
57
58private:
59 int m_frameSize;
60
61 friend bool operator==(const Resolution& lhs, const Resolution& rhs) {
62 return (!lhs.isValid() && !rhs.isValid()) || (lhs.m_frameSize == rhs.m_frameSize);
63 }
64
65 friend bool operator!=(const Resolution& lhs, const Resolution& rhs) {
66 return !(lhs == rhs);
67 }
68
69 friend bool operator<(const Resolution& lhs, const Resolution& rhs) {
70 return lhs.m_frameSize < rhs.m_frameSize;
71 }
72
73 friend bool operator>(const Resolution& lhs, const Resolution& rhs) {
74 return lhs.m_frameSize > rhs.m_frameSize;
75 }
76};
77
87public:
88 class Iterator {
89 public:
90 using iterator_catagory = std::forward_iterator_tag;
91 using value_type = const Resolution;
92 using difference_type = std::ptrdiff_t;
93 using pointer = void;
95
96 explicit Iterator(int value = -1)
97 : m_frameSize(value) {}
98
100 ++m_frameSize;
101 return *this;
102 }
103
105 Iterator copy(*this);
106 ++*this;
107 return copy;
108 }
109
111 return Resolution(m_frameSize);
112 }
113
114 private:
115 int m_frameSize;
116
117 friend bool operator==(const Iterator& lhs, const Iterator& rhs) {
118 return lhs.m_frameSize == rhs.m_frameSize;
119 }
120
121 friend bool operator!=(const Iterator& lhs, const Iterator& rhs) {
122 return !(lhs == rhs);
123 }
124 };
125
130 explicit ResolutionList(int max = 0);
131
132 Iterator begin() const;
133
134 Iterator end() const;
135
137 Resolution find(int minWidth, int minHeight) const;
138
139private:
140 int m_max;
141};
142
143} // namespace esp32cam
144
145#endif // ESP32CAM_RESOLUTION_HPP
Definition resolution.hpp:88
Iterator(int value=-1)
Definition resolution.hpp:96
void pointer
Definition resolution.hpp:93
friend bool operator==(const Iterator &lhs, const Iterator &rhs)
Definition resolution.hpp:117
std::forward_iterator_tag iterator_catagory
Definition resolution.hpp:90
Iterator operator++(int)
Definition resolution.hpp:104
friend bool operator!=(const Iterator &lhs, const Iterator &rhs)
Definition resolution.hpp:121
std::ptrdiff_t difference_type
Definition resolution.hpp:92
const Resolution value_type
Definition resolution.hpp:91
Iterator & operator++()
Definition resolution.hpp:99
reference operator*()
Definition resolution.hpp:110
A collection of resolutions.
Definition resolution.hpp:86
Iterator begin() const
Definition resolution.cpp:12
Resolution find(int minWidth, int minHeight) const
Find a resolution that satisfies given constraints.
Definition resolution.cpp:22
Iterator end() const
Definition resolution.cpp:17
Picture width and height.
Definition resolution.hpp:12
static Resolution find(int minWidth, int minHeight)
Find a resolution that satisfies given constraints.
Definition resolution.cpp:38
bool isValid() const
Determine if this resolution is valid.
Definition resolution.cpp:46
friend bool operator>(const Resolution &lhs, const Resolution &rhs)
Definition resolution.hpp:73
int getWidth() const
Return picture width in pixels.
Definition resolution.cpp:51
size_t printTo(Print &p) const override
Print WxH to output stream.
Definition resolution.cpp:67
T as() const
Convert to framesize_t (internal use).
Definition resolution.hpp:54
friend bool operator!=(const Resolution &lhs, const Resolution &rhs)
Definition resolution.hpp:65
friend bool operator==(const Resolution &lhs, const Resolution &rhs)
Definition resolution.hpp:61
int getHeight() const
Return picture height in pixels.
Definition resolution.cpp:59
static ResolutionList list()
Return an iterable collection of possible resolutions.
Definition resolution.cpp:32
friend bool operator<(const Resolution &lhs, const Resolution &rhs)
Definition resolution.hpp:69
Definition esp32cam.h:14