Test for STM32F4
Fork of RGB_OLED_SSD1331 by
include/Line.h@18:47cbbfc890a8, 2017-08-02 (annotated)
- Committer:
- kkado
- Date:
- Wed Aug 02 22:12:49 2017 +0000
- Revision:
- 18:47cbbfc890a8
- Parent:
- 16:7984718638fc
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
messi1 | 16:7984718638fc | 1 | #ifndef __LINE_H_ |
messi1 | 16:7984718638fc | 2 | #define __LINE_H_ |
messi1 | 16:7984718638fc | 3 | |
messi1 | 16:7984718638fc | 4 | #include "Point.h" |
messi1 | 16:7984718638fc | 5 | |
messi1 | 16:7984718638fc | 6 | template <class T> |
messi1 | 16:7984718638fc | 7 | class Line { |
messi1 | 16:7984718638fc | 8 | |
messi1 | 16:7984718638fc | 9 | public: |
messi1 | 16:7984718638fc | 10 | Line(): |
messi1 | 16:7984718638fc | 11 | _x1(0), |
messi1 | 16:7984718638fc | 12 | _y1(0), |
messi1 | 16:7984718638fc | 13 | _x2(0), |
messi1 | 16:7984718638fc | 14 | _y2(0) |
messi1 | 16:7984718638fc | 15 | {} |
messi1 | 16:7984718638fc | 16 | |
messi1 | 16:7984718638fc | 17 | Line(T x1, T y1, T x2, T y2): |
messi1 | 16:7984718638fc | 18 | _x1(x1), |
messi1 | 16:7984718638fc | 19 | _y1(y1), |
messi1 | 16:7984718638fc | 20 | _x2(x2), |
messi1 | 16:7984718638fc | 21 | _y2(y2) |
messi1 | 16:7984718638fc | 22 | {} |
messi1 | 16:7984718638fc | 23 | |
messi1 | 16:7984718638fc | 24 | Point<T> p1() const {return Point(_x1, _y1);} |
messi1 | 16:7984718638fc | 25 | Point<T> p2() const {return Point(_x2, _y2);} |
messi1 | 16:7984718638fc | 26 | void setP1(T x, T y){_x1 = x; _y1 = y;} |
messi1 | 16:7984718638fc | 27 | void setP2(T x, T y){_x2 = x; _y2 = y;} |
messi1 | 16:7984718638fc | 28 | |
messi1 | 16:7984718638fc | 29 | bool isNull() const {return (_x1 == 0 && _y1 == 0 && _x2 == 0 && _y2 == 0);} |
messi1 | 16:7984718638fc | 30 | |
messi1 | 16:7984718638fc | 31 | friend inline bool operator==(const Line &l1, const Line<T> &l2){return (l1._x1==l2._x1 && l1._x2==l2._x2 && l1._y1==l2._y1 && l1._y2==l2._y2);} |
messi1 | 16:7984718638fc | 32 | friend inline bool operator!=(const Line &l1, const Line<T> &l2){return (l1._x1!=l2._x1 || l1._x2!=l2._x2 || l1._y1!=l2._y1 || l1._y2!=l2._y2);} |
messi1 | 16:7984718638fc | 33 | |
messi1 | 16:7984718638fc | 34 | bool contains(const Point<T> &p) const |
messi1 | 16:7984718638fc | 35 | { |
messi1 | 16:7984718638fc | 36 | T l = xp; |
messi1 | 16:7984718638fc | 37 | T r = xp; |
messi1 | 16:7984718638fc | 38 | if (w < 0) |
messi1 | 16:7984718638fc | 39 | l += w; |
messi1 | 16:7984718638fc | 40 | else |
messi1 | 16:7984718638fc | 41 | r += w; |
messi1 | 16:7984718638fc | 42 | if (l == r) // null rect |
messi1 | 16:7984718638fc | 43 | return false; |
messi1 | 16:7984718638fc | 44 | |
messi1 | 16:7984718638fc | 45 | if (p.x() < l || p.x() > r) |
messi1 | 16:7984718638fc | 46 | return false; |
messi1 | 16:7984718638fc | 47 | |
messi1 | 16:7984718638fc | 48 | T t = yp; |
messi1 | 16:7984718638fc | 49 | T b = yp; |
messi1 | 16:7984718638fc | 50 | if (h < 0) |
messi1 | 16:7984718638fc | 51 | t += h; |
messi1 | 16:7984718638fc | 52 | else |
messi1 | 16:7984718638fc | 53 | b += h; |
messi1 | 16:7984718638fc | 54 | if (t == b) // null rect |
messi1 | 16:7984718638fc | 55 | return false; |
messi1 | 16:7984718638fc | 56 | |
messi1 | 16:7984718638fc | 57 | if (p.y() < t || p.y() > b) |
messi1 | 16:7984718638fc | 58 | return false; |
messi1 | 16:7984718638fc | 59 | |
messi1 | 16:7984718638fc | 60 | return true; |
messi1 | 16:7984718638fc | 61 | } |
messi1 | 16:7984718638fc | 62 | |
messi1 | 16:7984718638fc | 63 | private: |
messi1 | 16:7984718638fc | 64 | T _x1; |
messi1 | 16:7984718638fc | 65 | T _y1; |
messi1 | 16:7984718638fc | 66 | T _x2; |
messi1 | 16:7984718638fc | 67 | T _y2; |
messi1 | 16:7984718638fc | 68 | }; |
messi1 | 16:7984718638fc | 69 | |
messi1 | 16:7984718638fc | 70 | |
messi1 | 16:7984718638fc | 71 | #endif // __LINE_H_ |