37#ifndef VIGRA_IMAGEITERATORADAPTER_HXX
38#define VIGRA_IMAGEITERATORADAPTER_HXX
75template <
class IMAGE_ITERATOR>
85 typedef typename IMAGE_ITERATOR::value_type
PixelType;
89 typedef typename IMAGE_ITERATOR::reference
reference;
97 typedef typename IMAGE_ITERATOR::pointer
pointer;
121 IMAGE_ITERATOR::operator=(
i);
130 IMAGE_ITERATOR::operator=(
i);
144 ColumnIterator operator++(
int)
146 ColumnIterator ret(*
this);
187 IMAGE_ITERATOR
ret(*
this);
195 IMAGE_ITERATOR
ret(*
this);
203 return this->y - c.y;
210 return IMAGE_ITERATOR::operator==(c);
217 return IMAGE_ITERATOR::operator!=(c);
224 return this->y < c.y;
231 return IMAGE_ITERATOR::operator*();
238 return IMAGE_ITERATOR::operator()(0, d);
245 return IMAGE_ITERATOR::operator->();
280template <
class IMAGE_ITERATOR>
302 typedef typename IMAGE_ITERATOR::pointer
pointer;
326 IMAGE_ITERATOR::operator=(
i);
335 IMAGE_ITERATOR::operator=(
i);
349 RowIterator operator++(
int)
351 RowIterator ret(*
this);
392 IMAGE_ITERATOR
ret(*
this);
400 IMAGE_ITERATOR
ret(*
this);
408 return this->x - c.x;
415 return IMAGE_ITERATOR::operator==(c);
422 return IMAGE_ITERATOR::operator!=(c);
429 return this->x < c.x;
436 return IMAGE_ITERATOR::operator*();
443 return IMAGE_ITERATOR::operator()(d, 0);
450 return IMAGE_ITERATOR::operator->();
478template <
class IMAGE_ITERATOR>
496 typedef typename IMAGE_ITERATOR::pointer
pointer;
509 IMAGE_ITERATOR
const & end)
510 : IMAGE_ITERATOR(start), x_(0.0), y_(0.0)
512 int dx = end.x - start.x;
513 int dy = end.y - start.y;
514 int adx = (dx < 0) ? -dx : dx;
515 int ady = (dy < 0) ? -dy : dy;
521 if(
adx >
ady) y_ += dy_ / 2.0;
522 else x_ += dx_ / 2.0;
535 else if(x_ <= -1.0) {
544 else if(y_ <= -1.0) {
566 return IMAGE_ITERATOR::operator==(c);
573 return IMAGE_ITERATOR::operator!=(c);
580 return IMAGE_ITERATOR::operator*();
587 return IMAGE_ITERATOR::operator->();
598 double x_, y_, dx_, dy_;
Iterator adapter to linearly access columns.
Definition imageiteratoradapter.hxx:77
IMAGE_ITERATOR Adaptee
Definition imageiteratoradapter.hxx:109
IMAGE_ITERATOR::value_type value_type
Definition imageiteratoradapter.hxx:81
ColumnIterator operator+(int d) const
Definition imageiteratoradapter.hxx:185
ColumnIterator(IMAGE_ITERATOR const &i)
Definition imageiteratoradapter.hxx:113
index_reference operator[](int d) const
Definition imageiteratoradapter.hxx:236
ColumnIterator & operator=(ColumnIterator const &i)
Definition imageiteratoradapter.hxx:119
std::random_access_iterator_tag iterator_category
Definition imageiteratoradapter.hxx:105
IMAGE_ITERATOR::value_type PixelType
Definition imageiteratoradapter.hxx:85
ColumnIterator operator-(int d) const
Definition imageiteratoradapter.hxx:193
int operator-(ColumnIterator const &c) const
Definition imageiteratoradapter.hxx:201
IMAGE_ITERATOR::reference reference
Definition imageiteratoradapter.hxx:89
IMAGE_ITERATOR::pointer pointer
Definition imageiteratoradapter.hxx:97
reference operator*() const
Definition imageiteratoradapter.hxx:229
bool operator<(ColumnIterator const &c) const
Definition imageiteratoradapter.hxx:222
ColumnIterator & operator=(IMAGE_ITERATOR const &i)
Definition imageiteratoradapter.hxx:128
Adaptee & adaptee() const
Definition imageiteratoradapter.hxx:250
pointer operator->() const
Definition imageiteratoradapter.hxx:243
IMAGE_ITERATOR::index_reference index_reference
Definition imageiteratoradapter.hxx:93
bool operator==(ColumnIterator const &c) const
Definition imageiteratoradapter.hxx:208
bool operator!=(ColumnIterator const &c) const
Definition imageiteratoradapter.hxx:215
IMAGE_ITERATOR::difference_type::MoveY difference_type
Definition imageiteratoradapter.hxx:101
Iterator adapter to iterate along an arbitrary line on the image.
Definition imageiteratoradapter.hxx:480
bool operator!=(LineIterator const &c) const
Definition imageiteratoradapter.hxx:571
IMAGE_ITERATOR Adaptee
Definition imageiteratoradapter.hxx:504
IMAGE_ITERATOR::value_type value_type
Definition imageiteratoradapter.hxx:484
std::forward_iterator_tag iterator_category
Definition imageiteratoradapter.hxx:500
bool operator==(LineIterator const &c) const
Definition imageiteratoradapter.hxx:564
LineIterator(IMAGE_ITERATOR const &start, IMAGE_ITERATOR const &end)
Definition imageiteratoradapter.hxx:508
IMAGE_ITERATOR::value_type PixelType
Definition imageiteratoradapter.hxx:488
IMAGE_ITERATOR::reference reference
Definition imageiteratoradapter.hxx:492
IMAGE_ITERATOR::pointer pointer
Definition imageiteratoradapter.hxx:496
reference operator*() const
Definition imageiteratoradapter.hxx:578
Adaptee & adaptee() const
Definition imageiteratoradapter.hxx:592
pointer operator->() const
Definition imageiteratoradapter.hxx:585
Class for a single RGB value.
Definition rgbvalue.hxx:128
Iterator adapter to linearly access row.
Definition imageiteratoradapter.hxx:282
IMAGE_ITERATOR Adaptee
Definition imageiteratoradapter.hxx:314
IMAGE_ITERATOR::value_type value_type
Definition imageiteratoradapter.hxx:286
int operator-(RowIterator const &c) const
Definition imageiteratoradapter.hxx:406
RowIterator operator-(int d) const
Definition imageiteratoradapter.hxx:398
index_reference operator[](int d) const
Definition imageiteratoradapter.hxx:441
RowIterator & operator=(IMAGE_ITERATOR const &i)
Definition imageiteratoradapter.hxx:333
std::random_access_iterator_tag iterator_category
Definition imageiteratoradapter.hxx:310
bool operator==(RowIterator const &c) const
Definition imageiteratoradapter.hxx:413
RowIterator operator+(int d) const
Definition imageiteratoradapter.hxx:390
IMAGE_ITERATOR::value_type PixelType
Definition imageiteratoradapter.hxx:290
IMAGE_ITERATOR::reference reference
Definition imageiteratoradapter.hxx:294
bool operator<(RowIterator const &c) const
Definition imageiteratoradapter.hxx:427
IMAGE_ITERATOR::pointer pointer
Definition imageiteratoradapter.hxx:302
RowIterator & operator=(RowIterator const &i)
Definition imageiteratoradapter.hxx:324
reference operator*() const
Definition imageiteratoradapter.hxx:434
RowIterator(IMAGE_ITERATOR const &i)
Definition imageiteratoradapter.hxx:318
bool operator!=(RowIterator const &c) const
Definition imageiteratoradapter.hxx:420
Adaptee & adaptee() const
Definition imageiteratoradapter.hxx:455
pointer operator->() const
Definition imageiteratoradapter.hxx:448
IMAGE_ITERATOR::index_reference index_reference
Definition imageiteratoradapter.hxx:298
IMAGE_ITERATOR::difference_type::MoveY difference_type
Definition imageiteratoradapter.hxx:306