Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > d5e74628f0e673bb8680aebce32b2c04 > files > 17

itk-doc-3.12.0-1mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>ITK: Common/itkImageSliceIteratorTest.cxx</title>
<link href="DoxygenStyle.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">


<!--  Section customized for INSIGHT : Tue Jul 17 01:02:45 2001 -->
<center>
<a href="index.html" class="qindex">Main Page</a>&nbsp;&nbsp; 
<a href="modules.html" class="qindex">Groups</a>&nbsp;&nbsp;
<a href="namespaces.html" class="qindex">Namespace List</a>&nbsp;&nbsp;
<a href="hierarchy.html" class="qindex">Class Hierarchy</a>&nbsp;&nbsp;
<a href="classes.html" class="qindex">Alphabetical List</a>&nbsp;&nbsp;
<a href="annotated.html" class="qindex">Compound List</a>&nbsp;&nbsp; 
<a href="files.html" class="qindex">File
List</a>&nbsp;&nbsp; 
<a href="namespacemembers.html" class="qindex">Namespace Members</a>&nbsp;&nbsp; 
<a href="functions.html" class="qindex">Compound Members</a>&nbsp;&nbsp; 
<a href="globals.html" class="qindex">File Members</a>&nbsp;&nbsp;
<a href="pages.html" class="qindex">Concepts</a></center>


<!-- Generated by Doxygen 1.5.9 -->
<div class="contents">
<h1>Common/itkImageSliceIteratorTest.cxx</h1><dl class="user" compact><dt><b>MORE INFORMATION</b></dt><dd>For a complete description of the ITK Image Iterators and their API, please see the Iterators chapter in the ITK Software Guide. The ITK Software Guide is available in print and as a free .pdf download from <a href="http://www.itk.org.">http://www.itk.org.</a></dd></dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd>ImageConstIterator <p>
ConditionalConstIterator <p>
ConstNeighborhoodIterator <p>
ConstShapedNeighborhoodIterator <p>
ConstSliceIterator <p>
CorrespondenceDataStructureIterator <p>
FloodFilledFunctionConditionalConstIterator <p>
FloodFilledImageFunctionConditionalConstIterator <p>
FloodFilledImageFunctionConditionalIterator <p>
FloodFilledSpatialFunctionConditionalConstIterator <p>
FloodFilledSpatialFunctionConditionalIterator <p>
ImageConstIterator <p>
ImageConstIteratorWithIndex <p>
ImageIterator <p>
ImageIteratorWithIndex <p>
ImageLinearConstIteratorWithIndex <p>
ImageLinearIteratorWithIndex <p>
ImageRandomConstIteratorWithIndex <p>
ImageRandomIteratorWithIndex <p>
ImageRegionConstIterator <p>
ImageRegionConstIteratorWithIndex <p>
ImageRegionExclusionConstIteratorWithIndex <p>
ImageRegionExclusionIteratorWithIndex <p>
ImageRegionIterator <p>
ImageRegionIteratorWithIndex <p>
ImageRegionReverseConstIterator <p>
ImageRegionReverseIterator <p>
ImageReverseConstIterator <p>
ImageReverseIterator <p>
ImageSliceConstIteratorWithIndex <p>
ImageSliceIteratorWithIndex <p>
NeighborhoodIterator <p>
PathConstIterator <p>
PathIterator <p>
ShapedNeighborhoodIterator <p>
SliceIterator <p>
ImageConstIteratorWithIndex</dd></dl>
<div class="fragment"><pre class="fragment"><span class="comment">/*=========================================================================</span>
<span class="comment"></span>
<span class="comment">  Program:   Insight Segmentation &amp; Registration Toolkit</span>
<span class="comment">  Module:    $RCSfile: itkImageSliceIteratorTest.cxx,v $</span>
<span class="comment">  Language:  C++</span>
<span class="comment">  Date:      $Date: 2003-09-10 14:30:09 $</span>
<span class="comment">  Version:   $Revision: 1.12 $</span>
<span class="comment"></span>
<span class="comment">  Copyright (c) Insight Software Consortium. All rights reserved.</span>
<span class="comment">  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.</span>
<span class="comment"></span>
<span class="comment">     This software is distributed WITHOUT ANY WARRANTY; without even </span>
<span class="comment">     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR </span>
<span class="comment">     PURPOSE.  See the above copyright notices for more information.</span>
<span class="comment"></span>
<span class="comment">=========================================================================*/</span>
<span class="preprocessor">#if defined(_MSC_VER)</span>
<span class="preprocessor"></span><span class="preprocessor">#pragma warning ( disable : 4786 )</span>
<span class="preprocessor"></span><span class="preprocessor">#endif</span>
<span class="preprocessor"></span>
<span class="preprocessor">#include &lt;iostream&gt;</span>

