]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/QT/RendererWidget.cxx
yet another refactoring
[cpPlugins.git] / lib / cpExtensions / QT / RendererWidget.cxx
diff --git a/lib/cpExtensions/QT/RendererWidget.cxx b/lib/cpExtensions/QT/RendererWidget.cxx
new file mode 100644 (file)
index 0000000..0189ef6
--- /dev/null
@@ -0,0 +1,990 @@
+#include <cpExtensions/QT/RendererWidget.h>
+#include <vtkAxesActor.h>
+#include <vtkCamera.h>
+#include <vtkImageProperty.h>
+#include <vtkInteractorStyle.h>
+#include <vtkOrientationMarkerWidget.h>
+#include <vtkProperty.h>
+#include <vtkRenderer.h>
+#include <vtkRenderWindow.h>
+#include <cpExtensions/Visualization/LUTImageActor.h>
+#include <cpExtensions/Visualization/WindowLevelImageActor.h>
+
+// -------------------------------------------------------------------------
+cpExtensions::QT::RendererWidget::
+RendererWidget( QWidget* parent, Qt::WindowFlags f )
+  : Superclass( parent, f ),
+    Superclass2( )
+{
+  this->m_Renderer = vtkSmartPointer< vtkRenderer >::New( );
+  this->GetRenderWindow( )->AddRenderer( this->m_Renderer );
+
+  vtkAxesActor* axes = vtkAxesActor::New( );
+  axes->AxisLabelsOff( );
+  this->m_Marker = vtkSmartPointer< vtkOrientationMarkerWidget >::New( );
+  this->m_Marker->SetOutlineColor( 1, 1, 1 );
+  this->m_Marker->SetOrientationMarker( axes );
+  this->m_Marker->SetInteractor( this->GetRenderWindow( )->GetInteractor( ) );
+  this->m_Marker->EnabledOn( );
+  this->m_Marker->InteractiveOff( );
+  axes->Delete( );
+  this->SetQuadrant( 0 );
+}
+
+// -------------------------------------------------------------------------
+cpExtensions::QT::RendererWidget::
+~RendererWidget( )
+{
+}
+
+// -------------------------------------------------------------------------
+int cpExtensions::QT::RendererWidget::
+GetQuadrant( ) const
+{
+  return( this->m_Quadrant );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetQuadrant( int q )
+{
+  this->m_Quadrant = ( q - 1 ) % 4;
+  if( this->m_Quadrant == 0 )
+    this->m_Marker->SetViewport( 0.85, 0.00, 1.00, 0.15 );
+  else if( this->m_Quadrant == 1 )
+    this->m_Marker->SetViewport( 0.00, 0.00, 0.15, 0.15 );
+  else if( this->m_Quadrant == 2 )
+    this->m_Marker->SetViewport( 0.00, 0.85, 0.15, 1.00 );
+  else if( this->m_Quadrant == 3 )
+    this->m_Marker->SetViewport( 0.85, 0.85, 1.00, 1.00 );
+}
+
+// -------------------------------------------------------------------------
+vtkRenderer* cpExtensions::QT::RendererWidget::
+GetRenderer( )
+{
+  return( this->m_Renderer );
+}
+
+// -------------------------------------------------------------------------
+const vtkRenderer* cpExtensions::QT::RendererWidget::
+GetRenderer( ) const
+{
+  return( this->m_Renderer );
+}
+
+// -------------------------------------------------------------------------
+vtkInteractorStyle* cpExtensions::QT::RendererWidget::
+GetStyle( )
+{
+  auto iren = this->GetInteractor( );
+  if( iren != NULL )
+    return(
+      dynamic_cast< vtkInteractorStyle* >( iren->GetInteractorStyle( ) )
+      );
+  else
+    return( NULL );
+}
+
+// -------------------------------------------------------------------------
+const vtkInteractorStyle* cpExtensions::QT::RendererWidget::
+GetStyle( ) const
+{
+  // Ugly, but necessary :-(
+  Self* self = const_cast< Self* >( this );
+  if( self != NULL )
+  {
+    auto iren = self->GetInteractor( );
+    if( iren != NULL )
+      return(
+        dynamic_cast< const vtkInteractorStyle* >(
+          iren->GetInteractorStyle( )
+          )
+        );
+    else
+      return( NULL );
+  }
+  else
+    return( NULL );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetStyle( vtkInteractorStyle* style )
+{
+  this->GetInteractor( )->SetInteractorStyle( style );
+}
+
+// -------------------------------------------------------------------------
+vtkCamera* cpExtensions::QT::RendererWidget::
+GetActiveCamera( )
+{
+  return( this->m_Renderer->GetActiveCamera( ) );
+}
+
+// -------------------------------------------------------------------------
+const vtkCamera* cpExtensions::QT::RendererWidget::
+GetActiveCamera( ) const
+{
+  return( this->m_Renderer->GetActiveCamera( ) );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+AddViewProp( vtkProp* prop, const std::string& name )
+{
+  if( prop != NULL )
+  {
+    auto i = this->m_ViewProps.find( name );
+    if( i == this->m_ViewProps.end( ) )
+      i =
+        this->m_ViewProps.insert(
+          TPropCollection::value_type( name, TProps( ) )
+          ).first;
+    i->second.insert( prop );
+    this->m_Renderer->AddViewProp( prop );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+AddViewProps( vtkPropCollection* props, const std::string& name )
+{
+  if( props != NULL )
+  {
+    auto i = this->m_ViewProps.find( name );
+    if( i == this->m_ViewProps.end( ) )
+      i =
+        this->m_ViewProps.insert(
+          TPropCollection::value_type( name, TProps( ) )
+          ).first;
+    props->InitTraversal( );
+    while( vtkProp* prop = props->GetNextProp( ) )
+    {
+      i->second.insert( prop );
+      this->m_Renderer->AddViewProp( prop );
+
+    } // elihw
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+AddAuxViewProp( vtkProp* prop, const std::string& name )
+{
+  if( prop != NULL )
+  {
+    auto i = this->m_AuxViewProps.find( name );
+    if( i == this->m_AuxViewProps.end( ) )
+      i =
+        this->m_AuxViewProps.insert(
+          TPropCollection::value_type( name, TProps( ) )
+          ).first;
+    i->second.insert( prop );
+    this->m_Renderer->AddViewProp( prop );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+AddAuxViewProps( vtkPropCollection* props, const std::string& name )
+{
+  if( props != NULL )
+  {
+    auto i = this->m_AuxViewProps.find( name );
+    if( i == this->m_AuxViewProps.end( ) )
+      i =
+        this->m_AuxViewProps.insert(
+          TPropCollection::value_type( name, TProps( ) )
+          ).first;
+    props->InitTraversal( );
+    while( vtkProp* prop = props->GetNextProp( ) )
+    {
+      i->second.insert( prop );
+      this->m_Renderer->AddViewProp( prop );
+
+    } // elhiw
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+cpExtensions::QT::RendererWidget::
+TProps& cpExtensions::QT::RendererWidget::
+GetViewProps( const std::string& name )
+{
+  static TProps zero;
+  auto i = this->m_ViewProps.find( name );
+  if( i == this->m_ViewProps.end( ) )
+  {
+    zero.clear( );
+    return( zero );
+  }
+  else
+    return( i->second );
+}
+
+// -------------------------------------------------------------------------
+const cpExtensions::QT::RendererWidget::
+TProps& cpExtensions::QT::RendererWidget::
+GetViewProps( const std::string& name ) const
+{
+  static const TProps zero;
+  auto i = this->m_ViewProps.find( name );
+  if( i == this->m_ViewProps.end( ) )
+    return( zero );
+  else
+    return( i->second );
+}
+
+// -------------------------------------------------------------------------
+cpExtensions::QT::RendererWidget::
+TProps& cpExtensions::QT::RendererWidget::
+GetAuxViewProps( const std::string& name )
+{
+  static TProps zero;
+  auto i = this->m_AuxViewProps.find( name );
+  if( i == this->m_AuxViewProps.end( ) )
+  {
+    zero.clear( );
+    return( zero );
+  }
+  else
+    return( i->second );
+}
+
+// -------------------------------------------------------------------------
+const cpExtensions::QT::RendererWidget::
+TProps& cpExtensions::QT::RendererWidget::
+GetAuxViewProps( const std::string& name ) const
+{
+  static const TProps zero;
+  auto i = this->m_AuxViewProps.find( name );
+  if( i == this->m_AuxViewProps.end( ) )
+    return( zero );
+  else
+    return( i->second );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+RemoveViewProps( const std::string& name )
+{
+  auto i = this->m_ViewProps.find( name );
+  if( i != this->m_ViewProps.end( ) )
+  {
+    for( auto p = i->second.begin( ); p != i->second.end( ); ++p )
+      this->m_Renderer->RemoveViewProp( *p );
+    this->m_ViewProps.erase( i );
+
+  } // fi
+
+  i = this->m_AuxViewProps.find( name );
+  if( i != this->m_AuxViewProps.end( ) )
+  {
+    for( auto p = i->second.begin( ); p != i->second.end( ); ++p )
+      this->m_Renderer->RemoveViewProp( *p );
+    this->m_AuxViewProps.erase( i );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+RemoveViewProps( )
+{
+  this->m_Renderer->RemoveAllViewProps( );
+  this->m_ViewProps.clear( );
+  this->m_AuxViewProps.clear( );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+HideViewProps( const std::string& name )
+{
+  auto i = this->m_ViewProps.find( name );
+  if( i != this->m_ViewProps.end( ) )
+    for( auto p = i->second.begin( ); p != i->second.end( ); ++p )
+      ( *p )->VisibilityOff( );
+  i = this->m_AuxViewProps.find( name );
+  if( i != this->m_AuxViewProps.end( ) )
+    for( auto p = i->second.begin( ); p != i->second.end( ); ++p )
+      ( *p )->VisibilityOff( );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+ShowViewProps( const std::string& name )
+{
+  auto i = this->m_ViewProps.find( name );
+  if( i != this->m_ViewProps.end( ) )
+    for( auto p = i->second.begin( ); p != i->second.end( ); ++p )
+      ( *p )->VisibilityOn( );
+  i = this->m_AuxViewProps.find( name );
+  if( i != this->m_AuxViewProps.end( ) )
+    for( auto p = i->second.begin( ); p != i->second.end( ); ++p )
+      ( *p )->VisibilityOn( );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+ResetCamera( )
+{
+  this->m_Renderer->ResetCamera( );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+Render( )
+{
+  this->GetRenderWindow( )->Render( );
+}
+
+// -------------------------------------------------------------------------
+std::set< vtkRenderWindowInteractor* > cpExtensions::QT::RendererWidget::
+GetInteractors( ) const
+{
+  Self* self = const_cast< Self* >( this );
+  std::set< vtkRenderWindowInteractor* > ret;
+  ret.insert( self->GetRenderWindow( )->GetInteractor( ) );
+  return( ret );
+}
+
+// -------------------------------------------------------------------------
+std::set< std::string > cpExtensions::QT::RendererWidget::
+GetActorsNames( ) const
+{
+  std::set< std::string > names;
+  for(
+    auto p = this->m_ViewProps.begin( );
+    p != this->m_ViewProps.end( );
+    ++p
+    )
+    names.insert( p->first );
+  return( names );
+}
+
+// -------------------------------------------------------------------------
+bool cpExtensions::QT::RendererWidget::
+IsWindowLevelImageActor( const std::string& name ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto a = it->second.begin( );
+    if( a != it->second.end( ) )
+      return( dynamic_cast< TWLActor* >( a->GetPointer( ) ) != NULL );
+    else
+      return( false );
+  }
+  else
+    return( false );
+}
+
+// -------------------------------------------------------------------------
+bool cpExtensions::QT::RendererWidget::
+IsLUTImageActor( const std::string& name ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto a = it->second.begin( );
+    if( a != it->second.end( ) )
+      return( dynamic_cast< TLUTActor* >( a->GetPointer( ) ) != NULL );
+    else
+      return( false );
+  }
+  else
+    return( false );
+}
+
+// -------------------------------------------------------------------------
+bool cpExtensions::QT::RendererWidget::
+Is3DActor( const std::string& name ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto a = it->second.begin( );
+    if( a != it->second.end( ) )
+      return( dynamic_cast< vtkActor* >( a->GetPointer( ) ) != NULL );
+    else
+      return( false );
+  }
+  else
+    return( false );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+GetScalarRange( const std::string& name, double r[ 2 ] ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto p = it->second.begin( );
+    TWLActor* a = NULL;
+    while( a == NULL && p != it->second.end( ) )
+    {
+      a = dynamic_cast< TWLActor* >( p->GetPointer( ) );
+      p++;
+
+    } // elihw
+    if( a != NULL )
+      a->GetRange( r );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+GetWindowLevel( const std::string& name, double wl[ 2 ] ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto p = it->second.begin( );
+    TWLActor* a = NULL;
+    while( a == NULL && p != it->second.end( ) )
+    {
+      a = dynamic_cast< TWLActor* >( p->GetPointer( ) );
+      p++;
+
+    } // elihw
+    if( a != NULL )
+      a->GetWindowLevel( wl );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::QT::RendererWidget::
+GetWindow( const std::string& name ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto p = it->second.begin( );
+    TWLActor* a = NULL;
+    while( a == NULL && p != it->second.end( ) )
+    {
+      a = dynamic_cast< TWLActor* >( p->GetPointer( ) );
+      p++;
+
+    } // elihw
+    if( a != NULL )
+      return( a->GetWindow( ) );
+    else
+      return( 0 );
+  }
+  else
+    return( 0 );
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::QT::RendererWidget::
+GetLevel( const std::string& name ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto p = it->second.begin( );
+    TWLActor* a = NULL;
+    while( a == NULL && p != it->second.end( ) )
+    {
+      a = dynamic_cast< TWLActor* >( p->GetPointer( ) );
+      p++;
+
+    } // elihw
+    if( a != NULL )
+      return( a->GetLevel( ) );
+    else
+      return( 0 );
+  }
+  else
+    return( 0 );
+}
+
+// -------------------------------------------------------------------------
+char cpExtensions::QT::RendererWidget::
+GetImageInterpolation( const std::string& name ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto p = it->second.begin( );
+    TWLActor* a = NULL;
+    while( a == NULL && p != it->second.end( ) )
+    {
+      a = dynamic_cast< TWLActor* >( p->GetPointer( ) );
+      p++;
+
+    } // elihw
+    if( a != NULL )
+    {
+      int int_type = a->GetProperty( )->GetInterpolationType( );
+      char ret = 0;
+      switch( int_type )
+      {
+      case VTK_NEAREST_INTERPOLATION: ret = 'N'; break;
+      case VTK_LINEAR_INTERPOLATION: ret = 'L'; break;
+      case VTK_CUBIC_INTERPOLATION: ret = 'C'; break;
+      default: ret = 0; break;
+      } // hctiws
+      return( ret );
+    }
+    else
+      return( 0 );
+  }
+  else
+    return( 0 );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+GetColor( const std::string& name, double& r, double& g, double& b ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto p = it->second.begin( );
+    vtkActor* a = NULL;
+    while( a == NULL && p != it->second.end( ) )
+    {
+      a = dynamic_cast< vtkActor* >( p->GetPointer( ) );
+      p++;
+
+    } // elihw
+    if( a != NULL )
+      return( a->GetProperty( )->GetColor( r, g, b ) );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::QT::RendererWidget::
+GetOpacity( const std::string& name ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto p = it->second.begin( );
+    vtkActor* a = NULL;
+    vtkImageSlice* s = NULL;
+    while( a == NULL && s == NULL && p != it->second.end( ) )
+    {
+      a = dynamic_cast< vtkActor* >( p->GetPointer( ) );
+      s = dynamic_cast< vtkImageSlice* >( p->GetPointer( ) );
+      p++;
+
+    } // elihw
+    if( a != NULL )
+      return( a->GetProperty( )->GetOpacity( ) );
+    else if( s != NULL )
+      return( s->GetProperty( )->GetOpacity( ) );
+    else
+      return( 0 );
+  }
+  return( 0 );
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::QT::RendererWidget::
+GetPointSize( const std::string& name ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto p = it->second.begin( );
+    vtkActor* a = NULL;
+    while( a == NULL && p != it->second.end( ) )
+    {
+      a = dynamic_cast< vtkActor* >( p->GetPointer( ) );
+      p++;
+
+    } // elihw
+    if( a != NULL )
+      return( a->GetProperty( )->GetPointSize( ) );
+    else
+      return( 0 );
+  }
+  return( 0 );
+}
+
+// -------------------------------------------------------------------------
+double cpExtensions::QT::RendererWidget::
+GetLineWidth( const std::string& name ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto p = it->second.begin( );
+    vtkActor* a = NULL;
+    while( a == NULL && p != it->second.end( ) )
+    {
+      a = dynamic_cast< vtkActor* >( p->GetPointer( ) );
+      p++;
+
+    } // elihw
+    if( a != NULL )
+      return( a->GetProperty( )->GetLineWidth( ) );
+    else
+      return( 0 );
+  }
+  return( 0 );
+}
+
+// -------------------------------------------------------------------------
+int cpExtensions::QT::RendererWidget::
+GetRepresentation( const std::string& name ) const
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    auto p = it->second.begin( );
+    vtkActor* a = NULL;
+    while( a == NULL && p != it->second.end( ) )
+    {
+      a = dynamic_cast< vtkActor* >( p->GetPointer( ) );
+      p++;
+
+    } // elihw
+    if( a != NULL )
+      return( a->GetProperty( )->GetRepresentation( ) );
+    else
+      return( -1 );
+  }
+  return( -1 );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetScalarRange( const std::string& name, double r[ 2 ] )
+{
+  this->SetScalarRange( name, r[ 0 ], r[ 1 ] );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetScalarRange( const std::string& name, double min, double max )
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    bool render = false;
+    for( auto p = it->second.begin( ); p != it->second.end( ); ++p )
+    {
+      TWLActor* a = dynamic_cast< TWLActor* >( p->GetPointer( ) );
+      if( a != NULL )
+      {
+        render = true;
+        a->SetRange( min, max );
+
+      } // fi
+
+    } // rof
+    if( render )
+      this->Render( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetWindowLevel( const std::string& name, double wl[ 2 ] )
+{
+  this->SetWindowLevel( name, wl[ 0 ], wl[ 1 ] );
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetWindowLevel( const std::string& name, double w, double l )
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    bool render = false;
+    for( auto p = it->second.begin( ); p != it->second.end( ); ++p )
+    {
+      TWLActor* a = dynamic_cast< TWLActor* >( p->GetPointer( ) );
+      if( a != NULL )
+      {
+        render = true;
+        a->SetWindowLevel( w, l );
+
+      } // fi
+
+    } // rof
+    if( render )
+      this->Render( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetWindow( const std::string& name, double w )
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    bool render = false;
+    for( auto p = it->second.begin( ); p != it->second.end( ); ++p )
+    {
+      TWLActor* a = dynamic_cast< TWLActor* >( p->GetPointer( ) );
+      if( a != NULL )
+      {
+        render = true;
+        a->SetWindow( w );
+
+      } // fi
+
+    } // rof
+    if( render )
+      this->Render( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetLevel( const std::string& name, double l )
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    bool render = false;
+    for( auto p = it->second.begin( ); p != it->second.end( ); ++p )
+    {
+      TWLActor* a = dynamic_cast< TWLActor* >( p->GetPointer( ) );
+      if( a != NULL )
+      {
+        render = true;
+        a->SetLevel( l );
+
+      } // fi
+
+    } // rof
+    if( render )
+      this->Render( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetImageInterpolation( const std::string& name, char i )
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    bool render = false;
+    for( auto p = it->second.begin( ); p != it->second.end( ); ++p )
+    {
+      TWLActor* a = dynamic_cast< TWLActor* >( p->GetPointer( ) );
+      if( a != NULL )
+      {
+        render = true;
+        int int_type = VTK_NEAREST_INTERPOLATION;
+        switch( i )
+        {
+        case 'L': int_type = VTK_LINEAR_INTERPOLATION; break;
+        case 'C': int_type = VTK_CUBIC_INTERPOLATION; break;
+        default:  int_type = VTK_NEAREST_INTERPOLATION; break;
+        } // hctiws
+        a->GetProperty( )->SetInterpolationType( int_type );
+
+      } // fi
+
+    } // rof
+    if( render )
+      this->Render( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetColor( const std::string& name, double r, double g, double b )
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    bool render = false;
+    for( auto p = it->second.begin( ); p != it->second.end( ); ++p )
+    {
+      vtkActor* a = dynamic_cast< vtkActor* >( p->GetPointer( ) );
+      if( a != NULL )
+      {
+        render = true;
+        a->GetProperty( )->SetColor( r, g, b );
+
+      } // fi
+
+    } // rof
+    if( render )
+      this->Render( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetOpacity( const std::string& name, double o )
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    bool render = false;
+    for( auto p = it->second.begin( ); p != it->second.end( ); ++p )
+    {
+      vtkActor* a = dynamic_cast< vtkActor* >( p->GetPointer( ) );
+      vtkImageSlice* s = dynamic_cast< vtkImageSlice* >( p->GetPointer( ) );
+      if( a != NULL )
+      {
+        render = true;
+        a->GetProperty( )->SetOpacity( o );
+      }
+      else if( s != NULL )
+      {
+        render = true;
+        s->GetProperty( )->SetOpacity( o );
+
+      } // fi
+
+    } // rof
+    if( render )
+      this->Render( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetPointSize( const std::string& name, double s )
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    bool render = false;
+    for( auto p = it->second.begin( ); p != it->second.end( ); ++p )
+    {
+      vtkActor* a = dynamic_cast< vtkActor* >( p->GetPointer( ) );
+      if( a != NULL )
+      {
+        render = true;
+        a->GetProperty( )->SetPointSize( s );
+
+      } // fi
+
+    } // rof
+    if( render )
+      this->Render( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetLineWidth( const std::string& name, double w )
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    bool render = false;
+    for( auto p = it->second.begin( ); p != it->second.end( ); ++p )
+    {
+      vtkActor* a = dynamic_cast< vtkActor* >( p->GetPointer( ) );
+      if( a != NULL )
+      {
+        render = true;
+        a->GetProperty( )->SetLineWidth( w );
+
+      } // fi
+
+    } // rof
+    if( render )
+      this->Render( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetRepresentationToPoints( const std::string& name )
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    bool render = false;
+    for( auto p = it->second.begin( ); p != it->second.end( ); ++p )
+    {
+      vtkActor* a = dynamic_cast< vtkActor* >( p->GetPointer( ) );
+      if( a != NULL )
+      {
+        render = true;
+        a->GetProperty( )->SetRepresentationToPoints( );
+
+      } // fi
+
+    } // rof
+    if( render )
+      this->Render( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetRepresentationToSurface( const std::string& name )
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    bool render = false;
+    for( auto p = it->second.begin( ); p != it->second.end( ); ++p )
+    {
+      vtkActor* a = dynamic_cast< vtkActor* >( p->GetPointer( ) );
+      if( a != NULL )
+      {
+        render = true;
+        a->GetProperty( )->SetRepresentationToSurface( );
+
+      } // fi
+
+    } // rof
+    if( render )
+      this->Render( );
+
+  } // fi
+}
+
+// -------------------------------------------------------------------------
+void cpExtensions::QT::RendererWidget::
+SetRepresentationToWireframe( const std::string& name )
+{
+  auto it = this->m_ViewProps.find( name );
+  if( it != this->m_ViewProps.end( ) )
+  {
+    bool render = false;
+    for( auto p = it->second.begin( ); p != it->second.end( ); ++p )
+    {
+      vtkActor* a = dynamic_cast< vtkActor* >( p->GetPointer( ) );
+      if( a != NULL )
+      {
+        render = true;
+        a->GetProperty( )->SetRepresentationToWireframe( );
+
+      } // fi
+
+    } // rof
+    if( render )
+      this->Render( );
+
+  } // fi
+}
+
+// eof - $RCSfile$