Overwrite keyboard callback.
Create list of currently edited figures. These are those the same subframe which means that they have the same renderer
370 std::string key = this->Interactor->GetKeySym();
388 if (subframe.renderer==this->CurrentRenderer)
393 this->Interactor->Render();
400 if (this->
frame->
subframes[figure->framepos].renderer==this->CurrentRenderer)
402 figure->state.wireframe=!figure->state.wireframe;
403 if (figure->state.wireframe)
404 for (
auto & actor: figure->actors) actor->GetProperty()->SetRepresentationToWireframe();
406 for (
auto& actor: figure->actors) actor->GetProperty()->SetRepresentationToSurface();
407 this->Interactor->Render();
417 auto now = std::chrono::system_clock::now();
418 auto time = std::chrono::system_clock::to_time_t(now);
419 std::tm * ttm = localtime(&time);
420 char time_str[] =
"yyyy-mm-ddTHH:MM:SS ";
421 strftime(time_str, strlen(time_str),
"%Y-%m-%dT%H:%M:%S", ttm);
424 auto imgfilter = vtkSmartPointer<vtkWindowToImageFilter>::New();
428 auto pngwriter = vtkSmartPointer<vtkPNGWriter>::New();
429 pngwriter->SetInputConnection(imgfilter->GetOutputPort());
430 pngwriter->SetFileName(fname.c_str());
432 this->Interactor->Render();
435 cout <<
"Frame written to "<< fname << endl;
439 else if (key ==
"x" || key==
"y" || key==
"z" || key==
"l" || key==
"a")
452 frame->
subframes[figure->framepos].renderer==this->CurrentRenderer
471 figure->RTProcessKey(key);
472 this->Interactor->Render();
477 else if(key ==
"Left" || key==
"Down")
481 for (
auto figure : this->edited_figures)
482 figure->RTProcessMove(-1,-1);
483 this->Interactor->Render();
488 else if(key ==
"Right" || key==
"Up")
492 for (
auto figure : this->edited_figures)
493 figure->RTProcessMove(1,1);
494 this->Interactor->Render();
499 else if(key ==
"Return" || key==
"Delete")
503 for (
auto figure : this->edited_figures)
504 figure->RTProcessKey(key);
505 this->Interactor->Render();
510 else if(key ==
"Escape")
513 for (
auto figure : this->edited_figures)
515 figure->RTProcessKey(key);
516 figure->RTMessage(
"");
518 this->Interactor->Render();
519 this->edited_figures.resize(0);
520 this->Interactor->Render();
524 else if(key ==
"I" || key==
"L" || key ==
"E" || key ==
"S" || key ==
"slash" || key ==
"B" || key ==
"C" || key ==
"O"|| key ==
"A")
527 if (
frame->
subframes[figure->framepos].renderer==this->CurrentRenderer)
528 figure->RTProcessKey(key);
530 this->Interactor->Render();
534 else if (key==
"space")
546 else if (key==
"BackSpace")
554 else if (key==
"asterisk")
565 this->Interactor->Render();
572 this->Interactor->Render();
578 this->Interactor->Render();
584 else if(key ==
"h" or key ==
"question")
592 vtkInteractorStyleTrackballCamera::OnChar();
void RTSetSingleView(bool single_viewport)
bool communication_blocked
space down state ?
internals::MainThread * mainthread
The spinning main thread.
void RTSetActiveSubFrame(int isub, bool hide_old)
Set visible subframe.
vtkSmartPointer< vtkRenderWindow > window
Window vontaining frame.
Frame * frame
Current frame.
struct vtkfig::Frame::@2 parameter
Parameters to be passed between threads.
bool edit_mode
Figure edit mode.
void RTResetCamera(SubFrame &sf)
reset camera to default position
std::set< Figure * > figures
List of all figures in frame.
std::vector< SubFrame > subframes
List of subframes.
vtkSmartPointer< vtkCornerAnnotation > title_actor
Actor for frame title annotation.
std::vector< Figure * > edited_figures
List of currently edited figures.
static constexpr const char * KeyboardHelp
Help string printed when pressing "h"/"?".
bool single_subframe_view