3 #include <vtkSmartPointer.h> 5 #include <vtkOpenGLPolyDataMapper.h> 6 #include <vtkRenderer.h> 7 #include <vtkRenderWindow.h> 8 #include <vtkPolyDataReader.h> 9 #include <vtkPolyData.h> 10 #include <vtkPolyDataNormals.h> 11 #include <vtkRenderWindowInteractor.h> 12 #include <vtkProperty.h> 13 #include <vtkCamera.h> 16 #include <vtkPlaneSource.h> 27 double AMBIENTCOLOR[3]{ 0.2, 0.2, 1.0 };
28 double DIFFUSECOLOR[3]{ 1.0, 0.0, 0.0 };
29 double SPECULARCOLOR[3]{ 1.0, 1.0, 1.0 };
32 double SPECULAR = 0.5;
33 double SPECULARPOWER = 20.0;
36 double CAMERAPOSITION[3]{ -0.2, 0.4, 1 };
37 double FOCALPOINT[3]{ 0, 0, 0 };
38 double CAMERAVIEWUP[3]{ 0, 1, 0 };
41 double BACKGROUNDCOLOR[3]{ 0.0, 0.0, 0.0 };
43 int isoLineDistance = 20;
45 int RENDERWINDOWSIZE[2]{ 400, 400 };
60 MyRenderer(
bool isSplitted, vtkRenderWindow* renderWindow =
nullptr);
68 void claculateDistanceToActor(
int keyMainActor,
int keyTumorActor,
bool splittedMiddle =
false,
bool splittedBorder =
false);
86 vtkSmartPointer<MyActor>
CopyActor(vtkSmartPointer<MyActor> actor, QString name);
99 void LinkLabelToShader(
int label, QString name, vtkSmartPointer<MyShaderCallback> callback = 0);
110 double cameraPosition[3] = CAMERAPOSITION,
111 double focalPoint[3] = FOCALPOINT,
112 double viewUp[3] = CAMERAVIEWUP,
130 vtkSmartPointer<vtkPolyData>
FusePolygons(vtkSmartPointer<vtkPolyData> polyData1,
131 vtkSmartPointer<vtkPolyData> polyData2);
138 vtkSmartPointer<vtkPolyData>
CloseOpenPolygons(vtkSmartPointer<vtkPolyData> polyData);
152 vtkSmartPointer<vtkPolyData>
SplitPolygon(
int actorID,
bool safeToPolyDataMap =
true);
167 vtkSmartPointer<vtkRenderer>
GetRenderer()
const {
return renderer; }
214 vtkSmartPointer<vtkPolyData> completeData;
216 QMap<int, vtkSmartPointer<vtkPolyData>> labeledPolydata;
218 QMap<int, vtkSmartPointer<vtkPolyData>> labeledPolydataSplitted;
220 QMap<QString, vtkSmartPointer<MyActor>> actorMap;
223 vtkSmartPointer<vtkRenderer> renderer;
224 vtkSmartPointer<vtkRenderWindow> renderWindow;
225 vtkNew<vtkRenderWindowInteractor> iren;
232 vtkSmartPointer<vtkPlaneSource> clippingPlaneSource;
234 vtkSmartPointer<vtkActor> clippingActor;
vtkSmartPointer< vtkPlaneSource > GetClippingPlane()
void claculateDistanceToActor(int keyMainActor, int keyTumorActor, bool splittedMiddle=false, bool splittedBorder=false)
vtkSmartPointer< vtkRenderer > GetRenderer() const
vtkSmartPointer< vtkPolyData > CloseOpenPolygons(vtkSmartPointer< vtkPolyData > polyData)
void LoadShaders(QString path)
double * GetOriginOfClipping()
void ConnectInteractors()
vtkSmartPointer< vtkPolyData > SplitPolygon(int actorID, bool safeToPolyDataMap=true)
void LoadPolydataFromFile(const char *filename, vtkMatrix4x4 *viewMatrix=NULL)
void showTargetStructure(int keyTargetStructure, int keyRiskStructure)
MyRenderer(bool isSplitted, vtkRenderWindow *renderWindow=nullptr)
vtkSmartPointer< MyActor > CopyActor(vtkSmartPointer< MyActor > actor, QString name)
double * GetNormalOfClipping()
void UpdateClippingPlane(double normal[3])
vtkSmartPointer< vtkRenderWindow > GetRenderWindow() const
vtkSmartPointer< vtkPolyData > FusePolygons(vtkSmartPointer< vtkPolyData > polyData1, vtkSmartPointer< vtkPolyData > polyData2)
void CreateClippingPlane()
void copyData(MyRenderer *renderer)
void SetShadingProperties()
void LinkLabelToShader(int label, QString name, vtkSmartPointer< MyShaderCallback > callback=0)
void SetCameraProperties(double cameraPosition[3]=CAMERAPOSITION, double focalPoint[3]=FOCALPOINT, double viewUp[3]=CAMERAVIEWUP, double zoom=ZOOM)