#include "PostGraphObjectLight.h" #include "FITK_Component/FITKRenderWindowVTK/FITKGraph3DWindowVTK.h" #include "FITK_Interface/FITKInterfaceCFDPost/FITKCFDPostLight.h" #include #include #include namespace Interface { PostGraphObjectLight::PostGraphObjectLight(FITKCFDPostLight* lightData, Comp::FITKGraph3DWindowVTK* graph3DWidget) : _lightData(lightData), _graph3DWidget(graph3DWidget) { if (_graph3DWidget == nullptr || _lightData == nullptr)return; vtkRenderer* render = _graph3DWidget->getVTKRenderer(0); if (render == nullptr)return; _VTKLight = vtkLight::New(); _VTKLight->SwitchOn(); _VTKLight->SetIntensity(1); render->AddLight(_VTKLight); } PostGraphObjectLight::~PostGraphObjectLight() { if (_graph3DWidget) { vtkRenderer* render = _graph3DWidget->getVTKRenderer(0); if (render)render->RemoveLight(_VTKLight); } if (_VTKLight) { _VTKLight->Delete(); _VTKLight = nullptr; } } void PostGraphObjectLight::update() { if (_VTKLight == nullptr || _lightData == nullptr)return; switch (_lightData->getLightType()) { case Interface::FITKPostLightType::Post_Positional: { _VTKLight->SetPositional(true); break; } case Interface::FITKPostLightType::Post_Direction: { _VTKLight->SetPositional(false); break; } } double position[3] = { 0,0,0 }, focalPoint[3] = { 0,0,0 }, color[3] = { 0,0,0 }, coneAngle = 0.0; _lightData->getPosition(position); _VTKLight->SetPosition(position); _lightData->getFocalPoint(focalPoint); _VTKLight->SetFocalPoint(focalPoint); coneAngle = _lightData->getConeAngle(); _VTKLight->SetConeAngle(coneAngle); _lightData->getColor(color); _VTKLight->SetColor(color[0], color[1], color[2]); } FITKCFDPostLight* PostGraphObjectLight::getLightData() { return _lightData; } }