00001 #ifndef manualViewBaseContour_h
00002 #define manualViewBaseContour_h
00003
00004 #include "vtkRenderWindow.h"
00005
00006 #include "vtkRenderer.h"
00007 #include "vtkRenderWindowInteractor.h"
00008 #include "vtkCommand.h"
00009 #include "vtkPolyData.h"
00010 #include "vtkCellArray.h"
00011 #include "vtkPolyDataMapper.h"
00012 #include "vtkInteractorObserver.h"
00013 #include "vtkInteractorStyleImage.h"
00014 #include <vtkKochanekSpline.h>
00015
00016 #include <vtkActor.h>
00017 #include <vtkProperty.h>
00018 #include <vtkCellArray.h>
00019 #include <vtkRenderer.h>
00020 #include <vtkCoordinate.h>
00021 #include <vtkTextProperty.h>
00022 #include <vtkTextActor.h>
00023 #include <vtkProperty2D.h>
00024 #include <vtkPointPicker.h>
00025
00026 #include "UtilVtk3DGeometriSelection.h"
00027 #include <vtkCellPicker.h>
00028
00029
00030 #include <vtkCamera.h>
00031 #include <vtkPolyLine.h>
00032 #include <vtkDataSetMapper.h>
00033 #include <vtkUnstructuredGrid.h>
00034
00035 #include "wxVTKRenderWindowInteractor.h"
00036
00037
00038
00039
00040 #include <vector>
00041 #include "wxVtkBaseView.h"
00042 #include "marTypes.h"
00043
00044 #include "manualViewPoint.h"
00045 #include "manualContourModel.h"
00046
00047
00048
00049
00050
00051
00052 class creaMaracasVisu_EXPORT manualViewBaseContour{
00053 public:
00054 manualViewBaseContour();
00055 virtual ~manualViewBaseContour();
00056
00057 virtual int GetType();
00058 virtual void Save(FILE *pFile);
00059 virtual void Open(FILE *pFile);
00060
00061 void AddPoint();
00062 void AddPoint( manualViewPoint * manualViewPoint );
00063 void InsertPoint(int id);
00064 void DeleteContour();
00065 void DeletePoint(int x, int y,int z);
00066 virtual void DeletePoint(int id);
00067
00068 virtual void UpdateViewPoint(int id);
00069 virtual void UpdateViewPoints();
00070
00071 void SetSelected(bool selected);
00072 void SetPosibleSelected(bool posibleSelected);
00073 bool GetSelected();
00074 bool GetPosibleSelected();
00075 void DeleteSelectedPoints();
00076 bool GetEditable();
00077 void SetEditable( bool * condition );
00078
00079
00080
00081 virtual int GetIdPoint(int x, int y, int z);
00082
00083 void SelectPoint(int i,bool select);
00084 void SelectLstPoints();
00085 void SelectAllPoints(bool select);
00086 virtual int SelectPosiblePoint(int x, int y ,int z);
00087 bool SelectPosibleContour(int x, int y ,int z);
00088 void SelectAllPossibleSelected(bool select);
00089 void SetPointSelected(int id,bool select);
00090 void SetPointPosibleSelected(int id,bool select);
00091 void SetIfViewControlPoints(bool ifShow);
00092 bool GetIfViewControlPoints();
00093
00094 void UnSelectPoint(int i);
00095 void UnSelectLstPoints();
00096 void UnSelectAllPoints();
00097
00098 void SetModel(manualContourModel *manContModel);
00099 void SetWxVtkBaseView(wxVtkBaseView *wxvtkbaseview);
00100
00101 virtual void Refresh();
00102 int GetNumberOfPoints();
00103
00104
00105
00106 void CreateNewContour();
00107 double* GetVectorPointsXManualContour();
00108 double* GetVectorPointsYManualContour();
00109 double* GetVectorPointsZManualContour();
00110
00111 virtual bool ifTouchContour(int x,int y, int z);
00112 void UpdateColorActor();
00113
00114 void SetRange(double range);
00115 double GetRange();
00116 void SetZ(int z);
00117 int GetZ();
00118
00119 wxVtkBaseView *GetWxVtkBaseView();
00120
00121 virtual void InitMove(int x, int y, int z);
00122 virtual void MoveContour(int x, int y, int z);
00123 virtual void MoveContour(int horizontalUnits, int verticalUnits );
00124 virtual void GetMinMax( double &minX,double &minY, double &minZ, double &maxX, double &maxY, double &maxZ );
00125 virtual void TransfromCoordViewWorld(double &X, double &Y, double &Z, int type=2);
00126
00127 void ClearContour();
00128 virtual void ClearPoint(int id);
00129
00130 void SetVisible(bool ok);
00131 void SetShowText(bool ok);
00132
00133 void GetSpacing(double spc[3]);
00134 void SetSpacing(double spc[3]);
00135
00136 void SetColorNormalContour(double r, double g, double b);
00137 void GetColorNormalContour(double &r, double &g, double &b);
00138 void SetColorEditContour(double r, double g, double b);
00139 void GetColorEditContour(double &r, double &g, double &b);
00140 void SetColorSelectContour(double r, double g, double b);
00141 void GetColorSelectContour(double &r, double &g, double &b);
00142
00143
00144 void AddCompleteContourActor( bool ifControlPoints = false);
00145 void RemoveCompleteContourActor();
00146 virtual void AddSplineActor();
00147 virtual void RemoveSplineActor();
00148 void AddControlPoints();
00149 void RemoveControlPoints();
00150 void AddTextActor();
00151 void RemoveTextActor();
00152
00153 virtual manualViewBaseContour * Clone();
00154 void CopyAttributesTo( manualViewBaseContour *cloneObject );
00155 virtual void RefreshContour();
00156 void SetWidthLine(double width);
00157 double GetWidthLine();
00158
00159 virtual void ConstructVTKObjects();
00160
00161 private:
00162 double _range;
00163
00164 wxVtkBaseView *_wxvtkbaseview;
00165 bool _selected;
00166 bool *_editable;
00167 bool _posibleSelected;
00168 bool _viewControlPoints;
00169
00170
00171 vtkPolyData *_pd;
00172 vtkActor *_contourVtkActor;
00173 vtkPolyDataMapper *_bboxMapper;
00174
00175 double _coulorEdit_r;
00176 double _coulorEdit_g;
00177 double _coulorEdit_b;
00178 double _coulorNormal_r;
00179 double _coulorNormal_g;
00180 double _coulorNormal_b;
00181 double _coulorSelection_r;
00182 double _coulorSelection_g;
00183 double _coulorSelection_b;
00184 double _widthline;
00185
00186 void DeleteVtkObjects();
00187 virtual void RefreshText();
00188
00189
00190 protected:
00191
00192
00193 bool _show_text;
00194 int _id_viewPoint_for_text;
00195 vtkTextActor *_textActor;
00196 manualContourModel *_manContModel;
00197 vtkPoints *_pts;
00198
00199 int _sizePointsContour;
00200
00201 std::vector<manualViewPoint*> _lstViewPoints;
00202 double _spc[3];
00203
00204 };
00205
00206
00207 #endif // manualViewBaseContour_h