34 #ifndef CARTODATA_VOLUME_VOLUMEREF_D_OPERATORS_H
35 #define CARTODATA_VOLUME_VOLUMEREF_D_OPERATORS_H
49 #ifdef CARTO_VOLUME_AUTO_DEREFERENCE
59 return (*this)->all();
66 return (*this)->any();
74 return (
bool)(**this);
82 return (*this)->min();
89 return (*this)->max();
96 return (*this)->sum();
104 template <
typename T>
108 (*this)->fill(value);
111 template <
typename T>
115 (*this)->fillBorder(value);
118 template <
typename T>
131 template <
typename T>
135 return ::carto::copy<T,T>( *
this );
138 template <
typename T>
139 template <
typename OUTP>
143 return ::carto::copy<OUTP,T>( *
this );
146 template <
typename T>
150 return ::carto::deepcopy<T,T>( *
this );
153 template <
typename T>
154 template <
typename OUTP>
158 return ::carto::deepcopy<OUTP,T>( *
this );
161 template <
typename T>
165 return ::carto::copyStructure<T,T>( *
this );
168 template <
typename T>
169 template <
typename OUTP>
173 return ::carto::copyStructure<OUTP,T>( *
this );
176 template <
typename T>
177 template <
typename OUTP>
181 return ::carto::deepcopy<OUTP,T>( *
this );
190 template <
typename T,
typename U>
199 template <
typename T,
typename U>
208 template <
typename T,
typename U>
217 template <
typename T,
typename U>
226 template <
typename T,
typename U>
235 template <
typename T,
typename U>
246 template <
typename T,
typename U>
255 template <
typename T,
typename U>
264 template <
typename T,
typename U>
273 template <
typename T,
typename U>
282 template <
typename T,
typename U>
291 template <
typename T,
typename U>
302 template <
typename T,
typename U>
311 template <
typename T,
typename U>
320 template <
typename T,
typename U>
329 template <
typename T,
typename U>
338 template <
typename T,
typename U>
347 template <
typename T,
typename U>
358 template <
typename T,
typename U>
366 template <
typename T,
typename U>
374 template <
typename T,
typename U>
382 template <
typename T,
typename U>
390 template <
typename T,
typename U>
398 template <
typename T,
typename U>
409 template <
typename T,
typename U>
418 template <
typename T,
typename U>
428 template <
typename T,
typename U>
437 template <
typename T,
typename U>
446 template <
typename T,
typename U>
455 template <
typename T,
typename U>
470 template <
typename T>
477 template <
typename T>
484 template <
typename T>
495 template <
typename T,
typename U>
503 template <
typename T,
typename U>
511 template <
typename T,
typename U>
519 template <
typename T,
typename U>
527 template <
typename T,
typename U>
535 template <
typename T,
typename U>
543 template <
typename T,
typename U>
551 template <
typename T,
typename U>
559 template <
typename T,
typename U>
568 template <
typename T,
typename U>
579 template <
typename T,
typename U>
587 template <
typename T,
typename U>
595 template <
typename T,
typename U>
603 template <
typename T,
typename U>
613 template <
typename T,
typename U>
621 template <
typename T,
typename U>
629 template <
typename T,
typename U>
637 template <
typename T,
typename U>
645 template <
typename T,
typename U>
653 template <
typename T,
typename U>
661 template <
typename T,
typename U>
669 template <
typename T,
typename U>
677 template <
typename T,
typename U>
686 template <
typename T,
typename U>
697 template <
typename T,
typename U>
705 template <
typename T,
typename U>
713 template <
typename T,
typename U>
721 template <
typename T,
typename U>
729 template <
typename T,
typename U>
737 template <
typename T,
typename U>
745 template <
typename T,
typename U>
753 template <
typename T,
typename U>
761 template <
typename T,
typename U>
768 template <
typename T,
typename U>
778 template <
typename T,
typename U>
786 template <
typename T,
typename U>
794 template <
typename T,
typename U>
802 template <
typename T,
typename U>
810 template <
typename T,
typename U>
818 template <
typename T,
typename U>
826 template <
typename T,
typename U>
834 template <
typename T,
typename U>
842 template <
typename T,
typename U>
850 template <
typename T,
typename U>
865 template <
typename T,
typename U>
873 template <
typename T,
typename U>
881 template <
typename T,
typename U>
889 template <
typename T,
typename U>
897 template <
typename T,
typename U>
905 template <
typename T,
typename U>
913 template <
typename T,
typename U>
921 template <
typename T,
typename U>
931 template <
typename T,
typename U>
939 template <
typename T,
typename U>
947 template <
typename T,
typename U>
955 template <
typename T,
typename U>
963 template <
typename T,
typename U>
971 template <
typename T,
typename U>
979 template <
typename T,
typename U>
987 template <
typename T,
typename U>
997 template <
typename T,
typename U>
1004 template <
typename T,
typename U>
1011 template <
typename T,
typename U>
1018 template <
typename T,
typename U>
1025 template <
typename T,
typename U>
1032 template <
typename T,
typename U>
1039 template <
typename T,
typename U>
1046 template <
typename T,
typename U>
1055 template <
typename T,
typename U>
1063 template <
typename T,
typename U>
1071 template <
typename T,
typename U>
1079 template <
typename T,
typename U>
1087 template <
typename T,
typename U>
1095 template <
typename T,
typename U>
1103 template <
typename T,
typename U>
1111 template <
typename T,
typename U>
1124 template <
typename T>
1133 template <
typename T>
1141 template <
typename T>
1150 template <
typename T>
Convenient handle for a Volume - this is normally the entry point for all volumes handling.
bool any() const
True if at least one value compares to true.
void fillBorder(const T &value)
Fill border with a constant value.
VolumeRef< T > deepcopy() const
VolumeRef< T > copyStructure() const
VolumeRef< T > & operator=(const T &value)
DataTypeTraits< T >::LongType sum() const
To avoid overflow, the biggest possible type (intmax_t, uintmax_t, double...) is used for computation...
void fill(const T &value)
Fills the volume with a given value.
bool all() const
True if all values compare to true.
VolumeRef< T > copy() const
Volume< OUTP > & applyTowards(const Volume< T > &vol, Volume< OUTP > &dst, UnaryFunction func)
Apply a function to all the elements of a volume (already allocated output version)
Volume< T > & selfApply(Volume< T > &vol, UnaryFunction func)
Apply a function to all the elements of a volume (in place version)
Volume< typename UnaryFunction::result_type > apply(const Volume< T > &vol, UnaryFunction func)
Apply a function to all the elements of a volume (create output version)
carto::Volume< T > & operator*=(carto::Volume< T > &vol, const U &value)
carto::Volume< T > & operator^=(carto::Volume< T > &vol, const U &value)
carto::Volume< bool > operator&&(const carto::Volume< T > &vol, const U &value)
carto::Volume< T > & operator/=(carto::Volume< T > &vol, const U &value)
carto::Volume< bool > operator>=(const carto::Volume< T > &vol, const U &value)
carto::Volume< bool > operator!=(const carto::Volume< T > &vol, const U &value)
VoxelRGB operator/(const VoxelRGB &aa, const uint8_t &bb)
Volume< T > deepcopy(const Volume< T > &src, const std::vector< int > &size=std::vector< int >())
Performs a copy of the data (not only a reference copy) The whole view hierarchy is fully duplicated.
carto::Volume< bool > operator<=(const carto::Volume< T > &vol, const U &value)
VoxelRGB operator+(const VoxelRGB &aa, const VoxelRGB &bb)
carto::Volume< bool > operator<(const carto::Volume< T > &vol, const U &value)
VoxelRGB operator-(const VoxelRGB &aa, const VoxelRGB &bb)
carto::Volume< bool > operator!(const carto::Volume< T > &vol)
carto::Volume< T > & operator|=(carto::Volume< T > &vol, const U &value)
carto::Volume< typename carto::volumeutil::modulus< T, U >::result_type > operator%(const carto::Volume< T > &vol, const U &value)
VoxelRGB operator*(const VoxelRGB &aa, const uint8_t &bb)
carto::Volume< typename carto::volumeutil::bitwise_and< T, U >::result_type > operator&(const carto::Volume< T > &vol, const U &value)
carto::Volume< T > & operator&=(carto::Volume< T > &vol, const U &value)
carto::Volume< typename carto::volumeutil::bitwise_xor< T, U >::result_type > operator^(const carto::Volume< T > &vol, const U &value)
carto::Volume< typename carto::volumeutil::bitwise_or< T, U >::result_type > operator|(const carto::Volume< T > &vol, const U &value)
carto::Volume< T > operator~(const carto::Volume< T > &vol)
carto::Volume< T > & operator%=(carto::Volume< T > &vol, const U &value)
carto::Volume< bool > operator>(const carto::Volume< T > &vol, const U &value)
carto::Volume< T > & operator-=(carto::Volume< T > &vol, const U &value)
carto::Volume< bool > operator||(const carto::Volume< T > &vol, const U &value)
carto::Volume< bool > operator==(const carto::Volume< T > &vol, const U &value)
carto::Volume< T > operator++(carto::Volume< T > &vol, int)
carto::Volume< T > operator--(carto::Volume< T > &vol, int)
carto::Volume< T > & operator+=(carto::Volume< T > &vol, const U &value)