GOFIGURE2  0.9.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vtkViewImage2DCollection.cxx
Go to the documentation of this file.
1 /*========================================================================
2  Copyright (c) INRIA - ASCLEPIOS Project (http://www-sop.inria.fr/asclepios).
3  All rights reserved.
4 
5  Redistribution and use in source and binary forms, with or without
6  modification, are permitted provided that the following conditions are met:
7 
8  * Redistributions of source code must retain the above copyright notice,
9  this list of conditions and the following disclaimer.
10 
11  * Redistributions in binary form must reproduce the above copyright notice,
12  this list of conditions and the following disclaimer in the documentation
13  and/or other materials provided with the distribution.
14 
15  * Neither the name of INRIA or ASCLEPIOS, nor the names of any contributors
16  may be used to endorse or promote products derived from this software
17  without specific prior written permission.
18 
19  * Modified source versions must be plainly marked as such, and must not be
20  misrepresented as being the original software.
21 
22  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS''
23  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
26  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  =========================================================================*/
33 
34 /*=========================================================================
35  Modifications were made by the GoFigure Dev. Team.
36  while at Megason Lab, Systems biology, Harvard Medical school, 2009-11
37 
38  Copyright (c) 2009-11, President and Fellows of Harvard College.
39  All rights reserved.
40 
41  Redistribution and use in source and binary forms, with or without
42  modification, are permitted provided that the following conditions are met:
43 
44  Redistributions of source code must retain the above copyright notice,
45  this list of conditions and the following disclaimer.
46  Redistributions in binary form must reproduce the above copyright notice,
47  this list of conditions and the following disclaimer in the documentation
48  and/or other materials provided with the distribution.
49  Neither the name of the President and Fellows of Harvard College
50  nor the names of its contributors may be used to endorse or promote
51  products derived from this software without specific prior written
52  permission.
53 
54  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
55  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
56  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
57  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
58  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
59  OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
60  OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
61  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
62  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
63  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
64  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
65 
66  =========================================================================*/
67 
69 
70 #include "vtkSmartPointer.h"
71 #include "vtkCamera.h"
72 #include "vtkCommand.h"
73 #include "vtkImageActor.h"
74 #include "vtkImageData.h"
75 #include "vtkImageMapToWindowLevelColors.h"
76 #include "vtkInteractorStyleImage.h"
77 #include "vtkObjectFactory.h"
78 #include "vtkRenderWindow.h"
79 #include "vtkRenderWindowInteractor.h"
80 #include "vtkRenderer.h"
81 #include "vtkRendererCollection.h"
82 #include "vtkMatrix4x4.h"
83 #include "vtkScalarBarActor.h"
85 #include "vtkCornerAnnotation.h"
86 #include "vtkTextProperty.h"
87 #include "vtkLookupTable.h"
88 #include "vtkMath.h"
89 #include "vtkPlane.h"
90 #include "vtkCutter.h"
91 // #include "vtkQuadricLODActor.h"
92 #include "vtkActor.h"
93 #include "vtkPolyDataMapper.h"
94 #include "vtkDataSetCollection.h"
95 #include "vtkPoints.h"
96 #include "vtkIdList.h"
97 #include "vtkOutlineSource.h"
98 #include "vtkMatrixToLinearTransform.h"
99 #include "vtkPointData.h"
100 #include "vtkUnsignedCharArray.h"
101 #include "vtkIntArray.h"
102 #include "vtkImageAccumulate.h"
103 #include "vtkProperty.h"
104 
105 #include "vtkViewImage2DCommand.h"
108 
109 #include "vtkCellPicker.h"
110 
111 #include <vector>
112 #include <string>
113 #include <sstream>
114 
115 vtkCxxRevisionMacro(vtkViewImage2DCollection, "$Revision: 490 $");
117 
118 //----------------------------------------------------------------------------
120 {
122  this->Command->SetCollection(this);
123 }
124 
125 //----------------------------------------------------------------------------
127 {
128  this->Command->Delete();
129 
130 
131  int n = this->GetNumberOfItems();
132 
133  for ( int i = 0; i < n*n; i++ )
134  {
135  PlanesActors[i]->Delete();
136  }
137 }
138 
139 //----------------------------------------------------------------------------
140 void
142 {
143  this->InitTraversal();
144  vtkViewImage2D *a = this->GetNextItem();
145  while ( a )
146  {
147  vtkInteractorStyle *style = a->GetInteractorStyle();
148 
149  style->RemoveObservers(vtkViewImage2DCommand::SyncViewsEvent);
150  style->RemoveObservers(vtkViewImage2DCommand::ResetViewerEvent);
151  style->RemoveObservers(vtkViewImage2DCommand::RequestedPositionEvent);
152 
153  style->AddObserver(vtkViewImage2DCommand::SyncViewsEvent, this->Command);
154  style->AddObserver(vtkViewImage2DCommand::ZoomEvent, this->Command);
155  style->AddObserver(vtkViewImage2DCommand::PanEvent, this->Command);
156  style->AddObserver(vtkViewImage2DCommand::RequestedPositionEvent, this->Command);
157  style->AddObserver(vtkViewImage2DCommand::ResetViewerEvent, this->Command);
158  style->AddObserver(vtkViewImage2DCommand::ContourPickingEvent, this->Command);
159  style->AddObserver(vtkViewImage2DCommand::MeshPickingEvent, this->Command);
160 
161  style->AddObserver(vtkCommand::StartWindowLevelEvent, this->Command);
162  style->AddObserver(vtkCommand::ResetWindowLevelEvent, this->Command);
163  style->AddObserver(vtkCommand::WindowLevelEvent, this->Command);
164 
165  a = this->GetNextItem();
166  }
167 }
168 
169 //----------------------------------------------------------------------------
170 // Add an object to the list. Does not prevent duplicate entries.
172 {
173  this->Superclass::AddItem (a);
174 }
175 
176 //----------------------------------------------------------------------------
177 // Remove an object from the list. Removes the first object found, not
178 // all occurrences. If no object found, list is unaffected. See warning
179 // in description of RemoveItem(int).
181 {
182  this->Superclass::RemoveItem (a);
183 }
184 
185 //----------------------------------------------------------------------------
186 // Remove all objects from the list.
188 {
189  this->Superclass::RemoveAllItems();
190 }
191 
192 //----------------------------------------------------------------------------
193 // Replace the i'th item in the collection with a
195 {
196  this->Superclass::ReplaceItem(i, a);
197 }
198 
199 //----------------------------------------------------------------------------
200 // Remove the i'th item in the list.
201 // Be careful if using this function during traversal of the list using
202 // GetNextItemAsObject (or GetNextItem in derived class). The list WILL
203 // be shortened if a valid index is given! If this->Current is equal to the
204 // element being removed, have it point to then next element in the list.
206 {
207  this->Superclass::RemoveItem (i);
208 }
209 
210 //----------------------------------------------------------------------------
212 {
213  vtkSmartPointer< vtkProperty > plane_property =
214  vtkSmartPointer< vtkProperty >::New();
215  plane_property->SetRepresentationToWireframe();
216 
217  int n = this->GetNumberOfItems();
218 
219  for ( int i = 0; i < n; i++ )
220  {
221  for ( int j = 0; j < n; j++ )
222  {
223  vtkActor *temp = this->GetItem(j)->AddDataSet(
224  this->GetItem(i)->GetSlicePlane(), plane_property, ( i != j ), true);
225  //store all slice actors
226  this->PlanesActors.push_back(dynamic_cast<vtkProp3D*>(temp));
227  }
228  }
229 
230  for ( int i = 0; i < n; i++ )
231  {
232  //store image actors
233  this->PlanesActors.push_back(
234  dynamic_cast<vtkProp3D*>(this->GetItem(i)->GetImageActor()));
235  }
236 }
237 
238 //----------------------------------------------------------------------------
240 {
241  this->InitTraversal();
242  vtkViewImage2D *item = this->GetNextItem();
243  while ( item )
244  {
245  item->SetBackground(rgb);
246  item = this->GetNextItem();
247  }
248  if ( this->ExtraRenderWindow )
249  {
250  vtkRenderer *ren =
251  this->ExtraRenderWindow->GetRenderers()->GetFirstRenderer();
252  ren->SetBackground(rgb);
253  }
254 }
255 
256 //----------------------------------------------------------------------------
258 {
259  this->InitTraversal();
260  vtkViewImage2D *item = this->GetNextItem();
261 
262  while ( item )
263  {
264  item->Render();
265  item = this->GetNextItem();
266  }
267  if ( this->ExtraRenderWindow )
268  {
269  this->ExtraRenderWindow->Render();
270  }
271 }
272 
273 //----------------------------------------------------------------------------
275 {
276  this->InitTraversal();
277  vtkViewImage2D *item = this->GetNextItem();
278 
279  while ( item )
280  {
281  if ( item != iV )
282  {
283  item->Render();
284  }
285  item = this->GetNextItem();
286  }
287  if ( this->ExtraRenderWindow )
288  {
289  this->ExtraRenderWindow->Render();
290  }
291 }
292 
293 //----------------------------------------------------------------------------
295 {
296  this->InitTraversal();
297  vtkViewImage2D *item = this->GetNextItem();
298  while ( item )
299  {
300  item->Reset();
301  item = this->GetNextItem();
302  }
303 }
304 
305 //----------------------------------------------------------------------------
307 {
308  this->InitTraversal();
309  vtkViewImage2D *item = this->GetNextItem();
310  while ( item )
311  {
312  item->ResetWindowLevel();
313  item = this->GetNextItem();
314  }
315 }
316 
317 //----------------------------------------------------------------------------
319 {
320  this->InitTraversal();
321  vtkViewImage2D *item = this->GetNextItem();
322  while ( item )
323  {
324  item->UpdateWindowLevel();
325  item = this->GetNextItem();
326  }
327 }
328 
329 //----------------------------------------------------------------------------
331 {
332  this->InitTraversal();
333  vtkViewImage2D *item = this->GetNextItem();
334  while ( item )
335  {
336  item = this->GetNextItem();
337  }
338 }
339 
340 //----------------------------------------------------------------------------
341 void vtkViewImage2DCollection::SyncSetZoomAndParallelScale(double Zoom, double ParallelScale)
342 {
343  this->InitTraversal();
344  vtkViewImage2D *item = this->GetNextItem();
345  double t = ParallelScale / Zoom;
346  while ( item )
347  {
348  item->SetZoom(Zoom);
349  item->GetRenderer()->GetActiveCamera()->SetParallelScale(t);
350 
351  if ( item->GetInteractorStyle()->GetInteractor()->GetLightFollowCamera() )
352  {
353  item->GetRenderer()->UpdateLightsGeometryToFollowCamera();
354  }
355  item->Render();
356  item = this->GetNextItem();
357  }
358 }
359 
360 //----------------------------------------------------------------------------
365 void
367 {
368  // vtkstd::vector<vtkQuadricLODActor*>::iterator
369  std::vector< vtkProp3D * >::iterator PlanesActorsIterator =
370  PlanesActors.begin();
371 
372  while ( PlanesActorsIterator != PlanesActors.end() )
373  {
374  ( *PlanesActorsIterator )->SetVisibility(iVisibility);
375  ++PlanesActorsIterator;
376  }
377 }
378 
379 //----------------------------------------------------------------------------
380 
381 //----------------------------------------------------------------------------
383 {
384  this->InitTraversal();
385  vtkViewImage2D *item = this->GetNextItem();
386  while ( item )
387  {
388  item->ResetCamera ();
389  item = this->GetNextItem();
390  }
391 }
392 
393 //----------------------------------------------------------------------------
394 
395 //----------------------------------------------------------------------------
397 {
398  this->InitTraversal();
399  vtkViewImage2D *item = this->GetNextItem();
400  while ( item )
401  {
402  item->GetInteractor()->Start();
403  item = this->GetNextItem();
404  }
405 }
406 
407 //----------------------------------------------------------------------------
408 
409 //----------------------------------------------------------------------------
411 {
412  this->LinkSliceMove = v;
413  this->InitTraversal();
414  vtkViewImage2D *item = this->GetNextItem();
415  while ( item )
416  {
417  vtkInteractorStyle *style = item->GetInteractorStyle();
418  if ( v )
419  {
420  if ( !style->HasObserver (vtkViewImage2DCommand::SyncViewsEvent, this->Command) )
421  {
422  style->AddObserver (vtkViewImage2DCommand::SyncViewsEvent, this->Command);
423  }
424  }
425  else
426  {
427  style->RemoveObservers (vtkViewImage2DCommand::SyncViewsEvent, this->Command);
428  }
429 
430  item = this->GetNextItem();
431  }
432 }
433 
434 //----------------------------------------------------------------------------
435 
436 //----------------------------------------------------------------------------
438 {
439  this->LinkColorWindowLevel = v;
440  this->InitTraversal();
441  vtkViewImage2D *item = this->GetNextItem();
442  while ( item )
443  {
444  vtkInteractorStyle *style = item->GetInteractorStyle();
445  if ( v )
446  {
447  if ( !style->HasObserver (vtkCommand::WindowLevelEvent, this->Command) )
448  {
449  style->AddObserver (vtkCommand::WindowLevelEvent, this->Command);
450  }
451  }
452  else
453  {
454  style->RemoveObservers (vtkCommand::WindowLevelEvent, this->Command);
455  }
456 
457  item = this->GetNextItem();
458  }
459 }
460 
461 //----------------------------------------------------------------------------
462 
463 //----------------------------------------------------------------------------
465 {
466  this->LinkResetWindowLevel = v;
467  this->InitTraversal();
468  vtkViewImage2D *item = this->GetNextItem();
469  while ( item )
470  {
471  vtkInteractorStyle *style = item->GetInteractorStyle();
472  if ( v )
473  {
474  if ( !style->HasObserver(vtkCommand::ResetWindowLevelEvent, this->Command) )
475  {
476  style->AddObserver (vtkCommand::ResetWindowLevelEvent, this->Command);
477  }
478  }
479  else
480  {
481  style->RemoveObservers (vtkCommand::ResetWindowLevelEvent, this->Command);
482  }
483 
484  item = this->GetNextItem();
485  }
486 }
487 
488 //----------------------------------------------------------------------------
489 
490 //----------------------------------------------------------------------------
492 {
493  this->LinkResetViewer = v;
494  this->InitTraversal();
495  vtkViewImage2D *item = this->GetNextItem();
496  while ( item )
497  {
498  vtkInteractorStyle *style = item->GetInteractorStyle();
499  if ( v )
500  {
501  if ( !style->HasObserver (vtkViewImage2DCommand::ResetViewerEvent, this->Command) )
502  {
503  style->AddObserver (vtkViewImage2DCommand::ResetViewerEvent, this->Command);
504  }
505  }
506  else
507  {
508  style->RemoveObservers (vtkViewImage2DCommand::ResetViewerEvent, this->Command);
509  }
510  }
511 
512  item = this->GetNextItem();
513 }
514 
515 //----------------------------------------------------------------------------
516 
517 //----------------------------------------------------------------------------
519 {
520  this->LinkRequestedPosition = v;
521  this->InitTraversal();
522  vtkViewImage2D *item = this->GetNextItem();
523  while ( item )
524  {
525  vtkInteractorStyle *style = item->GetInteractorStyle();
526  if ( v )
527  {
528  if ( !style->HasObserver (vtkViewImage2DCommand::RequestedPositionEvent, this->Command) )
529  {
530  style->AddObserver (vtkViewImage2DCommand::RequestedPositionEvent, this->Command);
531  }
532  }
533  else
534  {
535  style->RemoveObservers (vtkViewImage2DCommand::RequestedPositionEvent, this->Command);
536  }
537 
538  item = this->GetNextItem();
539  }
540 }
541 
542 //----------------------------------------------------------------------------
543 
544 //----------------------------------------------------------------------------
546 {
547  this->LinkCamera = v;
548  this->InitTraversal();
549  vtkViewImage2D *item = this->GetNextItem();
550  while ( item )
551  {
552  vtkInteractorStyle *style = item->GetInteractorStyle();
553 
554  if ( v )
555  {
556  if ( !style->HasObserver(vtkViewImage2DCommand::CameraMoveEvent, this->Command) )
557  {
558  item->GetInteractorStyle()->AddObserver(vtkViewImage2DCommand::CameraMoveEvent, this->Command);
559  }
560  }
561  else
562  {
563  style->RemoveObservers(vtkViewImage2DCommand::CameraMoveEvent, this->Command);
564  }
565 
566  item = this->GetNextItem();
567  }
568 }
569 
570 //----------------------------------------------------------------------------
571 
572 //----------------------------------------------------------------------------
574 {
575  this->LinkPosition = v;
576  this->InitTraversal();
577  vtkViewImage2D *item = this->GetNextItem();
578 
579  while ( item )
580  {
581  vtkInteractorStyle *style = item->GetInteractorStyle();
582 
583  if ( v )
584  {
585  if ( !style->HasObserver(vtkViewImage2DCommand::DefaultMoveEvent, this->Command) )
586  {
587  style->AddObserver(vtkViewImage2DCommand::DefaultMoveEvent, this->Command);
588  }
589  else
590  {
591  style->RemoveObservers(vtkViewImage2DCommand::DefaultMoveEvent, this->Command);
592  }
593  }
594 
595  item = this->GetNextItem();
596  }
597 }
598 
599 //----------------------------------------------------------------------------
601 {
602  std::cout << "in show axe-nothing here" << std::endl;
603 
604  // unused argument v
605  (void)v;
606 
607  /*this->ShowAxes = v;
608 
609  for (int i=0; i<this->GetNumberOfItems(); i++)
610  {
611  vtkViewImage2D* Vi = vtkViewImage2D::SafeDownCast (this->GetItem (i));
612  for (int j=0; j<this->GetNumberOfItems(); j++)
613  {
614  vtkViewImage2D* Vj = vtkViewImage2D::SafeDownCast (this->GetItem (j));
615  if (Vi && Vj)
616  if (i != j)
617  {
618  vtkActor* a = Vi->GetDataSetActor (Vj->GetSlicePlane());
619  a->SetVisibility (this->ShowAxes);
620  }
621  }
622  }*/
623 }
624 
625 //----------------------------------------------------------------------------
627 {
628  this->InitTraversal();
629  vtkViewImage2D *item = this->GetNextItem();
630  while ( item )
631  {
633  item = this->GetNextItem();
634  }
635  /*if (this->ExtraRenderWindow)
636  {
637  this->ExtraRenderWindow->GetInteractor()->GetInteractorStyle()->EnableDefaultMode();
638  }*/
639 }
640 
641 //----------------------------------------------------------------------------
643 {
644  this->InitTraversal();
645  vtkViewImage2D *item = this->GetNextItem();
646  while ( item )
647  {
648  item->SetZoomInteractionStyle();
649  item = this->GetNextItem();
650  }
651 }
652 
653 //----------------------------------------------------------------------------
655 {
656  this->InitTraversal();
657  vtkViewImage2D *item = this->GetNextItem();
658  while ( item )
659  {
660  item->SetPanInteractionStyle();
661  item = this->GetNextItem();
662  }
663 }
664 
665 //----------------------------------------------------------------------------
667 {
668  this->InitTraversal();
669  vtkViewImage2D *item = this->GetNextItem();
670  while ( item )
671  {
672  item->SetPickInteractionStyle();
673  item = this->GetNextItem();
674  }
675 }
676 
677 //----------------------------------------------------------------------------
679 {
680  this->Command->SynchronizeViews(iSynchronize);
681  if( iSynchronize )
682  {
683  this->SyncResetCamera();
684  this->SyncRender();
685  }
686 }
687 //----------------------------------------------------------------------------
688 std::vector< vtkProp3D * >
691 {
692  return this->PlanesActors;
693 }
694 //----------------------------------------------------------------------------
virtual void SetLinkRequestedPosition(unsigned int v)
Description: link requested position (double click) flag.
virtual void SyncResetWindowLevel(void)
Description: Synchronize reset window level between views.
std::vector< vtkProp3D * > PlanesActors
virtual void SetLinkPosition(unsigned int v)
Description: link position flag.
virtual void ResetCamera(void)
Reset the camera in a nice way for the 2D view.
virtual void SetShowAxes(unsigned int v)
Description: show axes (view intersections) flag.
virtual void SyncStart(void)
Description: Synchronize interactor start between views.
virtual void SetLinkColorWindowLevel(unsigned int v)
Description: link color window flag.
virtual void SetLinkCamera(unsigned int v)
Description: link camera flag.
void SetDefaultInteractionStyle(void)
Set interaction style to Default mode: Left button: Window level Right button: Zoom Middle button: Pa...
void SetPanInteractionStyle(void)
Set interaction style to Pan mode: All buttons: Pan.
virtual void SyncReset(void)
Description: Synchronize reset between views.
virtual void SyncResetCamera(void)
Description: Synchronize reset camera between views.
virtual void ResetWindowLevel(void)
Reset the window level.
virtual void SyncRender()
Description: Synchronize render between views.
virtual vtkActor * AddDataSet(vtkPolyData *polydata, vtkProperty *property=NULL, const bool &intersection=true, const bool &iDataVisibility=false)
Add a dataset to the view (has to be subclass of vtkPointSet). The dataset will be cut through the im...
void EnableContourPickingMode()
Change Interaction mode of the collection to ContourPickingMode()
void SynchronizeViews(bool iSynchronize)
Synchronize the 2d views.
void SetZoomInteractionStyle(void)
Set interaction style to Zoom mode: All buttons: Zoom.
void SetSplinePlaneActorsVisibility(bool iVisibility)
Set the visibility of the plane actor.
Manage a collection of 2D views.
virtual void SetBackground(double rgb[3])
Set the background color. Format is RGB, 0 <= R,G,B <=1 Example: SetBackground(0.9,0.9,0.9) for grey-white.
void SyncSetZoomAndParallelScale(double Zoom, double ParallelScale)
vtkStandardNewMacro(vtkViewImage2DCollection)
std::vector< vtkProp3D * > GetPlanesActors()
Get the plane actors.
void EnableDefaultInteractionMode()
Change Interaction mode of the collection to DefaultMode()
vtkCxxRevisionMacro(vtkViewImage2DCollection,"$Revision: 490 $")
virtual void Reset(void)
Reset position - zoom - window/level to default.
void SetCollection(vtkViewImage2DCollection *p)
Set the current collection.
virtual void SetLinkSliceMove(unsigned int v)
Description: link slice flag.
virtual void SetLinkResetWindowLevel(unsigned int v)
Description: link reset color window flag.
virtual void Render(void)
void EnableZoomInteractionMode()
Change Interaction mode of the collection to ZoomMode()
void SetPickInteractionStyle(void)
Set interaction style to Zoom mode: The actor the mouse is highlighted in addition to the Default Mod...
virtual vtkRenderWindowInteractor * GetInteractor()
void SynchronizeViews(bool iSynchronizeViews)
Synchronize the 2d views.
void EnablePanInteractionMode()
Change Interaction mode of the collection to ZoomMode()
void ReplaceItem(int i, vtkViewImage2D *)
vtkViewImage2D * GetItem(int i)
vtkViewImage2DCollectionCommand * Command
static vtkViewImage2DCollectionCommand * New()
Convenient method to access the constructor.
virtual void SetLinkResetViewer(unsigned int v)
Description: link reset viewer flag.
void UpdateWindowLevel()
Basic class to handle 2D/3D items such as images and polydatas visualization in 2D.