<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I prefer to use a template function like this:<div><div>template &lt;class PixelType, unsigned int Dimension&gt;&nbsp;int DoIt(itk::SmartPointer&lt;PixelType,Dimension&gt; img)</div><div>or&nbsp;</div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica" size="3">template&lt;class TImage&gt;&nbsp; int DoIt(itk::SmartPointer&lt;TImage&gt; img)</font></div></div><div><br></div><div>and inside the function creates the propers typedef using the dimension and pixel type of the template for example.</div><div><br></div><div>I hate use a global typedef but if you want to use them, &nbsp;you need to move the typedef how say&nbsp;Dženan Zukić.</div><div><br></div><div><br></div><div>Saludos</div><div><div apple-content-edited="true"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; font-variant: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-weight: normal; font-style: normal; "><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-weight: normal; font-style: normal; ">__________________________________<br><font class="Apple-style-span" color="#b7bfc5">|</font>&nbsp;Ariel Hernán Curiale Ph.D Student<br><font class="Apple-style-span" color="#b7bfc5">|</font>&nbsp;ETSI Telecomunicación<br><font class="Apple-style-span" color="#b7bfc5">|</font>&nbsp;Universidad de Valladolid<br><font class="Apple-style-span" color="#b7bfc5">|</font>&nbsp;Campus Miguel Delibes<br><font class="Apple-style-span" color="#b7bfc5">|</font>&nbsp;47011 Valladolid, Spain<br><font class="Apple-style-span" color="#b7bfc5">|</font>&nbsp;Phone: 983-423000 ext. 5590</div><div><font class="Apple-style-span" color="#b7b7b7" style="font-family: Helvetica; font-size: medium; font-weight: normal; font-style: normal; ">|</font>&nbsp;Web:&nbsp;<a href="http://www.curiale.com.ar/"><font class="Apple-style-span" color="#084ebe">www.curiale.com.ar</font></a><br><font class="Apple-style-span" color="#b7b7b7" style="font-family: Helvetica; font-size: medium; font-weight: normal; font-style: normal; ">|</font><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; font-weight: normal; font-style: normal; color: rgb(0, 0, 0); ">_________________________________</span></div></div></div></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></div>
</div>
<br><div><div>El 29/10/2012, a las 10:55, Dženan Zukić escribió:</div><br class="Apple-interchange-newline"><blockquote type="cite"><font><font face="verdana,sans-serif">typedef must come before its use, that is before function. You should make it just after all the includes.</font></font><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:15px;background-color:rgb(255,255,255)">&nbsp;typedef&nbsp;itk::</span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:15px;background-color:rgb(255,255,255)">ImageFileReader&lt;T_Image&gt;&nbsp;T_</span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:15px;background-color:rgb(255,255,255)">Reader;</span><font><font face="verdana,sans-serif"><br>

</font></font><br><div class="gmail_quote">On Sat, Oct 27, 2012 at 6:48 PM, flydps <span dir="ltr">&lt;<a href="mailto:flydps@163.com" target="_blank">flydps@163.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<u></u>





