]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx
Bug #1679
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtkMPR2DView.cxx
1 #include "wxVtkMPR2DView.h"
2
3 #include "vtkInteractorStyleBaseView.h"
4
5 #include "vtkCellArray.h"
6 #ifdef WIN32
7 #include <mathdefs.h>
8 using namespace gtm;
9 #endif
10
11 wxVtkMPR2DView::wxVtkMPR2DView( wxWindow *parent, int direction)
12  :wxVtk2DBaseView(parent)
13 {
14         _backX                  = -99999;
15         _backY                  = -99999;
16         _backZ                  = -99999;
17         _direction              = direction;
18         _ptsA                   = NULL;
19         _lineAActor             = NULL;
20         _lineAMapper    = NULL;
21         _pdA                    = NULL;
22         _ptsB                   = NULL;
23         _lineBActor             = NULL;
24         _lineBMapper    = NULL;
25         _pdB                    = NULL;
26         _interactorstylemprview = NULL;
27 }
28
29 //-------------------------------------------------------------------
30 wxVtkMPR2DView::~wxVtkMPR2DView()
31 {
32         if (_ptsA!=NULL)            { _ptsA                 -> Delete(); }
33         if (_lineAActor!=NULL)  { _lineAActor   -> Delete(); }
34         if (_lineAMapper!=NULL) { _lineAMapper  -> Delete(); }
35         if (_pdA!=NULL)             { _pdA                  -> Delete(); }
36         if (_ptsB!=NULL)            { _ptsB                 -> Delete(); }
37         if (_lineBActor!=NULL)  { _lineBActor   -> Delete(); }
38         if (_lineBMapper!=NULL) { _lineBMapper  -> Delete(); }
39         if (_pdB!=NULL)             { _pdB                  -> Delete(); }
40 }
41 //-------------------------------------------------------------------
42 vtkMPRBaseData *wxVtkMPR2DView::GetVtkmprbasedata()
43 {
44         return (vtkMPRBaseData*)GetVtkBaseData();
45 }
46 //-------------------------------------------------------------------
47 void wxVtkMPR2DView::Configure()
48 {
49         printf("EED wxVtkMPR2DView::Configure");
50         
51         wxVtk2DBaseView::Configure();
52
53
54         int x1,x2,y1,y2,z1,z2;
55         GetVtkmprbasedata()     -> GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2);
56
57         double spc[3];
58         vtkImageData* img =  GetVtkmprbasedata()->GetImageData();
59         if(_interactorstylemprview==NULL)
60         {
61                 _interactorstylemprview = new vtkInteractorStyleMPRView();
62                 ((vtkInteractorStyleBaseView*)GetInteractorStyleBaseView())->AddInteractorStyleMaracas( _interactorstylemprview );
63         }
64
65         if(img!=NULL){
66                 double* origin = img->GetOrigin();
67                 img->GetExtent(x1,x2,y1,y2,z1,z2);
68                 img->GetSpacing(spc);
69                 x1 += origin[0];
70                 x2 += origin[0];
71                 y1 += origin[1];
72                 y2 += origin[1];
73                 z1 += origin[2];
74                 z2 += origin[2];
75                 x1 = (int)(x1*spc[0]);
76                 y1 = (int)(y1*spc[1]);
77                 z1 = (int)(z1*spc[2]);
78
79                 x2 = (int)(x2*spc[0]);
80                 y2 = (int)(y2*spc[1]);
81                 z2 = (int)(z2*spc[2]);
82
83                 _visibleAxis = true;
84
85
86
87         }
88
89         // Axe A
90         if(_lineAActor==NULL){
91                 _lineAActor = vtkActor::New();
92                 _lineAActor->GetProperty()->SetDiffuseColor(1,0,0);
93                 _lineAActor->GetProperty()->SetLineWidth(0.5);
94
95                 _ptsA = vtkPoints::New();
96                 _ptsA->SetNumberOfPoints(2);
97                 _ptsA->SetPoint(0, -1000        , -1000 , -1000 );
98                 _ptsA->SetPoint(1,  1000        ,  1000 ,  1000 );
99
100                 _pdA = vtkPolyData::New();
101
102                 _lineAMapper = vtkPolyDataMapper::New();
103
104                 _lineAMapper->SetInput(_pdA);
105                 _lineAMapper->ImmediateModeRenderingOn();
106                 _lineAActor->SetMapper(_lineAMapper);
107         }
108
109         vtkCellArray *linesA = vtkCellArray::New();
110         linesA->InsertNextCell(2);
111         linesA->InsertCellPoint(0);
112         linesA->InsertCellPoint(1);
113         _pdA->SetPoints( _ptsA );
114         _pdA->SetLines( linesA );
115         linesA->Delete();  //do not delete lines ??
116 //              _lineAActor->GetProperty()->BackfaceCullingOn();
117
118
119 // Axe B
120         if(_lineBActor==NULL){
121                 _lineBActor                                             =       vtkActor::New();
122                 _lineBActor->GetProperty()->SetDiffuseColor(1,0,0);
123                 _lineBActor->GetProperty()->SetLineWidth(0.5);
124                 _lineBMapper                                    =       vtkPolyDataMapper::New();
125                 _lineBActor->SetMapper(_lineBMapper);
126
127                 _ptsB = vtkPoints::New();
128                 _ptsB->SetNumberOfPoints(2);
129                 _ptsB->SetPoint(0, -1000        , -1000 , -1000 );
130                 _ptsB->SetPoint(1,  1000        ,  1000 ,  1000 );
131
132 //              _lineBActor->GetProperty()->BackfaceCullingOn();
133         }
134
135         vtkCellArray *linesB;
136         linesB = vtkCellArray::New();
137         linesB->InsertNextCell(2);
138         linesB->InsertCellPoint(0);
139         linesB->InsertCellPoint(1);
140         _pdB = vtkPolyData::New();
141         _pdB->SetPoints( _ptsB );
142         _pdB->SetLines( linesB );
143         linesB->Delete();  //do not delete lines ??
144
145
146         _lineBMapper->SetInput(_pdB);
147         _lineBMapper->ImmediateModeRenderingOn();
148
149
150         if(_imageViewer2XYZ){
151                 _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor );
152                 _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineBActor );
153                 vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera();
154
155         //EED 17Avril2009
156     //EED 21 mars 2012  FLIP problem  ..PLOP..
157
158                 if (_direction==0) {  // YZ
159                         camera->SetViewUp               (   0   ,    0          ,     1         );
160                         camera->SetPosition             ( 10000,(y1+y2)/2       , (z1+z2)/2     );
161                         camera->SetFocalPoint   (   0   , (y1+y2)/2     , (z1+z2)/2     );
162                         camera->SetParallelScale( (z2-z1)/3.0 );
163                 }
164
165                 if (_direction==1) { // XZ
166                         camera->SetViewUp               (       0               ,       0       ,       1               );
167                         camera->SetPosition             ((x1+x2)/2      , -10000        , (z1+z2)/2     );
168                         camera->SetFocalPoint   ((x1+x2)/2      ,   0   , (z1+z2)/2     );
169                         camera->SetParallelScale( (x2-x1)/3.0 );
170                 }
171
172                 if (_direction==2) {  // XY
173                         camera->SetViewUp               (       0               ,       -1              ,       0       );
174                         camera->SetPosition             ((x1+x2)/2      , (y1+y2)/2     , -10000);
175                         camera->SetFocalPoint   ((x1+x2)/2      , (y1+y2)/2     ,       0       );
176                         camera->SetParallelScale( (x2-x1)/3.0 );
177                 }
178
179 /*
180                 if (_direction==0) {    // YZ
181                         camera->SetViewUp               (   0   ,     1         ,     0         );
182                         camera->SetPosition             (  10000,(y1+y2)/2      , (z1+z2)/2     );
183                         camera->SetFocalPoint   (   0   , (y1+y2)/2     , (z1+z2)/2     );
184                         camera->SetParallelScale( (z2-z1)/3.0 );
185                 }
186
187                 if (_direction==1) {    // XZ
188                         camera->SetViewUp               (       0               ,       0       ,       -1              );
189                         camera->SetPosition             ((x1+x2)/2      , 10000 , (z1+z2)/2     );
190                         camera->SetFocalPoint   ((x1+x2)/2      ,   0   , (z1+z2)/2     );
191                         camera->SetParallelScale( (x2-x1)/3.0 );
192                 }
193
194                 if (_direction==2) {    // XY
195                         camera->SetViewUp               (       0               ,       1               ,       0       );
196                         camera->SetPosition             ((x1+x2)/2      , (y1+y2)/2     ,  10000);
197                         camera->SetFocalPoint   ((x1+x2)/2      , (y1+y2)/2     ,       0       );
198                         camera->SetParallelScale( (x2-x1)/3.0 );
199                 }
200 */
201
202         //      _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow (160);
203         //      _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel (800);
204         }
205
206 }
207
208 void wxVtkMPR2DView::SetVisibleAxis(bool ok)
209 {
210         if (ok!=_visibleAxis)
211         {
212                 _visibleAxis=ok;
213                 if (_visibleAxis==true)
214                 {
215                         _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor );
216                         _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineBActor );
217                 }
218                 if (_visibleAxis==false)
219                 {
220                         _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->RemoveActor( _lineAActor );
221                         _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->RemoveActor( _lineBActor );
222                 }
223
224         }
225 }
226
227 //-------------------------------------------------------------------
228 void wxVtkMPR2DView::Refresh()
229 {
230
231         printf("wxVtkMPR2DView::Refresh start\n");
232
233         //wxVtk2DBaseView::Refresh();
234
235
236         //vtkImageViewer2 *IV2=_imageViewer2XYZ->GetVtkImageViewer2(); // JPRx
237         //vtkCamera *camera = IV2->GetRenderer()->GetActiveCamera(); // JPRx
238
239
240         int x1 = 0,x2 = 0,y1 = 0,y2 = 0,z1 = 0,z2 = 0;
241         int x = 0, y = 0, z = 0;
242         int xx = 0, yy = 0, zz = 0;
243         double *spc     = 0;
244         double *origin  = 0;
245         
246         double xx1,yy1,zz1,xx2,yy2,zz2;
247         
248
249         //GetVtkmprbasedata()->GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2);
250
251
252         vtkImageData* img = GetVtkmprbasedata()->GetImageData();
253         if(img!=NULL){
254                 origin = img->GetOrigin();
255                 img->GetExtent(x1,x2,y1,y2,z1,z2);
256                 spc = img->GetSpacing();
257                 x1 += origin[0];
258                 x2 += origin[0];
259                 y1 += origin[1];
260                 y2 += origin[1];
261                 z1 += origin[2];
262                 z2 += origin[2];
263                 
264                 xx1 =           x1*spc[0];
265                 yy1 =           y1*spc[1];
266                 zz1 =           z1*spc[2];
267                 
268                 xx2 =           x2*spc[0];
269                 yy2 =           y2*spc[1];
270                 zz2 =           z2*spc[2];
271                 
272                 x1 = (int)(x1*spc[0]);
273                 y1 = (int)(y1*spc[1]);
274                 z1 = (int)(z1*spc[2]);
275                 
276                 x2      = (int)(x2*spc[0]);
277                 y2      = (int)(y2*spc[1]);
278                 z2      = (int)(z2*spc[2]);
279
280                 xx = (int)(GetVtkmprbasedata()->GetX());
281                 yy = (int)(GetVtkmprbasedata()->GetY());
282                 zz = (int)(GetVtkmprbasedata()->GetZ());
283
284                 x =  round(xx*spc[0]);
285                 y =  round(yy*spc[1]);
286                 z =  round(zz*spc[2]);
287                 
288                 if ((xx!=_backX) || (yy!=_backY) || (zz!=_backZ)) {
289
290                         if (_direction==0) {    // YZ
291                                 if(_imageViewer2XYZ)
292                                 {
293                                         _imageViewer2XYZ->SetXSlice( (int)(GetVtkmprbasedata()->GetX()) );
294                                 }
295 //EED 21 mars 2012  FLIP probleme  ..PLOP..
296                                 //_ptsA->SetPoint(0, x2, y1  , z );
297                                 //_ptsA->SetPoint(1, x2, y2  , z );
298                                 //_ptsB->SetPoint(0, x2, y   , z1);
299                                 //_ptsB->SetPoint(1, x2, y   , z2);
300                                 _ptsA->SetPoint(0, xx2, yy1  , z  );
301                                 _ptsA->SetPoint(1, xx2, yy2  , z  );
302                                 _ptsB->SetPoint(0, xx2, y    , zz1);
303                                 _ptsB->SetPoint(1, xx2, y    , zz2);
304                         }
305                         if (_direction==1) {    // XZ
306                                 if(_imageViewer2XYZ)
307                                 {
308                                         _imageViewer2XYZ->SetYSlice( (int)(GetVtkmprbasedata()->GetY()) );
309                                 }
310 //EED 21 mars 2012  FLIP probleme  ..PLOP..
311                             //_ptsA->SetPoint(0, x1 , y2 , z );
312                                 //_ptsA->SetPoint(1, x2 , y2 , z );
313                                 //_ptsB->SetPoint(0, x  , y2 , z1);
314                                 //_ptsB->SetPoint(1, x  , y2 , z2);
315                             _ptsA->SetPoint(0, xx1 , y1 , z  );
316                                 _ptsA->SetPoint(1, xx2 , y1 , z  );
317                                 _ptsB->SetPoint(0, x   , y1 , zz1);
318                                 _ptsB->SetPoint(1, x   , y1 , zz2);
319                         }
320                         if (_direction==2) {    // XY
321                                 if(_imageViewer2XYZ)
322                                 {
323                                         _imageViewer2XYZ->SetZSlice( (int)(GetVtkmprbasedata()->GetZ()) );
324                                 }
325                         //      _ptsA->SetPoint(0, x1 , y , -z2 );
326                         //      _ptsA->SetPoint(1, x2 , y , -z2 );
327                         //      _ptsB->SetPoint(0, x  , y1, -z2 );
328                         //      _ptsB->SetPoint(1, x  , y2, -z2 );
329
330                                 
331 //EED 21 mars 2012  FLIP probleme  ..PLOP..
332                                 //_ptsA->SetPoint(0, x1 , y , z2 );
333                                 //_ptsA->SetPoint(1, x2 , y , z2 );
334                                 //_ptsB->SetPoint(0, x  , y1, z2 );
335                                 //_ptsB->SetPoint(1, x  , y2, z2 );
336                                 
337                                 _ptsA->SetPoint(0, xx1 , y  , z1 );
338                                 _ptsA->SetPoint(1, xx2 , y  , z1 );
339                                 _ptsB->SetPoint(0, x   , yy1, z1 );
340                                 _ptsB->SetPoint(1, x   , yy2, z1 );
341                                 
342                                 
343                         }
344                         _backX=xx;
345                         _backY=yy;
346                         _backZ=zz;
347                 }
348
349 //EED 24oct2010
350 _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->Modified();
351
352                 wxVtkBaseView::Refresh();
353                 
354                 printf("wxVtkMPR2DView::Refresh end\n");
355                 
356         }
357 }
358 //-------------------------------------------------------------------
359 int wxVtkMPR2DView::GetActualSlice()   // virtual
360 {
361         int result;
362         if (_direction==0)
363         {
364                 result = (int)(GetVtkmprbasedata()->GetX());
365         }
366         if (_direction==1)
367         {
368                 result = (int)(GetVtkmprbasedata()->GetY());
369         }
370         if (_direction==2)
371         {
372                 result = (int)(GetVtkmprbasedata()->GetZ());
373         }
374         return result;
375 }
376 //-------------------------------------------------------------------
377 void wxVtkMPR2DView::SetActualSlice(int slice)   // virtual
378 {
379         if (_direction==0)
380         {
381                 GetVtkmprbasedata()->SetX(slice);
382         }
383         if (_direction==1)
384         {
385                 GetVtkmprbasedata()->SetY(slice);
386         }
387         if (_direction==2)
388         {
389                 GetVtkmprbasedata()->SetZ(slice);
390         }
391 }
392 //-------------------------------------------------------------------
393 bool wxVtkMPR2DView::IfMouseTouchX(double x, double y, double z)
394 {
395         double delta=5;
396         bool result=false;
397         if (_direction==0)
398         {
399         }
400         if (_direction==1)
401         {
402                 if (( x<GetVtkmprbasedata()->GetX()+delta ) && ( x>GetVtkmprbasedata()->GetX()-delta ))
403                 {
404                         result = true;
405                 }
406         }
407         if (_direction==2)
408         {
409                 if (( x<GetVtkmprbasedata()->GetX()+delta ) && ( x>GetVtkmprbasedata()->GetX()-delta ))
410                 {
411                         result = true;
412                 }
413         }
414         return result;
415 }
416 //-------------------------------------------------------------------
417 bool wxVtkMPR2DView::IfMouseTouchY(double x, double y, double z)
418 {
419         double delta=5;
420         bool result=false;
421         if (_direction==0)
422         {
423                 if (( y<GetVtkmprbasedata()->GetY()+delta ) && ( y>GetVtkmprbasedata()->GetY()-delta ))
424                 {
425                         result = true;
426                 }
427         }
428         if (_direction==1)
429         {
430         }
431         if (_direction==2)
432         {
433                 if (( y<GetVtkmprbasedata()->GetY()+delta ) && ( y>GetVtkmprbasedata()->GetY()-delta ))
434                 {
435                         result = true;
436                 }
437         }
438         return result;
439 }
440 //-------------------------------------------------------------------
441 bool wxVtkMPR2DView::IfMouseTouchZ(double x, double y, double z)
442 {
443         double delta=5;
444         bool result=false;
445         if (_direction==0)
446         {
447                 if (( z<GetVtkmprbasedata()->GetZ()+delta ) && ( z>GetVtkmprbasedata()->GetZ()-delta ))
448                 {
449                         result = true;
450                 }
451         }
452         if (_direction==1)
453         {
454                 if (( z<GetVtkmprbasedata()->GetZ()+delta ) && ( z>GetVtkmprbasedata()->GetZ()-delta ))
455                 {
456                         result = true;
457                 }
458         }
459         if (_direction==2)
460         {
461         }
462         return result;
463 }
464 //-------------------------------------------------------------------
465 void wxVtkMPR2DView::MoveX(double x, double y, double z)
466 {
467         if (_direction==0)
468         {
469         }
470         if (_direction==1)
471         {
472                 GetVtkmprbasedata()->SetX(x);
473         }
474         if (_direction==2)
475         {
476                 GetVtkmprbasedata()->SetX(x);
477         }
478 }
479 //-------------------------------------------------------------------
480 void wxVtkMPR2DView::MoveY(double x, double y, double z)
481 {
482         if (_direction==0)
483         {
484                 GetVtkmprbasedata()->SetY(y);
485         }
486         if (_direction==1)
487         {
488         }
489         if (_direction==2)
490         {
491                 GetVtkmprbasedata()->SetY(y);
492         }
493 }
494 //-------------------------------------------------------------------
495 void wxVtkMPR2DView::MoveZ(double x, double y, double z)
496 {
497         if (_direction==0)
498         {
499                 GetVtkmprbasedata()->SetZ(z);
500         }
501         if (_direction==1)
502         {
503                 GetVtkmprbasedata()->SetZ(z);
504         }
505         if (_direction==2)
506         {
507         }
508 }
509 //-------------------------------------------------------------------
510 void wxVtkMPR2DView::ChangeAxisColor(double x, double y, double z)
511 {
512         double c1r=1,c1g=1,c1b=0;
513         double c2r=1,c2g=0,c2b=0;
514
515         if (_direction==0)
516         {
517                 if (IfMouseTouchY(x,y,z)==true)
518                 {
519                         _lineBActor->GetProperty()->SetDiffuseColor(c1r,c1g,c1b);
520                 } else {
521                         _lineBActor->GetProperty()->SetDiffuseColor(c2r,c2g,c2b);
522                 }
523                 if (IfMouseTouchZ(x,y,z)==true)
524                 {
525                         _lineAActor->GetProperty()->SetDiffuseColor(c1r,c1g,c1b);
526                 } else {
527                         _lineAActor->GetProperty()->SetDiffuseColor(c2r,c2g,c2b);
528                 }
529         }
530
531         if (_direction==1)
532         {
533                 if (IfMouseTouchX(x,y,z)==true)
534                 {
535                         _lineBActor->GetProperty()->SetDiffuseColor(c1r,c1g,c1b);
536                 } else {
537                         _lineBActor->GetProperty()->SetDiffuseColor(c2r,c2g,c2b);
538                 }
539                 if (IfMouseTouchZ(x,y,z)==true)
540                 {
541                         _lineAActor->GetProperty()->SetDiffuseColor(c1r,c1g,c1b);
542                 } else {
543                         _lineAActor->GetProperty()->SetDiffuseColor(c2r,c2g,c2b);
544                 }
545         }
546
547         if (_direction==2)
548         {
549                 if (IfMouseTouchX(x,y,z)==true)
550                 {
551                         _lineBActor->GetProperty()->SetDiffuseColor(c1r,c1g,c1b);
552                 } else {
553                         _lineBActor->GetProperty()->SetDiffuseColor(c2r,c2g,c2b);
554                 }
555                 if (IfMouseTouchY(x,y,z)==true)
556                 {
557                         _lineAActor->GetProperty()->SetDiffuseColor(c1r,c1g,c1b);
558                 } else {
559                         _lineAActor->GetProperty()->SetDiffuseColor(c2r,c2g,c2b);
560                 }
561         }
562         Refresh();
563 }
564
565
566 //EED 5 juin 2009
567 //void wxVtkMPR2DView::TransfromCoordViewWorld(double &X, double &Y, double &Z, int type) // virtual
568 void wxVtkMPR2DView::TransFromCoordScreenToWorld(double &X, double &Y, double &Z, bool keepNormalDirection, int type) //virtual //keepNormalDirection=false, type=2
569 {
570
571         wxVtkBaseView::TransFromCoordScreenToWorld(X,Y,Z,keepNormalDirection,_direction);
572
573         if ((_direction==0) && (keepNormalDirection==true) )
574         {
575                 X = ((vtkMPRBaseData*)GetVtkBaseData())->GetX();
576         }
577
578         if ((_direction==1) && (keepNormalDirection==true) )
579         {
580                 Y = ((vtkMPRBaseData*)GetVtkBaseData())->GetY();
581         }
582
583         if ((_direction==2) && (keepNormalDirection==true) )
584         {
585                 Z = ((vtkMPRBaseData*)GetVtkBaseData())->GetZ();
586         }
587
588 }
589
590 //-------------------------------------------------------------------
591 int wxVtkMPR2DView::GetDirection() // virtual
592 {
593     return _direction;
594 }
595
596
597 //-------------------------------------------------------------------
598 //-------------------------------------------------------------------
599 //-------------------------------------------------------------------
600 //void boxVolumeObserver::Execute(vtkObject *wdg, unsigned long eventId, void* calldata) {  // virtual
601 //      if (eventId==vtkCommand::StartInteractionEvent){
602 //              _renWin->SetDesiredUpdateRate(10);
603 //      }
604 //      if (eventId==vtkCommand::InteractionEvent){
605 //              _renWin->SetDesiredUpdateRate(0.001);
606 //      }
607 //      if (eventId==vtkCommand::EndInteractionEvent){
608 //              vtkPlanes *planes = vtkPlanes::New();
609 //              vtkBoxWidget *boxwidget = reinterpret_cast<vtkBoxWidget*>(wdg);
610 //              boxwidget->GetPlanes(planes);
611 //              _volumeMapper->SetClippingPlanes(planes);
612 //              planes -> Delete();
613 //      }
614 //}
615
616 //-------------------------------------------------------------------
617 //void boxVolumeObserver::SetRenWin( vtkRenderWindow *renWin ){
618 //      _renWin = renWin;
619 //}
620 //-------------------------------------------------------------------
621 //void boxVolumeObserver::SetVolumeMapper(vtkVolumeRayCastMapper *volumeMapper){
622 //      _volumeMapper = volumeMapper;
623 //}