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);
48 int key,
int scancode,
int action,
int modifiers)
50 if (Screen::keyboardEvent(key, scancode, action, modifiers))
return true;
68 glGetIntegerv(GL_VIEWPORT, win_dims);
75 "Fatal error: there is no 'main' viewport in the 3D scene!");
81 win_dims[2], win_dims[3], win_dims[0], win_dims[1]);
83 catch (
const std::exception& e)
85 std::cerr <<
"[CDisplayWindowGUI::drawContents] Exception:\n" 92 Screen::setSize({width, height});
99 Screen::setCaption(str);
103 const nanogui::Vector2i& p,
int button,
bool down,
int modifiers)
105 if (!Screen::mouseButtonEvent(p, button, down, modifiers))
112 const nanogui::Vector2i& p,
const nanogui::Vector2i& rel,
int button,
115 if (!Screen::mouseMotionEvent(p, rel, button, modifiers))
122 const nanogui::Vector2i& p,
const nanogui::Vector2f& rel)
129 #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
mrpt::vision::TCalibrationStereoImageList images
#define THROW_EXCEPTION(msg)
void scrollEvent(const nanogui::Vector2i &p, const nanogui::Vector2f &rel)
void resize(unsigned int width, unsigned int height)
Resizes the window.
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)