21 const std::string& caption,
unsigned int width,
unsigned int height,
24 Eigen::Vector2i(width, height), caption, p.resizable, p.fullscreen,
25 p.colorBits, p.alphaBits, p.depthBits, p.stencilBits, p.nSamples,
26 p.glMajor, p.glMinor, p.maximized)
35 #if GLFW_VERSION_MAJOR > 3 || \ 36 (GLFW_VERSION_MAJOR == 3 && GLFW_VERSION_MINOR >= 2) 37 glfwSetWindowIcon(screen()->glfwWindow(), 1, &
images);
44 nanogui::Screen::setVisible(
false);
60 glGetIntegerv(GL_VIEWPORT, win_dims);
67 "Fatal error: there is no 'main' viewport in the 3D scene!");
73 win_dims[2], win_dims[3], win_dims[0], win_dims[1]);
75 catch (
const std::exception& e)
77 std::cerr <<
"[CDisplayWindowGUI::drawContents] Exception:\n" 84 Screen::setSize({width, height});
91 Screen::setCaption(str);
95 const nanogui::Vector2i& p,
int button,
bool down,
int modifiers)
97 if (!Screen::mouseButtonEvent(p, button, down, modifiers))
104 const nanogui::Vector2i& p,
const nanogui::Vector2i& rel,
int button,
107 if (!Screen::mouseMotionEvent(p, rel, button, modifiers))
114 const nanogui::Vector2i& p,
const nanogui::Vector2f& rel)
130 int key,
int scancode,
int action,
int modifiers)
135 if (Screen::keyboardEvent(key, scancode, action, modifiers))
return true;
141 #endif // MRPT_HAS_NANOGUI virtual bool mouseMotionEvent(const nanogui::Vector2i &p, const nanogui::Vector2i &rel, int button, int modifiers) override
std::function< void(void)> m_loopCallback
std::function< bool(const std::vector< std::string > &)> m_dropFilesCallback
mrpt::vision::TCalibrationStereoImageList images
#define THROW_EXCEPTION(msg)
void scrollEvent(const nanogui::Vector2i &p, const nanogui::Vector2f &rel)
std::function< bool(int, int, int, int)> m_keyboardCallback
void resize(unsigned int width, unsigned int height)
Resizes the window.
virtual bool dropEvent(const std::vector< std::string > &filenames) override
virtual ~CDisplayWindowGUI() override
void setWindowTitle(const std::string &str)
Changes the window title.
CDisplayWindowGUI(const std::string &caption=std::string(), unsigned int width=400, unsigned int height=300, const CDisplayWindowGUI_Params &p=CDisplayWindowGUI_Params())
void render(const RenderContext &rc) const override
Render does nothing here.
virtual bool scrollEvent(const nanogui::Vector2i &p, const nanogui::Vector2f &rel) override
std::mutex background_scene_mtx
internal::NanoGUICanvasHeadless m_background_canvas
Used to keep track of mouse events on the camera.
void setPos(int x, int y)
Changes the position of the window on the screen.
mrpt::opengl::COpenGLScene::Ptr background_scene
void mouseButtonEvent(const nanogui::Vector2i &p, int button, bool down, int modifiers)
virtual void drawContents() override
Additional parameters to change the window behavior and OpenGL context.
virtual bool keyboardEvent(int key, int scancode, int action, int modifiers) override
std::string exception_to_str(const std::exception &e)
Builds a nice textual representation of a nested exception, which if generated using MRPT macros (THR...
unsigned char * default_mrpt_glfw_icon()
Returns the default MRPT icon data, as a 64x64 RGBA (32 bit/pixel) image, compatible with GLFW...
virtual bool mouseButtonEvent(const nanogui::Vector2i &p, int button, bool down, int modifiers) override
Classes for creating GUI windows for 2D and 3D visualization.
A camera: if added to a scene, the viewpoint defined by this camera will be used instead of the camer...
void mouseMotionEvent(const nanogui::Vector2i &p, const nanogui::Vector2i &rel, int button, int modifiers)
mrpt::opengl::CCamera & updateCameraParams(mrpt::opengl::CCamera &cam) const
This function gets a reference to mrpt::opengl::CCamera and updates the camera parameters(pointing, zoom, azimuth, elevation, IsProjective, FOV)