<HTML>
<HEAD>
<TITLE>Re: [Paraview] Reader methods question</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>FillOutputPortInformation:<BR>
<BR>
This adds one or more data types to an info object to announce what type of data this reader/filter will generate. &nbsp;I always felt this was of limited use as the data type very often changes depending on the input, and I&#8217;m pretty sure ParaView ignores it altogether. &nbsp;At any rate, just subclass from something like vtkDataObjectAlgorithm that provides an implementation for you.<BR>
<BR>
<BR>
RequestDataObject:<BR>
<BR>
This method is called to create the data object that is placed in the output of the filter. &nbsp;The method should check to see if the current output exists and is of the correct type. &nbsp;If not, it should allocate a new object and connect it to the output. &nbsp;Your implementation should look something like this.<BR>
<BR>
</SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'>int vtkMyReader::RequestDataObject(vtkInformation *,<BR>
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtkInformationVector **,<BR>
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vtkInformationVector **otuputVector)<BR>
{<BR>
&nbsp;&nbsp;// Figure out what the output type should be.<BR>
<BR>
&nbsp;&nbsp;vtkInformation *outInfo = outputVector-&gt;GetInformationObject(0);<BR>
&nbsp;&nbsp;vtkDataObject *output = vtkDataObject::GetData(outInfo);<BR>
<BR>
&nbsp;&nbsp;if (/*output type is vtkStructuredGrid*/)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;if (!output || !output-&gt;IsA(&quot;vtkStructuredGrid&quot;))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output = vtkStructuredGrid::New();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output-&gt;SetPipelineInformation(outInfo);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output-&gt;Delete(); &nbsp;&nbsp;// Not really deleted.<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;else if (/*output type is vtkUnstructuredGrid*/)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;if (!output || !output-&gt;IsA(&quot;vtkUnstructuredGrid&quot;))<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output = vtkUnstructuredGrid::New();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output-&gt;SetPipelineInformation(outInfo);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output-&gt;Delete(); &nbsp;&nbsp;// Not really deleted.<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;else<BR>
&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;vtkErrorMacro(&quot;Internal error: bad input type?&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;return 1;<BR>
}<BR>
</SPAN></FONT></FONT><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
<BR>
RequestInformation:<BR>
<BR>
Fill output information objects with meta information about the data. &nbsp;If loading structured data, then set vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(). &nbsp;If unstructured data, then set vtkStreamingDemandDrivenPipeline::MAXIMUM_NUMBER_OF_PIECES() (set to &#8211;1 if you can load any number of pieces).<BR>
<BR>
If your reader supports time data, then you should also set vtkStreamingDemandDrivenPipeline::TIME_STEPS() and vtkStreamingDemandDrivenPipeline::TIME_RANGE().<BR>
<BR>
<BR>
RequestUpdateExtent:<BR>
<BR>
The update extent pass moves up the pipeline. &nbsp;It gives filters a chance to adjust the extent requested (for example, by adding a ghost level). &nbsp;Since your reader is at the top of the pipeline, you can ignore this. &nbsp;You don&#8217;t need to provide an implementation.<BR>
<BR>
<BR>
RequestData:<BR>
<BR>
Basically what you said. &nbsp;Load the data and put it into the output object (that was previously created with vtkRequestDataObject). &nbsp;Pay attention to the values of the vtkStreamingDemandDrivenPipeline::UPDATE_* keys in the output information object.<BR>
<BR>
-Ken<BR>
<BR>
<BR>
On 8/31/10 1:36 AM, &quot;Felipe Bordeu&quot; &lt;<a href="felipe.bordeu@ec-nantes.fr">felipe.bordeu@ec-nantes.fr</a>&gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>Hello,<BR>
<BR>
I am a little confuse about all the methods in a reader (filter).<BR>
I writing a new reader (I already read all the wiki pages) that can<BR>
generate Un/Structured grids depending on the file.<BR>
<BR>
But I am not sure about what to put in each method.<BR>
<BR>
ProcessRequest(...<BR>
RequestDataObject(...<BR>
RequestData(...<BR>
RequestUpdateExtent(...<BR>
RequestInformation(...<BR>
FillOutputPortInformation(..<BR>
<BR>
I know RequesInformation(.. is for the type of output and the extend(in<BR>
the case is structured).<BR>
and I Know RequestData(... if for the generated data.<BR>
<BR>
Thanks for the help.<BR>
<BR>
--<BR>
<BR>
Felipe<BR>
<BR>
_______________________________________________<BR>
Powered by www.kitware.com<BR>
<BR>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><BR>
<BR>
Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView">http://paraview.org/Wiki/ParaView</a><BR>
<BR>
Follow this link to subscribe/unsubscribe:<BR>
<a href="http://www.paraview.org/mailman/listinfo/paraview">http://www.paraview.org/mailman/listinfo/paraview</a><BR>
<BR>
<BR>
</SPAN></FONT></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'><BR>
&nbsp;&nbsp;&nbsp;**** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kenneth Moreland<BR>
&nbsp;&nbsp;&nbsp;&nbsp;*** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sandia National Laboratories<BR>
*********** &nbsp;<BR>
*** *** *** &nbsp;email: <a href="kmorel@sandia.gov">kmorel@sandia.gov</a><BR>
** &nbsp;*** &nbsp;** &nbsp;phone: (505) 844-8919<BR>
&nbsp;&nbsp;&nbsp;&nbsp;*** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;web: &nbsp;&nbsp;<a href="http://www.cs.unm.edu/~kmorel">http://www.cs.unm.edu/~kmorel</a><BR>
</SPAN></FONT></FONT><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT>
</BODY>
</HTML>