Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
beluga::Bresenham2i::Line< Vector2, Integer >::iterator Class Reference

Bresenham's 2D line drawing iterator, one cell at a time. More...

#include <bresenham.hpp>

Classes

struct  sentinel
 Past-of-end iterator sentinel. More...
 

Public Types

using difference_type = std::ptrdiff_t
 Iterator difference type (as required by ranges::view_). More...
 
using iterator_category = std::forward_iterator_tag
 Iterator category tag. More...
 
using pointer = Vector2 *
 Pointer to iterated value type. More...
 
using reference = Vector2 &
 Reference to iterated value type. More...
 
using value_type = Vector2
 Iterated value type. More...
 

Public Member Functions

 iterator ()=default
 Default constructor. More...
 
 iterator (const Line *line)
 Constructs a Bresenham's 2D line iterator. More...
 
bool operator!= (const iterator &other) const
 Inequality operator overload (as required by std::forward_iterator). More...
 
bool operator!= (const sentinel &other) const
 Sentinel inequality operator overload. More...
 
const Vector2operator* () const
 Dereference operator overload (only const). More...
 
iteratoroperator++ ()
 Prefix operator overload. More...
 
iterator operator++ (int)
 Post-fix operator overload. More...
 
const Vector2operator-> () const
 Arrow operator overload (only const). More...
 
bool operator== (const iterator &other) const
 Equality operator overload (as required by std::forward_iterator). More...
 
bool operator== (const sentinel &) const
 Sentinel equality operator overload. More...
 

Private Member Functions

void step_to (Integer x, Integer y)
 

Private Attributes

std::size_t checks_ {0}
 
Vector2 current_point_ {}
 
Integer dxspan_
 
Integer dyspan_ {}
 
Integer error_ {}
 
bool modified_ {false}
 
Integer prev_error_ {}
 
bool reversed_ {false}
 
Integer step_ {}
 
Integer x_ {}
 
Integer xspan_ {}
 
Integer xstep_ {}
 
Integer y_ {}
 
Integer yspan_ {}
 
Integer ystep_ {}
 

Detailed Description

template<class Vector2, typename Integer = typename Vector2::Scalar>
class beluga::Bresenham2i::Line< Vector2, Integer >::iterator

Bresenham's 2D line drawing iterator, one cell at a time.

Definition at line 54 of file bresenham.hpp.

Member Typedef Documentation

◆ difference_type

template<class Vector2 , typename Integer = typename Vector2::Scalar>
using beluga::Bresenham2i::Line< Vector2, Integer >::iterator::difference_type = std::ptrdiff_t

Iterator difference type (as required by ranges::view_).

Definition at line 69 of file bresenham.hpp.

◆ iterator_category

template<class Vector2 , typename Integer = typename Vector2::Scalar>
using beluga::Bresenham2i::Line< Vector2, Integer >::iterator::iterator_category = std::forward_iterator_tag

Iterator category tag.

Definition at line 66 of file bresenham.hpp.

◆ pointer

template<class Vector2 , typename Integer = typename Vector2::Scalar>
using beluga::Bresenham2i::Line< Vector2, Integer >::iterator::pointer = Vector2*

Pointer to iterated value type.

Definition at line 75 of file bresenham.hpp.

◆ reference

template<class Vector2 , typename Integer = typename Vector2::Scalar>
using beluga::Bresenham2i::Line< Vector2, Integer >::iterator::reference = Vector2&

Reference to iterated value type.

Definition at line 78 of file bresenham.hpp.

◆ value_type

template<class Vector2 , typename Integer = typename Vector2::Scalar>
using beluga::Bresenham2i::Line< Vector2, Integer >::iterator::value_type = Vector2

Iterated value type.

Definition at line 72 of file bresenham.hpp.

Constructor & Destructor Documentation

◆ iterator() [1/2]

template<class Vector2 , typename Integer = typename Vector2::Scalar>
beluga::Bresenham2i::Line< Vector2, Integer >::iterator::iterator ( )
default

Default constructor.

◆ iterator() [2/2]

template<class Vector2 , typename Integer = typename Vector2::Scalar>
beluga::Bresenham2i::Line< Vector2, Integer >::iterator::iterator ( const Line line)
inlineexplicit

Constructs a Bresenham's 2D line iterator.

Definition at line 84 of file bresenham.hpp.

Member Function Documentation

◆ operator!=() [1/2]

template<class Vector2 , typename Integer = typename Vector2::Scalar>
bool beluga::Bresenham2i::Line< Vector2, Integer >::iterator::operator!= ( const iterator other) const
inline

Inequality operator overload (as required by std::forward_iterator).

Definition at line 176 of file bresenham.hpp.

◆ operator!=() [2/2]

template<class Vector2 , typename Integer = typename Vector2::Scalar>
bool beluga::Bresenham2i::Line< Vector2, Integer >::iterator::operator!= ( const sentinel other) const
inline

Sentinel inequality operator overload.

Definition at line 182 of file bresenham.hpp.

