#include <vtkActor.h>
#include <vtkImageActor.h>
#include <vtkImageSliceMapper.h>
+#include <vtkLookupTable.h>
#include <vtkPlane.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkTextActor.h>
#include <cpExtensions/Interaction/ImageInteractorStyle.h>
+#include <cpExtensions/Visualization/ImageBlender.h>
// -------------------------------------------------------------------------
class vtkAlgorithmOutput;
typedef void ( *TWindowLevelCommand )( double, double, void* );
typedef TVoidCommand TRenderCommand;
+ typedef cpExtensions::Visualization::ImageBlender TBlender;
+
public:
vtkTypeMacro( ImageSliceActors, vtkPropCollection );
static ImageSliceActors* New( );
void SetAxis( int axis );
- void AddInputConnection( vtkAlgorithmOutput* aout );
- void AddInputData( vtkImageData* data );
+ void SetInputConnection( vtkAlgorithmOutput* aout );
+ void SetInputImage( vtkImageData* data );
+ int AddBinaryConnection(
+ vtkAlgorithmOutput* aout,
+ const double& r, const double& g, const double& b
+ );
+ int AddBinaryImage(
+ vtkImageData* data,
+ const double& r, const double& g, const double& b
+ );
void Clear( );
void AssociateSlice( Self* slice );
void PushActorsInto( vtkRenderWindow* window, bool force_style = true );
void PopActorsFrom( vtkRenderWindow* window );
unsigned int GetNumberOfImages( ) const;
+
vtkImageActor* GetImageActor( );
const vtkImageActor* GetImageActor( ) const;
+ vtkImageActor* GetBinaryActor( );
+ const vtkImageActor* GetBinaryActor( ) const;
vtkTextActor* GetTextActor( );
const vtkTextActor* GetTextActor( ) const;
vtkActor* GetPlaneActor( );
void ResetCursor( );
void SetCursor( double pos[ 3 ] );
+ void ResetAxesCursor( );
+ void SetAxesCursor( double pos[ 3 ] );
+
double GetMinWindow( ) const;
double GetMaxWindow( ) const;
double GetMinLevel( ) const;
void UpdateText( double pos[ 3 ] );
void UpdateText( const double& w, const double& l );
- void Render( const double& t );
+ void Render( );
void ResetCamera( );
protected:
virtual ~ImageSliceActors( );
void _ConfigureStyle( );
+ void _ConfigureInputImage( );
+ void _ConfigureBinaryImage(
+ const double& r, const double& g, const double& b
+ );
// Events
static void _MouseMoveCommand(
Self& operator=( const Self& );
protected:
+ static double m_PlaneColors[ 3 ][ 3 ];
+
vtkSmartPointer< TStyle > m_Style;
vtkRenderWindow* m_Window;
// Multiple actors
vtkSmartPointer< vtkImageSliceMapper > m_ImageMapper;
vtkSmartPointer< vtkImageActor > m_ImageActor;
+
+ vtkSmartPointer< vtkImageData > m_BlenderBase;
+ vtkSmartPointer< TBlender > m_Blender;
+ vtkSmartPointer< vtkImageSliceMapper > m_BlenderMapper;
+ vtkSmartPointer< vtkLookupTable > m_BlenderLUT;
+ vtkSmartPointer< vtkImageActor > m_BlenderActor;
+
bool m_Interpolate;
double m_WLRange[ 4 ];
vtkSmartPointer< vtkPolyDataMapper > m_CursorMapper;
vtkSmartPointer< vtkActor > m_CursorActor;
- vtkSmartPointer< vtkPolyData > m_HorizontalLine;
- vtkSmartPointer< vtkPolyDataMapper > m_HorizontalLineMapper;
- vtkSmartPointer< vtkActor > m_HorizontalLineActor;
+ vtkSmartPointer< vtkPolyData > m_Axis1;
+ vtkSmartPointer< vtkPolyDataMapper > m_Axis1Mapper;
+ vtkSmartPointer< vtkActor > m_Axis1Actor;
- vtkSmartPointer< vtkPolyData > m_VerticalLine;
- vtkSmartPointer< vtkPolyDataMapper > m_VerticalLineMapper;
- vtkSmartPointer< vtkActor > m_VerticalLineActor;
+ vtkSmartPointer< vtkPolyData > m_Axis2;
+ vtkSmartPointer< vtkPolyDataMapper > m_Axis2Mapper;
+ vtkSmartPointer< vtkActor > m_Axis2Actor;
vtkSmartPointer< vtkPolyData > m_Plane;
vtkSmartPointer< vtkPolyDataMapper > m_PlaneMapper;