37 #ifndef VIGRA_INITIMAGE_HXX 
   38 #define VIGRA_INITIMAGE_HXX 
   41 #include "iteratortraits.hxx" 
   42 #include "functortraits.hxx" 
   43 #include "multi_shape.hxx" 
   59 template <
class DestIterator, 
class DestAccessor, 
class VALUETYPE>
 
   61 initLineImpl(DestIterator d, DestIterator dend, DestAccessor dest,
 
   62              VALUETYPE 
const & v, VigraFalseType)
 
   68 template <
class DestIterator, 
class DestAccessor, 
class FUNCTOR>
 
   70 initLineImpl(DestIterator d, DestIterator dend, DestAccessor dest,
 
   71              FUNCTOR 
const & f, VigraTrueType)
 
   77 template <
class DestIterator, 
class DestAccessor, 
class VALUETYPE>
 
   79 initLine(DestIterator d, DestIterator dend, DestAccessor dest,
 
   82     initLineImpl(d, dend, dest, v, 
typename FunctorTraits<VALUETYPE>::isInitializer());
 
   85 template <
class DestIterator, 
class DestAccessor, 
class FUNCTOR>
 
   87 initLineFunctor(DestIterator d, DestIterator dend, DestAccessor dest,
 
   94 template <
class DestIterator, 
class DestAccessor, 
 
   95           class MaskIterator, 
class MaskAccessor, 
 
   98 initLineIfImpl(DestIterator d, DestIterator dend, DestAccessor dest,
 
   99                MaskIterator m, MaskAccessor mask,
 
  100                VALUETYPE 
const & v, VigraFalseType)
 
  102     for(; d != dend; ++d, ++m)
 
  107 template <
class DestIterator, 
class DestAccessor, 
 
  108           class MaskIterator, 
class MaskAccessor, 
 
  111 initLineIfImpl(DestIterator d, DestIterator dend, DestAccessor dest,
 
  112                MaskIterator m, MaskAccessor mask,
 
  113                FUNCTOR 
const & f, VigraTrueType)
 
  115     for(; d != dend; ++d, ++m)
 
  120 template <
class DestIterator, 
class DestAccessor, 
 
  121           class MaskIterator, 
class MaskAccessor, 
 
  124 initLineIf(DestIterator d, DestIterator dend, DestAccessor dest,
 
  125            MaskIterator m, MaskAccessor mask,
 
  128     initLineIfImpl(d, dend, dest, m, mask, v, 
typename FunctorTraits<VALUETYPE>::isInitializer());
 
  131 template <
class DestIterator, 
class DestAccessor, 
 
  132           class MaskIterator, 
class MaskAccessor, 
 
  135 initLineFunctorIf(DestIterator d, DestIterator dend, DestAccessor dest,
 
  136                   MaskIterator m, MaskAccessor mask,
 
  139     for(; d != dend; ++d, ++m)
 
  279 template <
class ImageIterator, 
class Accessor, 
class VALUETYPE>
 
  281 initImage(ImageIterator upperleft, ImageIterator lowerright, 
 
  282           Accessor a,  VALUETYPE 
const & v)
 
  284     int w = lowerright.x - upperleft.x;
 
  286     for(; upperleft.y < lowerright.y; ++upperleft.y)
 
  288         initLineImpl(upperleft.rowIterator(), upperleft.rowIterator() + w, a, 
 
  289                      v, 
typename FunctorTraits<VALUETYPE>::isInitializer());
 
  293 template <
class ImageIterator, 
class Accessor, 
class VALUETYPE>
 
  295 initImage(triple<ImageIterator, ImageIterator, Accessor> img, VALUETYPE 
const & v)
 
  297     initImage(img.first, img.second, img.third, v);
 
  300 template <
class T, 
class S, 
class VALUETYPE>
 
  302 initImage(MultiArrayView<2, T, S> img, VALUETYPE 
const & v)
 
  406 template <
class ImageIterator, 
class Accessor, 
class FUNCTOR>
 
  409           Accessor a,  FUNCTOR & f)
 
  411     int w = lowerright.x - upperleft.x;
 
  413     for(; upperleft.y < lowerright.y; ++upperleft.y)
 
  415         initLineFunctor(upperleft.rowIterator(), upperleft.rowIterator() + w, a, f);
 
  419 template <
class ImageIterator, 
class Accessor, 
class FUNCTOR>
 
  426 template <
class T, 
class S, 
class FUNCTOR>
 
  552 template <
class ImageIterator, 
class Accessor, 
 
  553           class MaskImageIterator, 
class MaskAccessor,
 
  556 initImageIf(ImageIterator upperleft, ImageIterator lowerright, Accessor a,
 
  557           MaskImageIterator mask_upperleft, MaskAccessor ma,
 
  560     int w = lowerright.x - upperleft.x;
 
  562     for(; upperleft.y < lowerright.y; ++upperleft.y, ++mask_upperleft.y)
 
  564         initLineIfImpl(upperleft.rowIterator(), 
 
  565                    upperleft.rowIterator() + w, a, 
 
  566                    mask_upperleft.rowIterator(), ma, 
 
  567                    v, 
typename FunctorTraits<VALUETYPE>::isInitializer());
 
  571 template <
class ImageIterator, 
class Accessor, 
 
  572           class MaskImageIterator, 
class MaskAccessor,
 
  575 initImageIf(triple<ImageIterator, ImageIterator, Accessor> img, 
 
  576             pair<MaskImageIterator, MaskAccessor> mask,
 
  579     initImageIf(img.first, img.second, img.third, mask.first, mask.second, v);
 
  582 template <
class T, 
class S, 
 
  587             MultiArrayView<2, TM, SM> 
const & mask,
 
  590     vigra_precondition(img.shape() == mask.shape(),
 
  591         "initImageIf(): shape mismatch between input and mask.");
 
  592     initImageIf(destImageRange(img), maskImage(mask), v);
 
  684 template <
class ImageIterator, 
class Accessor, 
class VALUETYPE>
 
  688                 Accessor a,  
int border_width, VALUETYPE 
const & v)
 
  690     int w = lowerright.x - upperleft.x;
 
  691     int h = lowerright.y - upperleft.y;
 
  693     int hb = (border_width > h) ? h : border_width;
 
  694     int wb = (border_width > w) ? w : border_width;
 
  696     initImage(upperleft, upperleft+Diff2D(w,hb), a, v);
 
  697     initImage(upperleft, upperleft+Diff2D(wb,h), a, v);
 
  698     initImage(upperleft+Diff2D(0,h-hb), lowerright, a, v);
 
  699     initImage(upperleft+Diff2D(w-wb,0), lowerright, a, v);
 
  702 template <
class ImageIterator, 
class Accessor, 
class VALUETYPE>
 
  705                 int border_width, VALUETYPE 
const & v)
 
  710 template <
class T, 
class S, 
class VALUETYPE>
 
  713                 int border_width, VALUETYPE 
const & v)
 
  723 #endif // VIGRA_INITIMAGE_HXX 
void initImage(...)
Write a value to every pixel in an image or rectangular ROI. 
void initImageWithFunctor(...)
Write the result of a functor call to every pixel in an image or rectangular ROI. ...
doxygen_overloaded_function(template<...> void separableConvolveBlockwise) template< unsigned int N
Separated convolution on ChunkedArrays. 
void initImageBorder(...)
Write value to the specified border pixels in the image. 
void initImageIf(...)
Write value to pixel in the image if mask is true.