vtkMimxSelectPointsWidget.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #ifndef __vtkMimxSelectPointsWidget_h
00051 #define __vtkMimxSelectPointsWidget_h
00052
00053 #include "vtkAbstractWidget.h"
00054 #include "vtkUnstructuredGrid.h"
00055 #include "vtkMimxWidgetsWin32Header.h"
00056
00057
00058 class vtkActor;
00059 class vtkDataSet;
00060 class vtkDataSetMapper;
00061 class vtkCleanPolyData;
00062 class vtkGeometryFilter;
00063 class vtkGlyph3D;
00064 class vtkIdList;
00065 class vtkInteractorStyleRubberBandPick;
00066 class vtkPolyData;
00067 class vtkPolyDataMapper;
00068 class vtkRenderedAreaPicker;
00069 class vtkSphereSource;
00070 class vtkStructuredGrid;
00071 class vtkUnstructuredGrid;
00072 class vtkPointLocator;
00073 class vtkPoints;
00074
00075 class VTK_MIMXWIDGETS_EXPORT vtkMimxSelectPointsWidget : public vtkAbstractWidget
00076 {
00077 public:
00078
00079
00080 static vtkMimxSelectPointsWidget *New();
00081
00082 vtkTypeRevisionMacro(vtkMimxSelectPointsWidget,vtkAbstractWidget);
00083 void PrintSelf(ostream& os, vtkIndent indent);
00084
00085
00086
00087
00088
00089 virtual void SetEnabled(int);
00090
00091
00092
00093
00094
00095
00096 void SetPointSelectionState(int PointState);
00097 vtkSetMacro(BooleanState, int);
00098 vtkGetObjectMacro(SelectedPointIds, vtkIdList);
00099 void CreateDefaultRepresentation(){}
00100 void ComputeSelectedPointIds(vtkDataSet *ExtractedUGrid, vtkMimxSelectPointsWidget *Self);
00101 void ComputeExtractedPointIds(vtkDataSet *ExtractedUGrid, vtkMimxSelectPointsWidget *Self);
00102 void ComputeSelectedPointIds(vtkMimxSelectPointsWidget *Self);
00103 int CheckGivenPointBelongsToStructuredGrid(
00104 vtkStructuredGrid *SGrid, double x[3], double *bounds);
00105 int DoAllPointsLieOnSurface(vtkStructuredGrid *SGrid, vtkPolyData *Surface, double *bounds);
00106 double GetSphereRadius();
00107 void SetSphereRadius(double Radius);
00108 void SetInput(vtkUnstructuredGrid *UGrid);
00109 void SetInputOpacity(double Val);
00110 void ClearSelections();
00111 enum BooleanType
00112 {
00113 Add = 0,
00114 Subtract
00115 };
00116 protected:
00117 vtkMimxSelectPointsWidget();
00118 ~vtkMimxSelectPointsWidget();
00119
00120 static void CrtlMouseMoveCallback (vtkAbstractWidget* );
00121 static void ShiftMouseMoveCallback (vtkAbstractWidget* );
00122 static void CrtlLeftButtonDownCallback (vtkAbstractWidget* );
00123 static void CrtlLeftButtonUpCallback (vtkAbstractWidget* );
00124 static void LeftButtonUpCallback (vtkAbstractWidget* );
00125 static void RightButtonUpCallback (vtkAbstractWidget* );
00126 static void RightButtonDownCallback (vtkAbstractWidget* );
00127
00128 static void SelectPointsOnSurfaceFunction(vtkMimxSelectPointsWidget *Self);
00129 static void SelectVisiblePointsOnSurfaceFunction(vtkMimxSelectPointsWidget *Self);
00130 static double ComputeSphereRadius(vtkDataSet *DataSet);
00131 static void SelectPointsThroughFunction(vtkMimxSelectPointsWidget *Self);
00132 static void SelectSinglePointFunction(vtkMimxSelectPointsWidget *Self);
00133 static void SelectSinglePointBelongingToAFaceFunction(vtkMimxSelectPointsWidget *Self);
00134 static void SelectPointsOnAFaceFunction(vtkMimxSelectPointsWidget *Self);
00135 static void ShiftLeftButtonUpCallback (vtkAbstractWidget* );
00136 static void ShiftLeftButtonDownCallback (vtkAbstractWidget* );
00137 static void UpdateExtractedGlyphDisplay (vtkDataSet * UGrid,
00138 vtkMimxSelectPointsWidget *Self);
00139 static void UpdateSelectedGlyphDisplay (vtkMimxSelectPointsWidget *Self);
00140
00141
00142
00143
00144 int WidgetEvent;
00145 enum WidgetEventIds
00146 {
00147 Start = 0,
00148 Outside,
00149 CrtlLeftMouseButtonDown,
00150 CrtlLeftMouseButtonUp,
00151 CrtlLeftMouseButtonMove,
00152 VTKLeftButtonDown,
00153 VTKMouseMove,
00154 ShiftLeftMouseButtonDown,
00155 ShiftLeftMouseButtonUp,
00156 ShiftLeftMouseButtonMove,
00157 LeftMouseButtonUp,
00158 RightMouseButtonDown,
00159 RightMouseButtonUp
00160 };
00161
00162 int PointSelectionState;
00163 enum PointSelectionType
00164 {
00165 SelectPointsThrough = 0,
00166 SelectPointsOnSurface,
00167 SelectVisiblePointsOnSurface,
00168 SelectSinglePoint,
00169 SelectPointsBelongingToAFace
00170 };
00171
00172 vtkInteractorStyleRubberBandPick *RubberBandStyle;
00173 vtkRenderedAreaPicker *AreaPicker;
00174
00175 vtkUnstructuredGrid *Input;
00176 vtkDataSetMapper *InputMapper;
00177 vtkActor *InputActor;
00178
00179 vtkPointSet *SelectedPointSet;
00180 vtkSphereSource *SelectedSphere;
00181 vtkGlyph3D *SelectedGlyph;
00182 vtkPolyDataMapper *SelectedGlyphMapper;
00183 vtkActor *SelectedGlyphActor;
00184
00185 vtkPointSet *ExtractedPointSet;
00186 vtkSphereSource *ExtractedSphere;
00187 vtkGlyph3D *ExtractedGlyph;
00188 vtkPolyDataMapper *ExtractedGlyphMapper;
00189 vtkActor *ExtractedGlyphActor;
00190
00191 vtkSphereSource *SingleSphere;
00192 vtkPolyDataMapper *SingleSphereMapper;
00193 vtkActor *SingleSphereActor;
00194
00195 vtkIdType PickX0;
00196 vtkIdType PickY0;
00197 vtkIdType PickX1;
00198 vtkIdType PickY1;
00199
00200 int PickStatus;
00201
00202 vtkIdList *SelectedPointIds;
00203 vtkIdList *ExtractedPointIds;
00204
00205 int BooleanState;
00206 int EditMeshState;
00207 enum EditMeshType
00208 {
00209 Full = 0,
00210 Partial
00211 };
00212 vtkPolyDataMapper *SurfaceMapper;
00213 vtkActor *SurfaceActor;
00214 vtkGeometryFilter *InputSurfaceFilter;
00215 vtkCleanPolyData *InputCleanPolyData;
00216 vtkPointLocator *PointLocator;
00217 vtkPoints *LocatorPoints;
00218 private:
00219 vtkMimxSelectPointsWidget(const vtkMimxSelectPointsWidget&);
00220 void operator=(const vtkMimxSelectPointsWidget&);
00221 };
00222
00223 #endif