[Insight-developers] SetOutput()

Miller, James V (CRD) millerjv@crd.ge.com
Mon, 1 Oct 2001 15:06:56 -0400


This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01C14AAC.3D185640
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_001_01C14AAC.3D185640"


------_=_NextPart_001_01C14AAC.3D185640
Content-Type: text/plain;
	charset="iso-8859-1"

Lydia asked a question on the tcon last week about the impact of calling SetOutput() on a filter.
The context was in using a mini-pipeline within another process object. The goal was to have a line
in the GenerateData() that would call
 
someFilter->SetOutput( this->GetOutput() );
someFilter->Update()
 
The "goal" was to setup "someFilter" so that it would have the same regions defined as the output of
the current filter and have "someFilter" write to the output of the current filter.
 
The impact of doing this is quite drastic.  It ends up breaking the pipeline mechanism.  If the
pipeline was
 
A --> B --> C
 
and "B" was using the above lines to have "someFilter" do its work, then after the first execution,
the pipeline ends up looking like
 
A --> someFilter --> C
 
In other words, it is like "B" is no longer part of the pipeline.  Any further updates, will
completely bypass "B" even if "B" is modified by some "Set" event (so changes to "B" are not longer
reflected in the state of the pipeline).
 
So here are my plans:
 
1. I am going to remove SetOutput() from the API.
2. I am going to provide a mechanism to perform what the developer expected to happen in the first
place. This will be in the form of an explicit way to execute mini-pipelines within a filter.  I
haven't decided on the API for this yet but hopefully I will get this designed this week.
 
There are currently only a few places where this is done in the toolkit.  I'll modified the filters
that do this once I have an implementation.
 
All for now.


Jim Miller 
_____________________________________
Visualization & Computer Vision
GE Corporate Research & Development
Bldg. KW, Room C218B
P.O. Box 8, Schenectady NY 12301

millerjv@crd.ge.com < mailto:millerjv@crd.ge.com <mailto:millerjv@crd.ge.com> >
(518) 387-4005, Dial Comm: 8*833-4005, 
Cell: (518) 505-7065, Fax: (518) 387-6981 


 

------_=_NextPart_001_01C14AAC.3D185640
Content-Type: text/html;
	charset="iso-8859-1"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">


<META content="MSHTML 5.50.4616.200" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=837295518-01102001><FONT size=2>Lydia asked a question on the 
tcon last week about the impact of calling SetOutput() on a filter.&nbsp; The 
context was in using a mini-pipeline within another process object. The goal was 
to have a line in the GenerateData() that would call</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>someFilter-&gt;SetOutput( 
this-&gt;GetOutput() );</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT 
size=2>someFilter-&gt;Update()</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>The "goal" was to setup 
"someFilter" so that it would have the same regions defined as the output of the 
current filter and have "someFilter" write to the output of the current 
filter.</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>The impact of doing this is 
quite drastic.&nbsp; It ends up breaking the pipeline mechanism.&nbsp; If the 
pipeline was</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>A --&gt; B --&gt; 
C</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>and "B" was using the above 
lines to have "someFilter" do its work, then after the first execution, the 
pipeline ends up looking like</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>A --&gt; someFilter --&gt; 
C</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>In other words, it is like "B" 
is no longer part of the pipeline.&nbsp; Any further updates, will completely 
bypass "B" even if "B" is modified by some "Set" event (so changes to "B" are 
not longer reflected in the state of the pipeline).</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=837295518-01102001></SPAN><SPAN class=837295518-01102001><FONT 
size=2>So here are my plans:</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>1. I am going to remove 
SetOutput() from the API.</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>2. I am going to provide a 
mechanism to perform what the developer expected to happen in the first place. 
This will be in the form of an explicit way to execute mini-pipelines within a 
filter.&nbsp; I haven't decided on the API for this yet but hopefully I will get 
this designed this week.</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>There are currently only a few 
places where this is done in the toolkit.&nbsp; I'll modified the filters that 
do this once I have an implementation.</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>All for 
now.</FONT></SPAN></DIV><BR>
<P><B><FONT face="Comic Sans MS" color=#000080>Jim Miller</FONT></B> 
<BR><B><I><FONT face=Arial color=#ff0000 
size=2>_____________________________________</FONT></I></B><I></I><BR><I></I><I><FONT 
face=Arial color=#000000 size=1>Visualization &amp; Computer Vision<BR>GE 
Corporate Research &amp; Development<BR>Bldg. KW, Room C218B<BR>P.O. Box 8, 
Schenectady NY 12301<BR><BR></FONT><U><FONT face=Arial color=#0000ff 
size=1>millerjv@crd.ge.com &lt;<A 
href="mailto:millerjv@crd.ge.com">mailto:millerjv@crd.ge.com</A>&gt;</FONT></U></I><BR><I><FONT 
face=Arial color=#000000 size=1>(518) 387-4005, Dial Comm: 8*833-4005, 
</FONT></I><BR><I><FONT face=Arial color=#000000 size=1>Cell: (518) 505-7065, 
Fax: (518) 387-6981</FONT></I> </P><BR>
<DIV>&nbsp;</DIV></BODY></HTML>

------_=_NextPart_001_01C14AAC.3D185640--

------_=_NextPart_000_01C14AAC.3D185640
Content-Type: application/octet-stream;
	name="Miller, James V (CRD).vcf"
Content-Disposition: attachment;
	filename="Miller, James V (CRD).vcf"

BEGIN:VCARD
VERSION:2.1
N:Miller;James
FN:Miller, James V (CRD)
ORG:CRD;ESL
TITLE:Computer Scientist
TEL;WORK;VOICE:*833-4005
TEL;WORK;VOICE:1 518 387-4005
ADR;WORK:;KW-C218B;P.O. Box 8;Schenectady;New York;12301;USA
LABEL;WORK;ENCODING=QUOTED-PRINTABLE:KW-C218B=0D=0AP.O. Box 8=0D=0ASchenectady, New York 12301=0D=0AUSA
EMAIL;PREF;INTERNET:millerjv@crd.ge.com
REV:20010420T140329Z
END:VCARD

------_=_NextPart_000_01C14AAC.3D185640--