[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. 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> </DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>someFilter->SetOutput(
this->GetOutput() );</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT
size=2>someFilter->Update()</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN> </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> </DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>The impact of doing this is
quite drastic. It ends up breaking the pipeline mechanism. If the
pipeline was</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>A --> B -->
C</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN> </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> </DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>A --> someFilter -->
C</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>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).</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN> </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> </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. 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> </DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2>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.</FONT></SPAN></DIV>
<DIV><SPAN class=837295518-01102001><FONT size=2></FONT></SPAN> </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 & Computer Vision<BR>GE
Corporate Research & 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 <<A
href="mailto:millerjv@crd.ge.com">mailto:millerjv@crd.ge.com</A>></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> </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--