00001
00002
00003
00004
00005
00014 #ifndef _SIGNMRMLMODELNODEHELPER_H
00015 #define _SIGNMRMLMODELNODEHELPER_H
00016 #include <SignDLL.h>
00017 #include <SignMRMLNodeHelper.h>
00018
00019 #include <string>
00020 #include <map>
00021 #include <vector>
00022 #include <SignSink.h>
00023
00024 class vtkObject;
00025 class vtkActor;
00026 class vtkTransform;
00027 class SignContext;
00028 class vtkPolyDataAlgorithm;
00029 class vtkLookupTable;
00030 class vtkDataSetMapper;
00031 class vtkClipPolyData;
00032 class vtkRenderWindow;
00033 class vtkPlane;
00034 class vtkFloatArray;
00035 class vtkPolyData;
00036 class vtkTexture;
00037 class vtkMRMLModelTextureNode;
00038
00039 typedef std::map<vtkDataSetMapper*,vtkActor*> Mappers;
00040 typedef std::vector<vtkClipPolyData*> Clippers;
00041
00042
00043 class SIGN_EXPORT SignMRMLModelNodeHelper : public SignMRMLNodeHelper
00044 {
00045 public:
00047 SignMRMLModelNodeHelper(SignMRMLScene* scene_);
00049 virtual ~SignMRMLModelNodeHelper();
00050
00052 vtkActor* MakeActor();
00054 float GetOpacity();
00056 void SetOpacity(float opacity_);
00058 void InsertClipper();
00060 void SetClippersTransform(vtkTransform *trans);
00061
00062 virtual void Setup(SignContext *context);
00063
00065 void SetTexture(std::string texture);
00066 virtual void SetInputData(SignSink *sink);
00067 virtual void SetUserTransform(vtkTransform *transform);
00068
00070 void ColourizePoint(double x, double y, double z, float value);
00072 void InsertPolyDataAlgorithm(vtkPolyDataAlgorithm* pda);
00074 void ScalarVisibilityOn();
00076 void SetScalarRange(float min, float max);
00078 void SetLookupTable(vtkLookupTable *lut);
00080 void SetTextureNode(vtkMRMLModelTextureNode *node);
00082 vtkTexture* GetTexture();
00084 vtkPolyData* GetOutput();
00086 void AddMapper(vtkDataSetMapper* pdm, vtkActor* actor);
00087
00088 private:
00089 static void OnZeroConfidence(vtkObject* caller,unsigned long,void* data,void*);
00090 static void OnTrackerEvent(vtkObject* caller,unsigned long,void* data,void*);
00091
00092 Mappers mappers;
00093 Clippers clippers;
00094 float opacity;
00095 vtkPlane *plane;
00096 ViewerVector viewersWithModel;
00097 vtkLookupTable *LUT;
00098 vtkFloatArray *scalars;
00099 vtkPolyData *output;
00100 vtkTexture *aText;
00101 long ozcoid;
00102 };
00103
00104 #endif