00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00041 #ifndef __vtkParallelCoordinatesView_h
00042 #define __vtkParallelCoordinatesView_h
00043
00044 #include <vtkRenderView.h>
00045
00046 class vtkActor2D;
00047 class vtkOutlineSource;
00048 class vtkParallelCoordinatesRepresentation;
00049 class vtkPolyData;
00050 class vtkPolyDataMapper2D;
00051
00052 class VTK_VIEWS_EXPORT vtkParallelCoordinatesView : public vtkRenderView
00053 {
00054 public:
00055 vtkTypeMacro(vtkParallelCoordinatesView, vtkRenderView);
00056 static vtkParallelCoordinatesView *New();
00057 void PrintSelf(ostream &os, vtkIndent indent);
00058
00059
00060 enum {VTK_BRUSH_LASSO=0,VTK_BRUSH_ANGLE,VTK_BRUSH_FUNCTION,VTK_BRUSH_AXISTHRESHOLD,VTK_BRUSH_MODECOUNT};
00061 enum {VTK_BRUSHOPERATOR_ADD=0,VTK_BRUSHOPERATOR_SUBTRACT,VTK_BRUSHOPERATOR_INTERSECT,VTK_BRUSHOPERATOR_REPLACE,VTK_BRUSHOPERATOR_MODECOUNT};
00062 enum {VTK_INSPECT_MANIPULATE_AXES=0, VTK_INSPECT_SELECT_DATA, VTK_INSPECT_MODECOUNT};
00063
00064
00065 void SetBrushMode(int);
00066 void SetBrushModeToLasso() { this->SetBrushMode(VTK_BRUSH_LASSO); }
00067 void SetBrushModeToAngle() { this->SetBrushMode(VTK_BRUSH_ANGLE); }
00068 void SetBrushModeToFunction() { this->SetBrushMode(VTK_BRUSH_FUNCTION); }
00069 void SetBrushModeToAxisThreshold() { this->SetBrushMode(VTK_BRUSH_AXISTHRESHOLD); }
00070 vtkGetMacro(BrushMode,int);
00071
00072 void SetBrushOperator(int);
00073 void SetBrushOperatorToAdd() { this->SetBrushOperator(VTK_BRUSHOPERATOR_ADD); }
00074 void SetBrushOperatorToSubtract() { this->SetBrushOperator(VTK_BRUSHOPERATOR_SUBTRACT); }
00075 void SetBrushOperatorToIntersect() { this->SetBrushOperator(VTK_BRUSHOPERATOR_INTERSECT); }
00076 void SetBrushOperatorToReplace() { this->SetBrushOperator(VTK_BRUSHOPERATOR_REPLACE); }
00077 vtkGetMacro(BrushOperator,int);
00078
00079 void SetInspectMode(int);
00080 void SetInspectModeToManipulateAxes() { this->SetInspectMode(VTK_INSPECT_MANIPULATE_AXES); }
00081 void SetInpsectModeToSelectData() { this->SetInspectMode(VTK_INSPECT_SELECT_DATA); }
00082 vtkGetMacro(InspectMode,int);
00083
00084 void SetMaximumNumberOfBrushPoints(int);
00085 vtkGetMacro(MaximumNumberOfBrushPoints,int);
00086
00087 vtkSetMacro(CurrentBrushClass,int);
00088 vtkGetMacro(CurrentBrushClass,int);
00089
00090 virtual void ApplyViewTheme(vtkViewTheme* theme);
00091
00092 protected:
00093 vtkParallelCoordinatesView();
00094 virtual ~vtkParallelCoordinatesView();
00095
00096 int SelectedAxisPosition;
00097
00098 enum {VTK_HIGHLIGHT_CENTER=0,VTK_HIGHLIGHT_MIN,VTK_HIGHLIGHT_MAX};
00099 vtkSmartPointer<vtkOutlineSource> HighlightSource;
00100 vtkSmartPointer<vtkPolyDataMapper2D> HighlightMapper;
00101 vtkSmartPointer<vtkActor2D> HighlightActor;
00102
00103
00104 int InspectMode;
00105 int BrushMode;
00106 int BrushOperator;
00107 int MaximumNumberOfBrushPoints;
00108 int NumberOfBrushPoints;
00109 int CurrentBrushClass;
00110
00111 vtkSmartPointer<vtkPolyData> BrushData;
00112 vtkSmartPointer<vtkPolyDataMapper2D> BrushMapper;
00113 vtkSmartPointer<vtkActor2D> BrushActor;
00114
00115
00116 int FirstFunctionBrushLineDrawn;
00117 int AxisHighlightPosition;
00118
00119 vtkTimeStamp WorldBuildTime;
00120 bool RebuildNeeded;
00121
00122 virtual void ProcessEvents(vtkObject *caller, unsigned long event, void *callData);
00123 virtual vtkDataRepresentation* CreateDefaultRepresentation(vtkAlgorithmOutput* conn);
00124
00125 void PrepareForRendering();
00126
00128
00129 void Hover(unsigned long event);
00130 void ManipulateAxes(unsigned long event);
00131 void SelectData(unsigned long event);
00132 void Zoom(unsigned long event);
00133 void Pan(unsigned long event);
00135
00137 int SetAxisHighlightPosition(vtkParallelCoordinatesRepresentation* rep, int position);
00138
00140 int SetAxisHighlightPosition(vtkParallelCoordinatesRepresentation* rep, double position);
00141
00142 int AddLassoBrushPoint(double *p);
00143 int SetBrushLine(int line, double *p1, double *p2);
00144 void GetBrushLine(int line, vtkIdType &npts, vtkIdType* &ptids);
00145 int SetAngleBrushLine(double *p1, double *p2);
00146 int SetFunctionBrushLine1(double *p1, double *p2);
00147 int SetFunctionBrushLine2(double *p1, double *p2);
00148 void ClearBrushPoints();
00149
00150
00151 private:
00152 vtkParallelCoordinatesView(const vtkParallelCoordinatesView&);
00153 void operator=(const vtkParallelCoordinatesView&);
00154
00155 };
00156
00157 #endif