◆ operator*()

template<class Vector2 , typename Integer = typename Vector2::Scalar>
const Vector2& beluga::Bresenham2i::Line< Vector2, Integer >::iterator::operator* ( ) const
inline

Dereference operator overload (only const).

Definition at line 163 of file bresenham.hpp.

◆ operator++() [1/2]

template<class Vector2 , typename Integer = typename Vector2::Scalar>
iterator& beluga::Bresenham2i::Line< Vector2, Integer >::iterator::operator++ ( )
inline

Prefix operator overload.

Definition at line 122 of file bresenham.hpp.

◆ operator++() [2/2]

template<class Vector2 , typename Integer = typename Vector2::Scalar>
iterator beluga::Bresenham2i::Line< Vector2, Integer >::iterator::operator++ ( int  )
inline

Post-fix operator overload.

Definition at line 115 of file bresenham.hpp.

◆ operator->()

template<class Vector2 , typename Integer = typename Vector2::Scalar>
const Vector2* beluga::Bresenham2i::Line< Vector2, Integer >::iterator::operator-> ( ) const
inline

Arrow operator overload (only const).

Definition at line 166 of file bresenham.hpp.

◆ operator==() [1/2]

template<class Vector2 , typename Integer = typename Vector2::Scalar>
bool beluga::Bresenham2i::Line< Vector2, Integer >::iterator::operator== ( const iterator other) const
inline

Equality operator overload (as required by std::forward_iterator).

Definition at line 169 of file bresenham.hpp.

◆ operator==() [2/2]

template<class Vector2 , typename Integer = typename Vector2::Scalar>
bool beluga::Bresenham2i::Line< Vector2, Integer >::iterator::operator== ( const sentinel ) const
inline

Sentinel equality operator overload.

Definition at line 179 of file bresenham.hpp.

◆ step_to()

template<class Vector2 , typename Integer = typename Vector2::Scalar>
void beluga::Bresenham2i::Line< Vector2, Integer >::iterator::step_to ( Integer  x,
Integer  y 
)
inlineprivate

Definition at line 185 of file bresenham.hpp.

Member Data Documentation

◆ checks_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
std::size_t beluga::Bresenham2i::Line< Vector2, Integer >::iterator::checks_ {0}
private

Definition at line 201 of file bresenham.hpp.

◆ current_point_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
Vector2 beluga::Bresenham2i::Line< Vector2, Integer >::iterator::current_point_ {}
private

Definition at line 194 of file bresenham.hpp.

◆ dxspan_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
Integer beluga::Bresenham2i::Line< Vector2, Integer >::iterator::dxspan_
private

Definition at line 197 of file bresenham.hpp.

◆ dyspan_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
Integer beluga::Bresenham2i::Line< Vector2, Integer >::iterator::dyspan_ {}
private

Definition at line 197 of file bresenham.hpp.

◆ error_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
Integer beluga::Bresenham2i::Line< Vector2, Integer >::iterator::error_ {}
private

Definition at line 199 of file bresenham.hpp.

◆ modified_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
bool beluga::Bresenham2i::Line< Vector2, Integer >::iterator::modified_ {false}
private

Definition at line 202 of file bresenham.hpp.

◆ prev_error_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
Integer beluga::Bresenham2i::Line< Vector2, Integer >::iterator::prev_error_ {}
private

Definition at line 199 of file bresenham.hpp.

◆ reversed_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
bool beluga::Bresenham2i::Line< Vector2, Integer >::iterator::reversed_ {false}
private

Definition at line 203 of file bresenham.hpp.

◆ step_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
Integer beluga::Bresenham2i::Line< Vector2, Integer >::iterator::step_ {}
private

Definition at line 198 of file bresenham.hpp.

◆ x_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
Integer beluga::Bresenham2i::Line< Vector2, Integer >::iterator::x_ {}
private

Definition at line 195 of file bresenham.hpp.

◆ xspan_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
Integer beluga::Bresenham2i::Line< Vector2, Integer >::iterator::xspan_ {}
private

Definition at line 196 of file bresenham.hpp.

◆ xstep_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
Integer beluga::Bresenham2i::Line< Vector2, Integer >::iterator::xstep_ {}
private

Definition at line 198 of file bresenham.hpp.

◆ y_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
Integer beluga::Bresenham2i::Line< Vector2, Integer >::iterator::y_ {}
private

Definition at line 195 of file bresenham.hpp.

◆ yspan_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
Integer beluga::Bresenham2i::Line< Vector2, Integer >::iterator::yspan_ {}
private

Definition at line 196 of file bresenham.hpp.

◆ ystep_

template<class Vector2 , typename Integer = typename Vector2::Scalar>
Integer beluga::Bresenham2i::Line< Vector2, Integer >::iterator::ystep_ {}
private

Definition at line 198 of file bresenham.hpp.


The documentation for this class was generated from the following file:


beluga
Author(s):
autogenerated on Tue Jul 16 2024 02:59:54