<html>

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">


<meta name=Generator content="Microsoft Word 10 (filtered)">

<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
p
        {margin-right:0cm;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.EmailStyle19
        {font-family:Arial;
        color:navy;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=blue>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Hi Isabelle,</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>As far as I can see, the pick events are
fired by the Pick() method of the interactor&#8217;s picker. If you want to
observe these events, you must add the observers to the picker, not the interactor.
You must also arrange for the Pick() method to be called.</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>As a start, in the check for LeftButtonPressEvent,
call Pick() with the current mouse event position and then get the point id -</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>         int x = interactor-&gt;GetEventPosition()[0];</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>         int y = interactor-&gt;GetEventPosition()[1];</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>         vtkPointPicker* picker = interactor-&gt;GetPicker();
</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>         picker-&gt;Pick( (double)x,
(double)y, 0, renderer );</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>         int pointId = picker-&gt;GetPointId();</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>and print the point Id using the TRACE
macro. If you cannot get the LeftButtonPressEvent, see the recent thread on &#8220;handle
right mouse click&#8221;.</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I have drawn various 2D shapes, by first creating
a polydata object, and then, as each point is clicked, add the point as a
vertex to the polydata. The polydata is set as input to vtkGlyph2DMapper (very
similar to vtkTextMapper). This mapper takes vtkGlyphSource2D as a source and
copies the specified shape (diamond, circle, square etc.) to each of the points
in the polydata. The mapper then feeds a single vtkActor2D. Something like &#8230;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>   vtkGlyphSource2D* vtkGlyphSource =
vtkGlyphSource2D::New();</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>   vtkGlyphSource-&gt;SetGlyphTypeToCircle();</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>   m_vtkGlyphMapper = vtkGlyph2DMapper::New();</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>   m_vtkGlyphMapper-&gt;SetInput( m_vtkInputPolyData
);</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>   m_vtkGlyphMapper-&gt;SetSource( vtkGlyphSource-&gt;GetOutput()
);</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>   vtkGlyphSource-&gt;Delete();</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>   m_vtkGlyphActor = vtkActor2D::New();</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>   m_vtkGlyphActor-&gt;SetMapper( m_vtkGlyphMapper
);</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I can let you have the mapper if you think
it would be helpful.</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>John.</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>-----Original Message-----<br>
<b><span style='font-weight:bold'>From:</span></b> vtkusers-bounces+jcplatt=lineone.net@vtk.org
[mailto:vtkusers-bounces+jcplatt=lineone.net@vtk.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Renaud Isabelle<br>
<b><span style='font-weight:bold'>Sent:</span></b> </span></font><font size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>18 August 2005</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> </span></font><font size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>16:32</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'><br>
<b><span style='font-weight:bold'>To:</span></b> vtkusers@public.kitware.com<br>
<b><span style='font-weight:bold'>Subject:</span></b> [vtkusers] help with
interactor and MFC</span></font></p>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Hi guys, </span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>I have to implement user
interaction with my renderwindow in MFC: </span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>user&nbsp;picks&nbsp;points
on the displayed medical image and notices them with spheres. I saw that I have
to use <strong><b><font face="Times New Roman">vtkHandleMessage2</font></b></strong>
with <strong><b><font face="Times New Roman">vtkWin32RenderWindowInteractor</font></b></strong>
to handle a left button mouse click and <strong><b><font face="Times New Roman">interactor-&gt;AddObserver()</font></b></strong>
to call a function to handle it. </span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>But now, I see that <strong><b><font
face="Times New Roman">vtkPointPicker</font></b></strong> exists and that is
doing the same thing. I am really a bit confused with all the options. Here is
what I did:</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp; <strong><b><font
face="Times New Roman">interactor-&gt;SetRenderWindow(m_RenderWindow);</font></b></strong></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;
interactor-&gt;SetInteractorStyle(NULL);</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp; vtkPointPicker
*picker = vtkPointPicker::New();</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;
interactor-&gt;SetPicker(picker);</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp;<strong><b><font
face="Times New Roman">vtkMyCallback* how_execute = vtkMyCallback::New();</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;interactor-&gt;AddObserver(
vtkCommand::LeftButtonPressEvent, how_execute );</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp; interactor-&gt;AddObserver(
vtkCommand::EndPickEvent,&nbsp; how_execute);</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp; </font></b></strong></span></b></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;
interactor-&gt;SetInstallMessageProc(false);</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;interactor-&gt;Initialize();</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>LRESULT CMyView::<strong><b><font
face="Times New Roman">WindowProc(UINT message, WPARAM wParam, LPARAM lParam)</font></b></strong><b><span
style='font-weight:bold'><br>
</span></b>{<br>
&nbsp;// TODO: Add your specialized code here and/or call the base class<br>
&nbsp;<strong><b><font face="Times New Roman">switch ( message )</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;{</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;case WM_LBUTTONDOWN:</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;if (
this-&gt;interactor-&gt;GetInitialized() )</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;{</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;return
vtkHandleMessage2(this-&gt;m_hWnd, message, wParam, lParam,
this-&gt;interactor);</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;}</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;break;</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;}</font></b></strong><br>
</span></b>&nbsp;<strong><b><font face="Times New Roman">return
CFormView::WindowProc(message, wParam, lParam);</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">}</font></b></strong></span></b></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>class vtkMyCallback :
public vtkCommand</span></font></b></strong><b><span style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>public:</span></font></b></strong></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp; static
vtkMyCallback *New()&nbsp; {&nbsp;return new vtkMyCallback;&nbsp;}</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;virtual void
Execute(vtkObject *caller, unsigned long eventId, void*)</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp; {</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
vtkRenderWindowInteractor* interactor
=&nbsp;reinterpret_cast&lt;vtkRenderWindowInteractor*&gt;(caller);</font></b></strong></span></b></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp;&nbsp;&nbsp; <strong><b><font
face="Times New Roman">if(eventId == vtkCommand::LeftButtonPressEvent)</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp; </font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int point[2];</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
interactor-&gt;GetEventPosition(point);</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
m_viewer-&gt;SelectPoint(point[0],point[1]);</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp; }</font></b></strong></span></b></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp; <strong><b><font
face="Times New Roman">if(eventId == vtkCommand::EndPickEvent)</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp; {&nbsp; </font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
vtkPointPicker* picker = (vtkPointPicker*) interactor-&gt;GetPicker();</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if(picker-&gt;GetPointId() != -1)</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;{</font></b></strong><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
float* position = picker-&gt;GetPickPosition();</font></b></strong></span></b></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
m_sphereActor-&gt;SetPosition(position);</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</font></b></strong></span></b><br>
&nbsp;&nbsp; }<br>
}</p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>- This seems not to work.
I think that I have to choose between handling one of the event:
LeftButtonPressEvent or EndPickEvent. But I don't know what is the best option.
Could someone tell me what is best? </span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>- Btw, my purpose is to
add a circle on each point that user picked. Do I have to handle a <strong><b><font
face="Times New Roman">array of vtkSphereSource</font></b></strong> to display
so many spheres?</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Thanks for replyiong,
guys,</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>&nbsp;</span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Isabelle</span></font></p>

</div>

<div class=MsoNormal align=center style='margin-left:36.0pt;text-align:center'><font
size=3 face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=1 width="100%" align=center>

</span></font></div>

<p class=MsoNormal style='margin-left:36.0pt'><b><font size=3 color=red
face="Times New Roman"><span style='font-size:12.0pt;color:red;font-weight:
bold'>Appel audio GRATUIT</span></font> partout dans le monde</b> avec le
nouveau Yahoo! Messenger<br>
<a
href="http://us.rd.yahoo.com/messenger/mail_taglines/default/*http:/fr.messenger.yahoo.com">Téléchargez
le ici !</a> </p>

</div>

</body>

</html>