31#ifndef ETL_BRESENHAM_LINE_INCLUDED
32#define ETL_BRESENHAM_LINE_INCLUDED
36#include "static_assert.h"
50 template <
typename T,
typename TWork =
int16_t>
79 : p_bresenham_line(ETL_NULLPTR)
87 : p_bresenham_line(
other.p_bresenham_line)
96 p_bresenham_line =
rhs.p_bresenham_line;
107 if (p_bresenham_line->get_coordinate() == p_bresenham_line->back())
110 p_bresenham_line = ETL_NULLPTR;
114 p_bresenham_line->next();
125 return p_bresenham_line->get_coordinate();
133 return lhs.p_bresenham_line ==
rhs.p_bresenham_line;
150 : p_bresenham_line(
pb)
162 initialise(
T(0),
T(0),
T(0),
T(0));
241 if (y_is_major_axis())
256 return (
lhs.front() ==
rhs.front()) && (
lhs.back() ==
rhs.back());
281 do_minor_increment =
false;
283 if (y_is_major_axis())
300 bool y_is_major_axis()
const
310 if (y_is_major_axis())
313 if (do_minor_increment)
315 coordinate.x = T(coordinate.x + x_increment);
319 coordinate.y = T(coordinate.y + y_increment);
325 if (do_minor_increment)
327 coordinate.y = T(coordinate.y + y_increment);
331 coordinate.x = T(coordinate.x + x_increment);
335 do_minor_increment = (balance >= 0);
346 typedef TWork work_t;
356 bool do_minor_increment;
Const Iterator.
Definition bresenham_line.h:70
friend bool operator!=(const const_iterator &lhs, const const_iterator &rhs)
Inequality operator.
Definition bresenham_line.h:139
const_iterator & operator=(const const_iterator &rhs)
Assignment operator.
Definition bresenham_line.h:94
const_iterator & operator++()
Pre-increment operator.
Definition bresenham_line.h:104
const_iterator(const const_iterator &other)
Copy constructor.
Definition bresenham_line.h:86
friend bool operator==(const const_iterator &lhs, const const_iterator &rhs)
Equality operator.
Definition bresenham_line.h:131
const_iterator()
Default constructor.
Definition bresenham_line.h:78
value_type operator*() const
De-reference operator.
Definition bresenham_line.h:123
Definition bresenham_line.h:52
const_iterator end() const
Get a const_iterator to one past the last coordinate.
Definition bresenham_line.h:215
const_iterator begin()
Definition bresenham_line.h:205
friend bool operator!=(const bresenham_line &lhs, const bresenham_line &rhs)
Inequality operator.
Definition bresenham_line.h:262
bresenham_line(T first_x, T first_y, T last_x, T last_y)
Definition bresenham_line.h:178
bresenham_line(etl::coordinate_2d< T > first_, etl::coordinate_2d< T > last_)
Definition bresenham_line.h:169
void reset(T first_x, T first_y, T last_x, T last_y)
Definition bresenham_line.h:196
etl::coordinate_2d< T > value_type
Standard container types.
Definition bresenham_line.h:58
const_reference back() const
Get the last coordinate.
Definition bresenham_line.h:231
friend bool operator==(const bresenham_line &lhs, const bresenham_line &rhs)
Equality operator.
Definition bresenham_line.h:254
bresenham_line()
Constructor.
Definition bresenham_line.h:160
void reset(etl::coordinate_2d< T > first_, etl::coordinate_2d< T > last_)
Definition bresenham_line.h:187
size_t size() const
Get the size of the series.
Definition bresenham_line.h:239
const_reference front() const
Get the first coordinate.
Definition bresenham_line.h:223
bitset_ext
Definition absolute.h:38
iterator
Definition iterator.h:399
pair holds two objects of arbitrary type
Definition utility.h:164