<div style="MARGIN:10px">
<div>Hi, friends!</div>
<div>I am trying to write sub function with Itk. But I am puzzled by how&nbsp;to 
get the Itk typedef parameters for the sub-function. The function I want to 
realize is as follow, but how can I transfer the information of&nbsp; "pReader" 
to my sub-function "OutputOldImageWidth"? </div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>#include&nbsp;"itkImage.h"</div>
<div>#include&nbsp;"itkImageFileReader.h"</div>
<div>#include&nbsp;"itkImageFileWriter.h"</div>
<div>&nbsp;</div>
<div>#include&nbsp;&lt;iostream&gt;</div>
<div>//Subfuntion&nbsp;to&nbsp;get&nbsp;image&nbsp;width</div>
<div>void&nbsp;OutputOldImageWidth(T_Reader::Pointer&nbsp;pReader);</div>
<div>&nbsp;</div>
<div>void&nbsp;OutputOldImageWidth(T_Reader::Pointer&nbsp;pReader)</div>
<div>{</div>
<div>&nbsp;&nbsp;const&nbsp;T_Image::RegionType&amp;&nbsp;inputRegion&nbsp;=&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pReader-&gt;GetOutput()-&gt;GetLargestPossibleRegion();</div>
<div>&nbsp;&nbsp;const&nbsp;T_Image::SizeType&amp;&nbsp;vnInputSize&nbsp;=&nbsp;inputRegion.GetSize();</div>
<div>&nbsp;&nbsp;unsigned&nbsp;int&nbsp;nOldWidth&nbsp;=&nbsp;vnInputSize[0];</div>
<div>&nbsp;&nbsp;unsigned&nbsp;int&nbsp;nOldHeight&nbsp;=&nbsp;vnInputSize[1];</div>
<div>&nbsp;&nbsp;printf("\nThe&nbsp;old&nbsp;width&nbsp;of&nbsp;image&nbsp;is&nbsp;%d",nOldWidth);</div>
<div>&nbsp;}</div>
<div>/////////////////////////////////////</div>
<div>&nbsp;</div>
<div>int&nbsp;main(&nbsp;int&nbsp;argc,&nbsp;char&nbsp;*&nbsp;argv[]&nbsp;)</div>
<div>{</div>
<div>&nbsp;&nbsp;if(&nbsp;argc&nbsp;!=&nbsp;3&nbsp;)&nbsp;</div>
<div>&nbsp;&nbsp;{&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;std::cerr&nbsp;&lt;&lt;&nbsp;"Usage:&nbsp;"</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&nbsp;std::endl</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&nbsp;argv[0]</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&nbsp;"&nbsp;inputImageFile&nbsp;outputImageFile&nbsp;"</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;&nbsp;std::endl;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;EXIT_FAILURE;</div>
<div>&nbsp;&nbsp;}</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;//&nbsp;Typedef's&nbsp;for&nbsp;pixel,&nbsp;image,&nbsp;reader&nbsp;and&nbsp;writer&nbsp;types</div>
<div>&nbsp;&nbsp;typedef&nbsp;unsigned&nbsp;char&nbsp;T_InputPixel;</div>
<div>&nbsp;&nbsp;typedef&nbsp;unsigned&nbsp;char&nbsp;T_OutputPixel;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;typedef&nbsp;itk::Image&lt;T_InputPixel,&nbsp;2&gt;&nbsp;T_Image;</div>
<div>&nbsp;&nbsp;typedef&nbsp;itk::ImageFileReader&lt;T_Image&gt;&nbsp;T_Reader;</div>
<div>&nbsp;&nbsp;typedef&nbsp;unsigned&nbsp;char&nbsp;T_WritePixel;</div>
<div>&nbsp;&nbsp;typedef&nbsp;itk::Image&lt;T_WritePixel,&nbsp;2&gt;&nbsp;T_WriteImage;</div>
<div>&nbsp;&nbsp;typedef&nbsp;itk::ImageFileWriter&lt;T_WriteImage&gt;&nbsp;T_Writer;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;//&nbsp;Prepare&nbsp;the&nbsp;reader&nbsp;and&nbsp;update&nbsp;it&nbsp;right&nbsp;away&nbsp;to&nbsp;know&nbsp;the&nbsp;sizes&nbsp;beforehand.</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;T_Reader::Pointer&nbsp;pReader&nbsp;=&nbsp;T_Reader::New();</div>
<div>&nbsp;&nbsp;pReader-&gt;SetFileName(&nbsp;argv[1]&nbsp;);</div>
<div>&nbsp;&nbsp;pReader-&gt;Update();</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;</div>
<div>&nbsp;&nbsp;//******************&nbsp;Call&nbsp;subfunction&nbsp;to&nbsp;get&nbsp;the&nbsp;image&nbsp;width.</div>
<div>&nbsp;OutputOldImageWidth(T_Reader::Pointer&nbsp;pReader)</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;//&nbsp;Write&nbsp;the&nbsp;result</div>
<div>&nbsp;&nbsp;T_Writer::Pointer&nbsp;pWriter&nbsp;=&nbsp;T_Writer::New();</div>
<div>&nbsp;&nbsp;pWriter-&gt;SetFileName(argv[2]);</div>
<div>&nbsp;&nbsp;pWriter-&gt;SetInput(pReader-&gt;GetOutput());</div>
<div>&nbsp;&nbsp;pWriter-&gt;Update();</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;return&nbsp;EXIT_SUCCESS;</div>
<div>}</div></div>
<div>&nbsp;</div>
<div><span>Thank you!</span></div><span class="HOEnZb"><font color="#888888">
<div><span></span>&nbsp;</div>
<div><span>flydps</span></div></font></span></div>
<br>_____________________________________<br>
Powered by <a href="http://www.kitware.com/" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/products/protraining.php</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><br></div>
_____________________________________<br>Powered by <a href="http://www.kitware.com">www.kitware.com</a><br><br>Visit other Kitware open-source projects at<br><a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><br><br>Kitware offers ITK Training Courses, for more information visit:<br>http://www.kitware.com/products/protraining.php<br><br>Please keep messages on-topic and check the ITK FAQ at:<br>http://www.itk.org/Wiki/ITK_FAQ<br><br>Follow this link to subscribe/unsubscribe:<br>http://www.itk.org/mailman/listinfo/insight-users<br></blockquote></div><br></div></div></body></html>