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 
7 namespace esp32cam {
8 
9 class ResolutionList;
10 
12 class Resolution : public Printable {
13 public:
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 
58 private:
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 
87 public:
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 
139 private:
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
ResolutionList(int max=0)
Constructor.
Definition: resolution.cpp:8
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
Resolution(int frameSize=-1)
Constructor.
Definition: resolution.cpp:42
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: camera.cpp:6