<span class="preprocessor">#include "<a class="code" href="itkImage_8h.html">itkImage.h</a>"</span>
<span class="preprocessor">#include "<a class="code" href="itkImageSliceIteratorWithIndex_8h.html">itkImageSliceIteratorWithIndex.h</a>"</span>
<span class="preprocessor">#include "<a class="code" href="itkImageSliceConstIteratorWithIndex_8h.html">itkImageSliceConstIteratorWithIndex.h</a>"</span>




<span class="keywordtype">int</span> itkImageSliceIteratorTest(<span class="keywordtype">int</span>, <span class="keywordtype">char</span>* [] )
{
  std::cout &lt;&lt; <span class="stringliteral">"Creating an image of indices"</span> &lt;&lt; std::endl;

  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ImageDimension = 3;

  <span class="keyword">typedef</span> <a name="_a0"></a><a class="code" href="classitk_1_1Index.html" title="Represent a n-dimensional index in a n-dimensional image.">itk::Index&lt; ImageDimension &gt;</a>             PixelType;

  <span class="keyword">typedef</span> <a name="_a1"></a><a class="code" href="classitk_1_1Image.html" title="Templated n-dimensional image class.">itk::Image&lt; PixelType, ImageDimension &gt;</a>  ImageType;


  <a name="a2"></a><a class="code" href="itkFEMMacro_8h.html#539cce1a3282ba59952dedcbf9cdb23f">ImageType::Pointer</a> myImage = <a name="a3"></a><a class="code" href="namespaceHardConnectedComponentImageFilter.html#870262f145e0b45206db74df8053b59c">ImageType::New</a>();
  
  <a name="a4"></a><a class="code" href="namespaceHardConnectedComponentImageFilter.html#5bf82236e1e50e653de84c8ead448599">ImageType::SizeType</a> size;

  size[0] = 100;
  size[1] = 100;
  size[2] = 100;

  <a name="a5"></a><a class="code" href="namespaceHardConnectedComponentImageFilter.html#be32dc19e71d40322ad9828b9ab40853">ImageType::IndexType</a> start;
  start.Fill(0);

  <a name="a6"></a><a class="code" href="namespaceHardConnectedComponentImageFilter.html#ed8c4a40607d317c666eb96ea265e126">ImageType::RegionType</a> region;
  region.SetIndex( start );
  region.SetSize( size );

  myImage-&gt;SetLargestPossibleRegion( region );
  myImage-&gt;SetBufferedRegion( region );
  myImage-&gt;SetRequestedRegion( region );
  myImage-&gt;Allocate();

  <span class="keyword">typedef</span> <a name="_a7"></a><a class="code" href="classitk_1_1ImageSliceIteratorWithIndex.html" title="A multi-dimensional image iterator that extends the ImageLinearIteratorWithIndex...">itk::ImageSliceIteratorWithIndex&lt; ImageType &gt;</a> IteratorType;

  <span class="keyword">typedef</span> <a name="_a8"></a><a class="code" href="classitk_1_1ImageSliceConstIteratorWithIndex.html" title="Multi-dimensional image iterator which only walks a region.">itk::ImageSliceConstIteratorWithIndex&lt; ImageType &gt;</a> ConstIteratorType;

  IteratorType it( myImage, region );

  it.GoToBegin();
  it.SetFirstDirection( 0 );  <span class="comment">// 0=x, 1=y, 2=z</span>
  it.SetSecondDirection( 1 ); <span class="comment">// 0=x, 1=y, 2=z</span>

  <a class="code" href="namespaceHardConnectedComponentImageFilter.html#be32dc19e71d40322ad9828b9ab40853">ImageType::IndexType</a> index;
  
  <span class="keywordflow">while</span>( !it.IsAtEnd() )
  {
    <span class="keywordflow">while</span>( !it.IsAtEndOfSlice() )
    {
      <span class="keywordflow">while</span>( !it.IsAtEndOfLine() )
      {
        index = it.GetIndex();
        it.Set( index );
        ++it;
      }
      it.NextLine();
    }
    it.NextSlice();
  }

  { 
  <span class="comment">// Verification </span>
  std::cout &lt;&lt; <span class="stringliteral">"Verifying for iterator..."</span>;
  IteratorType ot( myImage, region );

  ot.GoToBegin();
  ot.SetFirstDirection( 0 ); <span class="comment">// 0=x, 1=y, 2=z</span>
  ot.SetSecondDirection( 1 ); <span class="comment">// 0=x, 1=y, 2=z</span>
 
  <span class="keywordflow">while</span>( !ot.IsAtEnd() )
  {
    <span class="keywordflow">while</span>( !ot.IsAtEndOfSlice() )
    {
      <span class="keywordflow">while</span>( !ot.IsAtEndOfLine() )
      {
        index = ot.GetIndex();
        <span class="keywordflow">if</span>( ot.Get() != index )
        {
          std::cerr &lt;&lt; <span class="stringliteral">"Values don't correspond to what was stored "</span>
            &lt;&lt; std::endl;
          std::cerr &lt;&lt; <span class="stringliteral">"Test failed at index "</span>;
          std::cerr &lt;&lt; index &lt;&lt; std::endl;
          std::cerr &lt;&lt; <span class="stringliteral">"It should be "</span>;
          std::cerr &lt;&lt; ot.Get() &lt;&lt; std::endl;
          <span class="keywordflow">return</span> EXIT_FAILURE;
        }
        ++ot;
      }
      ot.NextLine();
    }
    ot.NextSlice();
  }
  std::cout &lt;&lt; <span class="stringliteral">"  Done !"</span> &lt;&lt; std::endl;


  <span class="comment">// Verification </span>
  std::cout &lt;&lt; <span class="stringliteral">"Verifying for const iterator..."</span>;
  ConstIteratorType cot( myImage, region );

  cot.GoToBegin();
  cot.SetFirstDirection( 0 ); <span class="comment">// 0=x, 1=y, 2=z</span>
  cot.SetSecondDirection( 1 ); <span class="comment">// 0=x, 1=y, 2=z</span>
 
  <span class="keywordflow">while</span>( !cot.IsAtEnd() )
  {
    <span class="keywordflow">while</span>( !cot.IsAtEndOfSlice() )
    {
      <span class="keywordflow">while</span>( !cot.IsAtEndOfLine() )
      {
        index = cot.GetIndex();
        <span class="keywordflow">if</span>( cot.Get() != index )
        {
          std::cerr &lt;&lt; <span class="stringliteral">"Values don't correspond to what was stored "</span>
            &lt;&lt; std::endl;
          std::cerr &lt;&lt; <span class="stringliteral">"Test failed at index "</span>;
          std::cerr &lt;&lt; index &lt;&lt; std::endl;
          std::cerr &lt;&lt; <span class="stringliteral">"It should be "</span>;
          std::cerr &lt;&lt; cot.Get() &lt;&lt; std::endl;
          <span class="keywordflow">return</span> EXIT_FAILURE;
        }
        ++cot;
      }
      cot.NextLine();
    }
    cot.NextSlice();
  }
  std::cout &lt;&lt; <span class="stringliteral">"  Done !"</span> &lt;&lt; std::endl;




  <span class="comment">// Verification </span>
  std::cout &lt;&lt; <span class="stringliteral">"Verifying iterator in reverse direction... "</span>;

  IteratorType ior( myImage, region );

  ior.GoToReverseBegin();
  ior.SetFirstDirection( 0 );  <span class="comment">// 0=x, 1=y, 2=z</span>
  ior.SetSecondDirection( 1 ); <span class="comment">// 0=x, 1=y, 2=z</span>
 
  <span class="keywordflow">while</span>( !ior.IsAtReverseEnd() )
  {
    <span class="keywordflow">while</span>( !ior.IsAtReverseEndOfSlice() )
    {
      <span class="keywordflow">while</span>( !ior.IsAtReverseEndOfLine() )
      {
        index = ior.GetIndex();
        <span class="keywordflow">if</span>( ior.Get() != index )
        {
          std::cerr &lt;&lt; <span class="stringliteral">"Values don't correspond to what was stored "</span>
            &lt;&lt; std::endl;
          std::cerr &lt;&lt; <span class="stringliteral">"Test failed at index "</span>;
          std::cerr &lt;&lt; index &lt;&lt; <span class="stringliteral">" value is "</span> &lt;&lt; ior.Get() &lt;&lt;  std::endl;
          <span class="keywordflow">return</span> EXIT_FAILURE;
        }
        --ior;
      }
      ior.PreviousLine();
    }
    ior.PreviousSlice();
  }

  std::cout &lt;&lt; <span class="stringliteral">"   Done ! "</span> &lt;&lt; std::endl;



  <span class="comment">// Verification </span>
  std::cout &lt;&lt; <span class="stringliteral">"Verifying const iterator in reverse direction... "</span>;

  ConstIteratorType cor( myImage, region );

  cor.GoToReverseBegin();
  cor.SetFirstDirection( 0 );  <span class="comment">// 0=x, 1=y, 2=z</span>
  cor.SetSecondDirection( 1 ); <span class="comment">// 0=x, 1=y, 2=z</span>
 
  <span class="keywordflow">while</span>( !cor.IsAtReverseEnd() )
  {
    <span class="keywordflow">while</span>( !cor.IsAtReverseEndOfSlice() )
    {
      <span class="keywordflow">while</span>( !cor.IsAtReverseEndOfLine() )
      {
        index = cor.GetIndex();
        <span class="keywordflow">if</span>( cor.Get() != index )
        {
          std::cerr &lt;&lt; <span class="stringliteral">"Values don't correspond to what was stored "</span>
            &lt;&lt; std::endl;
          std::cerr &lt;&lt; <span class="stringliteral">"Test failed at index "</span>;
          std::cerr &lt;&lt; index &lt;&lt; <span class="stringliteral">" value is "</span> &lt;&lt; cor.Get() &lt;&lt;  std::endl;
          <span class="keywordflow">return</span> EXIT_FAILURE;
        }
        --cor;
      }
      cor.PreviousLine();
    }
    cor.PreviousSlice();
  }
  std::cout &lt;&lt; <span class="stringliteral">"   Done ! "</span> &lt;&lt; std::endl;

  }

  { 
  <span class="comment">// Verification </span>
  std::cout &lt;&lt; <span class="stringliteral">"Test in a region &lt; LargestPossibleRegion"</span> &lt;&lt; std::endl;
  std::cout &lt;&lt; <span class="stringliteral">"Verifying for iterator..."</span>;

  size[0]  = 50;
  size[1]  = 50;
  size[2]  = 50;

  start[0] = 25;
  start[1] = 25;
  start[2] = 25;

  region.SetIndex( start );
  region.SetSize( size );

  IteratorType ot( myImage, region );

  ot.GoToBegin();
  ot.SetFirstDirection( 0 ); <span class="comment">// 0=x, 1=y, 2=z</span>
  ot.SetSecondDirection( 1 ); <span class="comment">// 0=x, 1=y, 2=z</span>
 
  <span class="keywordflow">while</span>( !ot.IsAtEnd() )
  {
    <span class="keywordflow">while</span>( !ot.IsAtEndOfSlice() )
    {
      <span class="keywordflow">while</span>( !ot.IsAtEndOfLine() )
      {
        index = ot.GetIndex();
        <span class="keywordflow">if</span>( ot.Get() != index )
        {
          std::cerr &lt;&lt; <span class="stringliteral">"Values don't correspond to what was stored "</span>
            &lt;&lt; std::endl;
          std::cerr &lt;&lt; <span class="stringliteral">"Test failed at index "</span>;
          std::cerr &lt;&lt; index &lt;&lt; std::endl;
          std::cerr &lt;&lt; <span class="stringliteral">"It should be "</span>;
          std::cerr &lt;&lt; ot.Get() &lt;&lt; std::endl;
          <span class="keywordflow">return</span> EXIT_FAILURE;
        }
        ++ot;
      }
      ot.NextLine();
    }
    ot.NextSlice();
  }
  std::cout &lt;&lt; <span class="stringliteral">"  Done !"</span> &lt;&lt; std::endl;


  <span class="comment">// Verification </span>
  std::cout &lt;&lt; <span class="stringliteral">"Verifying for const iterator..."</span>;
  ConstIteratorType cot( myImage, region );

  cot.GoToBegin();
  cot.SetFirstDirection( 0 ); <span class="comment">// 0=x, 1=y, 2=z</span>
  cot.SetSecondDirection( 1 ); <span class="comment">// 0=x, 1=y, 2=z</span>
 
  <span class="keywordflow">while</span>( !cot.IsAtEnd() )
  {
    <span class="keywordflow">while</span>( !cot.IsAtEndOfSlice() )
    {
      <span class="keywordflow">while</span>( !cot.IsAtEndOfLine() )
      {
        index = cot.GetIndex();
        <span class="keywordflow">if</span>( cot.Get() != index )
        {
          std::cerr &lt;&lt; <span class="stringliteral">"Values don't correspond to what was stored "</span>
            &lt;&lt; std::endl;
          std::cerr &lt;&lt; <span class="stringliteral">"Test failed at index "</span>;
          std::cerr &lt;&lt; index &lt;&lt; std::endl;
          std::cerr &lt;&lt; <span class="stringliteral">"It should be "</span>;
          std::cerr &lt;&lt; cot.Get() &lt;&lt; std::endl;
          <span class="keywordflow">return</span> EXIT_FAILURE;
        }
        ++cot;
      }
      cot.NextLine();
    }
    cot.NextSlice();
  }
  std::cout &lt;&lt; <span class="stringliteral">"  Done !"</span> &lt;&lt; std::endl;




  <span class="comment">// Verification </span>
  std::cout &lt;&lt; <span class="stringliteral">"Verifying iterator in reverse direction... "</span>;

  IteratorType ior( myImage, region );

  ior.GoToReverseBegin();
  ior.SetFirstDirection( 0 );  <span class="comment">// 0=x, 1=y, 2=z</span>
  ior.SetSecondDirection( 1 ); <span class="comment">// 0=x, 1=y, 2=z</span>
 
  <span class="keywordflow">while</span>( !ior.IsAtReverseEnd() )
  {
    <span class="keywordflow">while</span>( !ior.IsAtReverseEndOfSlice() )
    {
      <span class="keywordflow">while</span>( !ior.IsAtReverseEndOfLine() )
      {
        index = ior.GetIndex();
        <span class="keywordflow">if</span>( ior.Get() != index )
        {
          std::cerr &lt;&lt; <span class="stringliteral">"Values don't correspond to what was stored "</span>
            &lt;&lt; std::endl;
          std::cerr &lt;&lt; <span class="stringliteral">"Test failed at index "</span>;
          std::cerr &lt;&lt; index &lt;&lt; <span class="stringliteral">" value is "</span> &lt;&lt; ior.Get() &lt;&lt;  std::endl;
          <span class="keywordflow">return</span> EXIT_FAILURE;
        }
        --ior;
      }
      ior.PreviousLine();
    }
    ior.PreviousSlice();
  }

  std::cout &lt;&lt; <span class="stringliteral">"   Done ! "</span> &lt;&lt; std::endl;



  <span class="comment">// Verification </span>
  std::cout &lt;&lt; <span class="stringliteral">"Verifying const iterator in reverse direction... "</span>;

  ConstIteratorType cor( myImage, region );

  cor.GoToReverseBegin();
  cor.SetFirstDirection( 0 );  <span class="comment">// 0=x, 1=y, 2=z</span>
  cor.SetSecondDirection( 1 ); <span class="comment">// 0=x, 1=y, 2=z</span>
 
  <span class="keywordflow">while</span>( !cor.IsAtReverseEnd() )
  {
    <span class="keywordflow">while</span>( !cor.IsAtReverseEndOfSlice() )
    {
      <span class="keywordflow">while</span>( !cor.IsAtReverseEndOfLine() )
      {
        index = cor.GetIndex();
        <span class="keywordflow">if</span>( cor.Get() != index )
        {
          std::cerr &lt;&lt; <span class="stringliteral">"Values don't correspond to what was stored "</span>
            &lt;&lt; std::endl;
          std::cerr &lt;&lt; <span class="stringliteral">"Test failed at index "</span>;
          std::cerr &lt;&lt; index &lt;&lt; <span class="stringliteral">" value is "</span> &lt;&lt; cor.Get() &lt;&lt;  std::endl;
          <span class="keywordflow">return</span> EXIT_FAILURE;
        }
        --cor;
      }
      cor.PreviousLine();
    }
    cor.PreviousSlice();
  }
  std::cout &lt;&lt; <span class="stringliteral">"   Done ! "</span> &lt;&lt; std::endl;

  }



  std::cout &lt;&lt; <span class="stringliteral">"Test passed"</span> &lt;&lt; std::endl;

  <span class="keywordflow">return</span> EXIT_SUCCESS;

}




</pre></div> </div>
<hr><address><small>
Generated at Thu May 7 22:04:07 2009 for ITK  by <a href="http://www.stack.nl/~dimitri/doxygen/index.html"> <img 
src="http://www.stack.nl/~dimitri/doxygen/doxygen.png" alt="doxygen"
align="middle" border=0 width=110 height=53>
</a> 1.5.9 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
 &copy;&nbsp;1997-2000</small></address>
</body>
</html>