4 #include "mat/matrix.h" 5 #include "processing/coordinates.h" 29 std::string
info()
const;
54 template <
class IteratorType>
62 using reverse_iterator = std::reverse_iterator<iterator>;
63 using const_reverse_iterator = std::reverse_iterator<const_iterator>;
71 reverse_iterator rbegin();
72 reverse_iterator rend();
73 const_reverse_iterator rbegin()
const;
74 const_reverse_iterator rend()
const;
75 const_reverse_iterator crbegin()
const;
76 const_reverse_iterator crend()
const;
92 const std::vector<T>&
data()
const;
127 void fill(
const T& fillValue);
140 using Generic2DIndex::Generic2DIndex;
142 uint& x() {
return idx1(); }
143 uint& y() {
return idx2(); }
144 const uint& x()
const {
return idx1(); }
145 const uint& y()
const {
return idx2(); }
150 template <
class IteratorType>
151 class Chunk2D<T>::PixelIterator
154 using iterator_category = std::bidirectional_iterator_tag;
155 using value_type =
typename IteratorType::value_type;
156 using difference_type =
typename IteratorType::difference_type;
157 using pointer =
typename IteratorType::pointer;
158 using reference =
typename IteratorType::reference;
160 PixelIterator(IteratorType voxel = {},
const Chunk2D<T>* ptrToVol =
nullptr);
162 friend bool operator==(
const PixelIterator& left,
const PixelIterator& right)
164 return left._dataItr == right._dataItr;
166 friend bool operator!=(
const PixelIterator& left,
const PixelIterator& right)
168 return left._dataItr != right._dataItr;
171 PixelIterator& operator++();
172 PixelIterator operator++(
int);
173 PixelIterator& operator--();
174 PixelIterator operator--(
int);
176 reference
operator*()
const {
return *_dataItr; }
177 pointer operator->()
const {
return _dataItr.operator->(); }
179 operator PixelIterator<typename std::vector<T>::const_iterator>()
const;
181 reference value()
const;
182 PixelIndex pixelIndex()
const;
185 IteratorType _dataItr;
186 const Chunk2D<T>* _ptrToVol;
191 template <
typename ToType,
typename FromType,
typename ConversionFun = ToType (*)(const FromType&)>
192 Chunk2D<ToType>
convertTo(
const Chunk2D<FromType>& chunk2d,
193 ConversionFun f = [](
const FromType& val) {
return static_cast<ToType>(val); });
194 float interpolate2D(
const Chunk2D<float>& chunk2D,
const mat::Matrix<2,1>& pos);
195 float interpolate2D(
const Chunk2D<float>& chunk2D,
double x,
double y);
199 using assist::convertTo;
203 #include "chunk2d.tpp" 207 #endif // CTL_CHUNK2D_H std::vector< T > _data
The internal data of the chunk.
Definition: chunk2d.h:131
size_t allocatedElements() const
Definition: chunk2d.tpp:411
T min() const
Definition: chunk2d.tpp:203
void setData(std::vector< T > &&data)
Definition: chunk2d.tpp:220
bool operator==(const Chunk2DDimensions &other) const
Definition: chunk2d.tpp:369
const std::vector< T > & constData() const
Definition: chunk2d.tpp:420
T max() const
Definition: chunk2d.tpp:189
Chunk2D & operator-=(const Chunk2D< T > &other)
Definition: chunk2d.tpp:277
bool operator==(const Chunk2D< T > &other) const
Definition: chunk2d.tpp:564
std::vector< T >::reference operator()(uint x, uint y)
Definition: chunk2d.tpp:543
bool hasEqualSizeAs(const std::vector< T > &other) const
Definition: chunk2d.tpp:250
Chunk2D & operator *=(const T &factor)
Definition: chunk2d.tpp:293
T * rawData()
Definition: chunk2d.tpp:485
Chunk2D operator+(const Chunk2D< T > &other) const
Definition: chunk2d.tpp:318
float interpolate2D(const Chunk2D< float > &chunk2D, const mat::Matrix< 2, 1 > &pos)
Returns the value at position pos from chunk2D using (bi-)linear interpolation.
Definition: chunk2d.tpp:748
Chunk2D operator-(const Chunk2D< T > &other) const
Definition: chunk2d.tpp:331
bool operator!=(const Chunk2D< T > &other) const
Definition: chunk2d.tpp:573
The Chunk2D class provides a simple container for storage of 2D image data.
Definition: chunk2d.h:51
const std::vector< T > & data() const
Definition: chunk2d.tpp:429
size_t nbElements() const
Definition: chunk2d.tpp:474
Chunk2D & operator+=(const Chunk2D< T > &other)
Definition: chunk2d.tpp:260
Chunk2D & operator/=(const T &divisor)
Definition: chunk2d.tpp:305
Chunk2D(const Dimensions &dimensions)
Definition: chunk2d.tpp:11
Definition: coordinates.h:39
uint width() const
Definition: chunk2d.tpp:507
uint height() const
Definition: chunk2d.tpp:462
Chunk2D operator *(const T &factor) const
Definition: chunk2d.tpp:343
unsigned int uint
Qt style alias for unsigned int.
Definition: modulelayout.h:6
uint width
The width of the chunk.
Definition: chunk2d.h:23
Chunk2D< ToType > convertTo(const Chunk2D< FromType > &chunk2d, ConversionFun f=[](const FromType &val) { return static_cast< ToType >(val);})
Returns a Chunk2D<ToType>, where ToType must be specified as a template parameter.
Definition: chunk2d.tpp:737
bool operator!=(const Chunk2DDimensions &other) const
Definition: chunk2d.tpp:380
const Dimensions & dimensions() const
Definition: chunk2d.tpp:451
void allocateMemory()
Definition: chunk2d.tpp:586
size_t totalNbElements() const
Definition: chunk2d.tpp:396
Chunk2D operator/(const T &divisor) const
Definition: chunk2d.tpp:355
std::string info() const
Definition: chunk2d.tpp:388
Dimensions _dim
The dimensions (width x height) of the chunk.
Definition: chunk2d.h:132
uint height
The height of the chunk.
Definition: chunk2d.h:24
Definition: chunk2d.h:138
void fill(const T &fillValue)
Definition: chunk2d.tpp:518
bool hasData() const
Definition: chunk2d.tpp:440