627 vtkCommand::TimerEvent == eventId
653 for (
auto & subframe: frame->subframes)
654 subframe.renderer->RemoveAllViewProps();
656 frame->window->Finalize();
669 framepair.second->RTAddFigures();
675 auto frame=framepair.second;
677 if(frame->mainthread->communication_blocked)
678 frame->title_actor->SetText(6,
"-|-");
680 frame->title_actor->SetText(6,
"---");
682 frame->title_actor->Modified();
686 frame->window->Render();
687 if (frame->videowriter && ! frame->mainthread->communication_blocked)
690 auto imgfilter = vtkSmartPointer<vtkWindowToImageFilter>::New();
691 imgfilter->SetInput(frame->window);
693 frame->videowriter->SetInputConnection(imgfilter->GetOutputPort());
695 frame->videowriter->Write();
706 auto imgfilter = vtkSmartPointer<vtkWindowToImageFilter>::New();
707 auto pngwriter = vtkSmartPointer<vtkPNGWriter>::New();
709 pngwriter->SetInputConnection(imgfilter->GetOutputPort());
710 pngwriter->SetFileName(frame->parameter.filename.c_str());
712 imgfilter->SetInput(frame->window);
725 frame->videowriter = vtkSmartPointer<vtkOggTheoraWriter>::New();
726 frame->videowriter->SetFileName(frame->parameter.filename.c_str());
727 frame->videowriter->Start();
734 frame->videowriter->End();
735 frame->videowriter=0;
742 frame->RTRemoveFigure(frame->parameter.current_figure);
750 frame->RTSetLayout(frame->parameter.nvpx,frame->parameter.nvpy);
751 frame->RTResetRenderers(
false);
758 frame->window->SetSize(frame->parameter.winsize_x, frame->parameter.winsize_y);
766 frame->RTSetActiveSubFrame(frame->parameter.active_subframe,
false);
774 auto& subframe=frame->subframes[frame->parameter.active_subframe];
775 frame->RTSetActiveSubFrameCameraViewAngle(subframe,frame->parameter.camera_view_angle);
783 auto& subframe=frame->subframes[frame->parameter.active_subframe];
784 frame->RTSetActiveSubFrameCameraPosition(subframe,frame->parameter.camera_position);
792 auto& subframe=frame->subframes[frame->parameter.active_subframe];
793 frame->RTSetActiveSubFrameCameraFocalPoint(subframe,frame->parameter.camera_focal_point);
800 frame->RTSetSingleView(frame->parameter.single_subframe_view);
810 frame->window->SetPosition(frame->parameter.winposition_x, frame->parameter.winposition_y);
819 frame->title_actor->SetText(7,frame->parameter.frametitle.c_str());
820 frame->title_actor->Modified();
829 frame->window->SetWindowName(frame->parameter.wintitle.c_str());
838 auto lrenderer=
mainthread->
framemap[frame->parameter.camlinkframenum]->subframes[frame->parameter.camlinkframepos].renderer;
839 renderer->SetActiveCamera(lrenderer->GetActiveCamera());
848 framepair.second->window->Finalize();
bool communication_blocked
space down state ?
vtkSmartPointer< vtkRenderWindowInteractor > interactor
Communicator::Command cmd
Communication command.
std::condition_variable condition_variable
Condition variable signalizing finished command.
std::mutex mutex
Mutex to organize communication.
vtkSmartPointer< vtkRenderWindowInteractor > Interactor
std::map< int, Frame * > framemap
Map of all frames handeled by thread.
bool running_multithreaded
Thread state.
int iframe
Frame number as parameter during communication.
static void RTAddFrame(MainThread *mt, int iframe)
Add frame, to be called from render thread.