36#ifndef VIGRA_IMAGECONTAINER_HXX
37#define VIGRA_IMAGECONTAINER_HXX
40#include "array_vector.hxx"
41#include "copyimage.hxx"
71template <
class ImageType,
72 class Alloc =
typename std::allocator_traits<typename ImageType::allocator_type>::template rebind_alloc<ImageType> >
88 typedef typename ImageVector::reverse_iterator reverse_iterator;
89 typedef typename ImageVector::const_reverse_iterator const_reverse_iterator;
92#if !defined(_MSC_VER) || _MSC_VER >= 1300
95 typedef typename ImageVector::difference_type difference_type;
105 for(
unsigned int i=0;
i<numImages;
i++)
114 : images_(numImages,
alloc)
123 : imageSize_(image.
size()),
124 images_(numImages, image,
alloc)
133 template<
class InputIterator>
147 return images_[index];
155 return images_[index];
163 return images_.
begin();
171 return images_.
begin();
179 return images_.
end();
187 return images_.
end();
196 return images_.rbegin();
205 return images_.rbegin();
214 return images_.rend();
221 const_reverse_iterator
rend()
const
223 return images_.rend();
231 return images_.
size();
240 return images_.max_size();
248 return images_.empty();
258 return (
imageSize() == other.imageSize())
259 && (images_ == other.images_);
266 return images_.insert(pos, image);
277 template<
class InputIterator>
288 return images_.erase(pos);
333 "trying to append images of wrong size to ImageArray with resize()");
334 images_.resize(
newSize, image);
342 return images_.front();
349 return images_.front();
356 return images_.back();
363 return images_.back();
370 images_.push_back(image);
386 images_.swap(other.images_);
387 imageSize_ = other.imageSize_;
396 return images_.capacity();
413 {
return imageSize_; }
423 for(
unsigned int i=0;
i<
size();
i++)
467template <
class ImageType,
468 class Alloc =
typename std::allocator_traits<typename ImageType::allocator_type>::template rebind_alloc<ImageType> >
471 int lowestLevel_, highestLevel_;
484 typedef typename ImageVector::reverse_iterator reverse_iterator;
485 typedef typename ImageVector::const_reverse_iterator const_reverse_iterator;
488#if !defined(_MSC_VER) || _MSC_VER >= 1300
491 typedef typename ImageVector::difference_type difference_type;
507 : lowestLevel_(0), highestLevel_(-1),
528 : lowestLevel_(0), highestLevel_(-1),
547 template <
class SrcIterator,
class SrcAccessor>
552 : lowestLevel_(0), highestLevel_(-1),
562 : lowestLevel_(0), highestLevel_(-1),
579 return highestLevel_;
587 return images_[index - lowestLevel_];
595 return images_[index - lowestLevel_];
603 return images_.
begin();
611 return images_.
begin();
619 return images_.
end();
627 return images_.
end();
636 return images_.rbegin();
645 return images_.rbegin();
654 return images_.rend();
661 const_reverse_iterator
rend()
const
663 return images_.rend();
671 return images_.
size();
679 return images_.empty();
689 return (lowestLevel_ == other.lowestLevel_) && (highestLevel_ == other.highestLevel_) &&
690 (images_ == other.images_);
711 "ImagePyramid::resize(): lowestLevel <= highestLevel required.");
713 "ImagePyramid::resize(): sizeAppliesToLevel must be between lowest and highest level (inclusive).");
740 return images_.front();
747 return images_.front();
754 return images_.back();
761 return images_.back();
769 images_.swap(other.images_);
770 std::swap(lowestLevel_, other.lowestLevel_);
771 std::swap(highestLevel_, other.highestLevel_);
Two dimensional difference vector.
Definition diff2d.hxx:186
Fundamental class template for arrays of equal-sized images.
Definition imagecontainer.hxx:74
void pop_back()
Definition imagecontainer.hxx:375
const_reverse_iterator rend() const
Definition imagecontainer.hxx:221
const_reference front() const
Definition imagecontainer.hxx:347
void insert(iterator pos, size_type count, const_reference image)
void resize(size_type newSize, ImageType &image)
Definition imagecontainer.hxx:328
const_iterator begin() const
Definition imagecontainer.hxx:169
void push_back(const_reference image)
Definition imagecontainer.hxx:368
bool empty()
Definition imagecontainer.hxx:246
ImageArray(unsigned int numImages, const ImageType &image, Alloc const &alloc=Alloc())
Definition imagecontainer.hxx:122
void reserve(size_type n)
Definition imagecontainer.hxx:401
iterator insert(iterator pos, const_reference image)
Definition imagecontainer.hxx:264
virtual void resizeImages(const Diff2D &newSize)
Definition imagecontainer.hxx:419
size_type size() const
Definition imagecontainer.hxx:229
const_reference back() const
Definition imagecontainer.hxx:361
reverse_iterator rend()
Definition imagecontainer.hxx:212
reference front()
Definition imagecontainer.hxx:340
void swap(const_reference other)
Definition imagecontainer.hxx:383
void resize(size_type newSize)
Definition imagecontainer.hxx:311
void resizeImages(int width, int height)
Definition imagecontainer.hxx:436
void insert(iterator pos, InputIterator begin, InputIterator end)
Definition imagecontainer.hxx:278
size_type max_size() const
Definition imagecontainer.hxx:238
reference operator[](size_type index)
Definition imagecontainer.hxx:145
ImageType value_type
Definition imagecontainer.hxx:84
Size2D imageSize() const
Definition imagecontainer.hxx:412
ImageArray(InputIterator begin, InputIterator end, Alloc const &alloc=Alloc())
Definition imagecontainer.hxx:134
void clear()
Definition imagecontainer.hxx:301
ImageArray(unsigned int numImages, const Diff2D &imageSize, Alloc const &alloc=Alloc())
Definition imagecontainer.hxx:100
iterator end()
Definition imagecontainer.hxx:177
ImageArray(unsigned int numImages=0, Alloc const &alloc=Alloc())
Definition imagecontainer.hxx:113
const_iterator end() const
Definition imagecontainer.hxx:185
reverse_iterator rbegin()
Definition imagecontainer.hxx:194
size_type capacity() const
Definition imagecontainer.hxx:394
iterator erase(iterator begin, iterator end)
Definition imagecontainer.hxx:294
iterator begin()
Definition imagecontainer.hxx:161
bool operator==(const ImageArray< ImageType, Alloc > &other)
Definition imagecontainer.hxx:256
const_reverse_iterator rbegin() const
Definition imagecontainer.hxx:203
reference back()
Definition imagecontainer.hxx:354
iterator erase(iterator pos)
Definition imagecontainer.hxx:286
Class template for logarithmically tapering image pyramids.
Definition imagecontainer.hxx:470
const_reverse_iterator rend() const
Definition imagecontainer.hxx:661
const_reference front() const
Definition imagecontainer.hxx:745
const_iterator begin() const
Definition imagecontainer.hxx:609
void resize(int lowestLevel, int highestLevel, const Diff2D &imageSize, int sizeAppliesToLevel=0)
Definition imagecontainer.hxx:707
bool empty()
Definition imagecontainer.hxx:677
ImagePyramid(int lowestLevel, int highestLevel, SrcIterator ul, SrcIterator lr, SrcAccessor src, int copyImageToLevel=0, Alloc const &alloc=Alloc())
Definition imagecontainer.hxx:548
ImagePyramid(Alloc const &alloc=Alloc())
Definition imagecontainer.hxx:561
int highestLevel() const
Definition imagecontainer.hxx:577
size_type size() const
Definition imagecontainer.hxx:669
const_reference back() const
Definition imagecontainer.hxx:759
reverse_iterator rend()
Definition imagecontainer.hxx:652
reference front()
Definition imagecontainer.hxx:738
void swap(ImagePyramid< ImageType, Alloc > &other)
Definition imagecontainer.hxx:767
reference operator[](size_type index)
Definition imagecontainer.hxx:585
ImagePyramid(int lowestLevel, int highestLevel, const Diff2D &imageSize, int sizeAppliesToLevel=0, Alloc const &alloc=Alloc())
Definition imagecontainer.hxx:504
ImageType value_type
Definition imagecontainer.hxx:480
void clear()
Definition imagecontainer.hxx:695
bool operator==(const ImagePyramid< ImageType, Alloc > &other) const
Definition imagecontainer.hxx:687
ImagePyramid(int lowestLevel, int highestLevel, const ImageType &image, int copyImageToLevel=0, Alloc const &alloc=Alloc())
Definition imagecontainer.hxx:525
iterator end()
Definition imagecontainer.hxx:617
const_iterator end() const
Definition imagecontainer.hxx:625
reverse_iterator rbegin()
Definition imagecontainer.hxx:634
iterator begin()
Definition imagecontainer.hxx:601
int lowestLevel() const
Definition imagecontainer.hxx:570
const_reverse_iterator rbegin() const
Definition imagecontainer.hxx:643
reference back()
Definition imagecontainer.hxx:752
Class for a single RGB value.
Definition rgbvalue.hxx:128
Two dimensional size object.
Definition diff2d.hxx:483
size_type size() const
Definition tinyvector.hxx:913
iterator end()
Definition tinyvector.hxx:864
iterator begin()
Definition tinyvector.hxx:861
void copyImage(...)
Copy source image into destination image.