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)