<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;}
span.EmailStyle20
        {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'> </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 am not sure where you are calling Pipeline().
Perhaps you could try all your interactor stuff in your CView’s OnInitialUpdate()
– assuming it needs to be done only once.</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> interactor->SetRenderWindow(m_RenderWindow);</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> interactor->SetInteractorStyle(NULL);</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> interactor->SetInstallMessageProc(false);</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> interactor->Initialize();</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> // Change the size of the VTK window to
match the client area of the View.</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> CRect rect;</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> GetClientRect( &rect );</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> interactor->UpdateSize( rect.right-rect.left,
rect.bottom-rect.top ); </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Also, can you check if you are getting LBDown
in your WindowProc(). </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>HTH</span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'> </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'> </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> Renaud Isabelle
[mailto:renauisa@yahoo.fr] <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'>22 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'>21:34</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> John Platt<br>
<b><span style='font-weight:bold'>Cc:</span></b> vtkusers@vtk.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [vtkusers] need
desperately any 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'> </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 John,</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'> </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 having
replied. </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'> </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'>- First of all, sure that
I am very interested in your <strong><b><font color=black face="Times New Roman"><span
style='color:black'>vtkGlyph2DMapper</span></font></b></strong><font
color=black><span style='color:black'>; I think this is very convenient to use
and is exactly what I am looking for. </span></font></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'> </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'>- Then, my actual
work is inspiring from the example <strong><b><font face="Times New Roman">LiverTumorSegmentation</font></b></strong>
application and I think that maybe <strong><b><font face="Times New Roman">I
don't really need to use vtkPointPicker</font></b></strong> but just handling
LeftButtonPressEvent event instead. Indeed, I took a look on the Pick() method
of this class and it calls <strong><b><font face="Times New Roman">SetDisplayPoint(), DisplayToWorld()
and GetWorldPoint() </font></b></strong>methods as I was already doing in
my own class. </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'> </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'>- So, this is what is
done for now: as in <strong><b><font face="Times New Roman">LiverTumorSegmentation</font></b></strong>,
I have 2 classes: one for MFC handling <strong><b><font face="Times New Roman">CView</font></b></strong> and
the other for viewing slices <strong><b><font face="Times New Roman">vtkSliceViewer</font></b></strong>:</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'> </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'>void CView::Pipeline()</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong><br>
<strong><b><font face="Times New Roman"> viewer.SetInput(image);</font></b></strong></span></b>
//vtkSliceViewer viewer</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'> viewer.SetInteractor(
interactor ); </span></font></b></strong><b><span style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> interactor->SetInstallMessageProc(false);</font></b></strong><br>
<strong><b><font face="Times New Roman"> interactor->Initialize();</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'>}</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'> </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'>LRESULT
CView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong><br>
<strong><b><font face="Times New Roman">if(message == WM_LBUTTONDOWN)</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'>{</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'> if (
this->interactor->GetInitialized() )</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> {</font></b></strong><br>
<strong><b><font face="Times New Roman"> return
vtkHandleMessage2(this->m_hWnd, message, wParam, lParam,
this->interactor);</font></b></strong><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'> }</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'>else </span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> return
CFormView::WindowProc(message, wParam, lParam);</font></b></strong><br>
<strong><b><font face="Times New Roman">}</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'> </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'>the other class
vtkSliceviewer:</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'> </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'>void
vtkSliceViewer::SetInteractor( vtkRenderWindowInteractor * interactor )</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong><br>
<strong><b><font face="Times New Roman">
interactor->SetRenderWindow(m_RenderWindow);</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'>
interactor->SetInteractorStyle(NULL);</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'> </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'> //create a callback
for the left mouseclick</span></font></b></strong><b><span style='font-weight:
bold'><br>
<strong><b><font face="Times New Roman"> MyInteractorCallback*
m_pInteractorCallback = MyInteractorCallback::New();</font></b></strong><br>
<strong><b><font face="Times New Roman">
m_pInteractorCallback->SetImageSliceViewer(this); </font></b></strong><br>
<strong><b><font face="Times New Roman"> interactor->AddObserver(
vtkCommand::LeftButtonPressEvent, m_pInteractorCallback);</font></b></strong><br>
<strong><b><font face="Times New Roman">}</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'> </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
MyInteractorCallback : public vtkCommand</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong><br>
<strong><b><font face="Times New Roman">public:</font></b></strong><br>
<strong><b><font face="Times New Roman"> static MyInteractorCallback
*New() { return new MyInteractorCallback;}</font></b></strong><br>
<strong><b><font face="Times New Roman"> </font></b></strong><br>
<strong><b><font face="Times New Roman"> virtual void
Execute(vtkObject *caller, unsigned long eventId, void *callData)</font></b></strong><br>
<strong><b><font face="Times New Roman"> {</font></b></strong><br>
<strong><b><font face="Times New Roman"> vtkWin32RenderWindowInteractor
*interactor = reinterpret_cast<vtkWin32RenderWindowInteractor *>(caller);</font></b></strong><br>
<strong><b><font face="Times New Roman">
int x = interactor->GetEventPosition()[0];</font></b></strong><br>
<strong><b><font face="Times New Roman">
int y = interactor->GetEventPosition()[1];</font></b></strong><br>
<strong><b><font face="Times New Roman"> m_viewer->SelectPoint(x,y);</font></b></strong></span></b><br>
<strong><b><font face="Times New Roman"> }</font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> </font></b></strong><br>
<strong><b><font face="Times New Roman"> void
SetImageSliceViewer(vtkSliceViewer* viewer){m_viewer = viewer;}</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'>private:</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">
MyInteractorCallback(){m_viewer = NULL;}</font></b></strong><br>
<strong><b><font face="Times New Roman"> vtkSliceViewer*
m_viewer; </font></b></strong><br>
<strong><b><font face="Times New Roman">};</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'> </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'>void
vtkSliceViewer::SelectPoint( int x, int y )</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">{</font></b></strong><br>
<strong><b><font face="Times New Roman"> TRACE("ds
SelectPoint\n"); //check if my observer is called</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'>
</span></font></b></strong><span style='background:yellow'>--> displayed
only when point clicked is outside the render window!!!!!!!!</span></p>
</div>
<div>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </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'> </span></font></b></strong>//
Convert display point to world point</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'> double
world_point[4];</span></font></b></strong><b><span style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> m_Renderer->SetDisplayPoint(
x, y, 0 );</font></b></strong><br>
<strong><b><font face="Times New Roman"> m_Renderer->DisplayToWorld();</font></b></strong><br>
<strong><b><font face="Times New Roman"> m_Renderer->GetWorldPoint(
world_point );</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'> double realz =
m_SliceNum * spacing[2] + origin[2];</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> world_point[2] = realz;</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'> //mark point
clicked on viewer</span></font></b></strong><b><span style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">
this->SelectPoint(world_point[0], world_point[1], world_point[2]);</font></b></strong><br>
<strong><b><font face="Times New Roman">}</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'><br>
- But I am really confused with something strange: <strong><b><font
face="Times New Roman">my renderwindow is just a part of the MFC
window (CView</font></b></strong>). Yet, when I pressed left button mouse in
the window class, SelectPoint() is called only when my clicked point is
not in the render window. I checked out if my interactor size was set to
correct dimensions and it is actually the case. <strong><b><font
face="Times New Roman">But I can't figure out why my function is called only
when I clicked outside the render window.</font></b></strong> </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'> </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'>Any idea???</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'> </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>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </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'><br>
<b><i><span style='font-weight:bold;font-style:italic'>John Platt
<jcplatt@lineone.net></span></i></b> a écrit :</span></font></p>
</div>
<blockquote style='border:none;border-left:solid #1010FF 1.5pt;padding:0cm 0cm 0cm 4.0pt;
margin-left:3.75pt;margin-top:5.0pt;margin-bottom:5.0pt'>
<p class=MsoNormal style='margin-left:36.0pt'><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 style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><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’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 style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><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 style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>
int x = interactor->GetEventPosition()[0];</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>
int y = interactor->GetEventPosition()[1];</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>
vtkPointPicker* picker = interactor->GetPicker(); </span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>
picker->Pick( (double)x, (double)y, 0, renderer );</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>
int pointId = picker->GetPointId();</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><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 “handle right mouse
click”.</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><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 …</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><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 style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>
vtkGlyphSource->SetGlyphTypeToCircle();</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><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 style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>
m_vtkGlyphMapper->SetInput( m_vtkInputPolyData );</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>
m_vtkGlyphMapper->SetSource( vtkGlyphSource->GetOutput() );</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>
vtkGlyphSource->Delete();</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><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 style='margin-left:36.0pt'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>
m_vtkGlyphActor->SetMapper( m_vtkGlyphMapper );</span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><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 style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
<p class=MsoNormal style='margin-left:36.0pt'><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 style='margin-left:36.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
<p class=MsoNormal style='margin-left:72.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:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
<div>
<p class=MsoNormal style='margin-left:72.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:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.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:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>user picks 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->AddObserver()</font></b></strong>
to call a function to handle it. </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.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:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> <strong><b><font
face="Times New Roman">interactor->SetRenderWindow(m_RenderWindow);</font></b></strong></span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
interactor->SetInteractorStyle(NULL);</span></font></b></strong></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> vtkPointPicker
*picker = vtkPointPicker::New();</span></font></b></strong></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
interactor->SetPicker(picker);</span></font></b></strong></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> <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"> interactor->AddObserver(
vtkCommand::LeftButtonPressEvent, how_execute );</font></b></strong><br>
<strong><b><font face="Times New Roman"> interactor->AddObserver(
vtkCommand::EndPickEvent, how_execute);</font></b></strong><br>
<strong><b><font face="Times New Roman"> </font></b></strong></span></b></span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
interactor->SetInstallMessageProc(false);</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> interactor->Initialize();</font></b></strong></span></b></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.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>
// TODO: Add your specialized code here and/or call the base class<br>
<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"> {</font></b></strong><br>
<strong><b><font face="Times New Roman"> case WM_LBUTTONDOWN:</font></b></strong><br>
<strong><b><font face="Times New Roman"> if (
this->interactor->GetInitialized() )</font></b></strong><br>
<strong><b><font face="Times New Roman"> {</font></b></strong><br>
<strong><b><font face="Times New Roman"> return
vtkHandleMessage2(this->m_hWnd, message, wParam, lParam,
this->interactor);</font></b></strong><br>
<strong><b><font face="Times New Roman"> }</font></b></strong><br>
<strong><b><font face="Times New Roman"> break;</font></b></strong><br>
<strong><b><font face="Times New Roman"> }</font></b></strong><br>
</span></b> <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:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.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:72.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:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> static
vtkMyCallback *New() { return new vtkMyCallback; }</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman"> </font></b></strong><br>
<strong><b><font face="Times New Roman"> virtual void
Execute(vtkObject *caller, unsigned long eventId, void*)</font></b></strong><br>
<strong><b><font face="Times New Roman"> {</font></b></strong><br>
<strong><b><font face="Times New Roman">
vtkRenderWindowInteractor* interactor
= reinterpret_cast<vtkRenderWindowInteractor*>(caller);</font></b></strong></span></b></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
</span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> <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"> { </font></b></strong><br>
<strong><b><font face="Times New Roman">
int point[2];</font></b></strong><br>
<strong><b><font face="Times New Roman">
interactor->GetEventPosition(point);</font></b></strong><br>
<strong><b><font face="Times New Roman">
m_viewer->SelectPoint(point[0],point[1]);</font></b></strong><br>
<strong><b><font face="Times New Roman"> }</font></b></strong></span></b></span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> <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"> { </font></b></strong><br>
<strong><b><font face="Times New Roman">
vtkPointPicker* picker = (vtkPointPicker*) interactor->GetPicker();</font></b></strong><br>
<strong><b><font face="Times New Roman">
if(picker->GetPointId() != -1)</font></b></strong><br>
<strong><b><font face="Times New Roman">
{</font></b></strong><br>
<strong><b><font face="Times New Roman">
float* position = picker->GetPickPosition();</font></b></strong></span></b></span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><strong><b><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
m_sphereActor->SetPosition(position);</span></font></b></strong><b><span
style='font-weight:bold'><br>
<strong><b><font face="Times New Roman">
}</font></b></strong></span></b><br>
}<br>
}</p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.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:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.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:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.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:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'> </span></font></p>
</div>
<div>
<p class=MsoNormal style='margin-left:72.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Isabelle</span></font></p>
</div>
<div style='margin-left:36.0pt'>
<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>
</div>
<p class=MsoNormal style='margin-left:72.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>
</blockquote>
<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>