ImGuiMenu.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef IGL_OPENGL_GLFW_IMGUI_IMGUIMENU_H
  2. #define IGL_OPENGL_GLFW_IMGUI_IMGUIMENU_H
  3. ////////////////////////////////////////////////////////////////////////////////
  4. #include <igl/opengl/glfw/Viewer.h>
  5. #include <igl/opengl/glfw/ViewerPlugin.h>
  6. #include <igl/igl_inline.h>
  7. ////////////////////////////////////////////////////////////////////////////////
  8. // Forward declarations
  9. struct ImGuiContext;
  10. namespace igl
  11. {
  12. namespace opengl
  13. {
  14. namespace glfw
  15. {
  16. namespace imgui
  17. {
  18. class ImGuiMenu : public igl::opengl::glfw::ViewerPlugin
  19. {
  20. protected:
  21. // Hidpi scaling to be used for text rendering.
  22. float m_HidpiScaling;
  23. // Ratio between the framebuffer size and the window size.
  24. // May be different from the hipdi scaling!
  25. float m_PixelRatio;
  26. // ImGui Context
  27. ImGuiContext * m_Context = nullptr;
  28. public:
  29. IGL_INLINE virtual void init(igl::opengl::glfw::Viewer *_viewer) override;
  30. IGL_INLINE virtual void reload_font(int font_size = 13);
  31. IGL_INLINE virtual void shutdown() override;
  32. IGL_INLINE virtual bool pre_draw() override;
  33. IGL_INLINE virtual bool post_draw() override;
  34. IGL_INLINE virtual void post_resize(int width, int height) override;
  35. // Mouse IO
  36. IGL_INLINE virtual bool mouse_down(int button, int modifier) override;
  37. IGL_INLINE virtual bool mouse_up(int button, int modifier) override;
  38. IGL_INLINE virtual bool mouse_move(int mouse_x, int mouse_y) override;
  39. IGL_INLINE virtual bool mouse_scroll(float delta_y) override;
  40. // Keyboard IO
  41. IGL_INLINE virtual bool key_pressed(unsigned int key, int modifiers) override;
  42. IGL_INLINE virtual bool key_down(int key, int modifiers) override;
  43. IGL_INLINE virtual bool key_up(int key, int modifiers) override;
  44. // Draw menu
  45. IGL_INLINE virtual void draw_menu();
  46. IGL_INLINE virtual void draw_viewer_menu();
  47. IGL_INLINE virtual void draw_other_menu() { }
  48. IGL_INLINE void draw_labels_menu();
  49. IGL_INLINE void draw_labels(const igl::opengl::ViewerData &data);
  50. IGL_INLINE void draw_text(Eigen::Vector3d pos, Eigen::Vector3d normal, const std::string &text);
  51. IGL_INLINE float pixel_ratio();
  52. IGL_INLINE float hidpi_scaling();
  53. float menu_scaling() { return m_HidpiScaling / m_PixelRatio; }
  54. };
  55. } // end namespace
  56. } // end namespace
  57. } // end namespace
  58. } // end namespace
  59. #ifndef IGL_STATIC_LIBRARY
  60. # include "ImGuiMenu.cpp"
  61. #endif
  62. #endif // IGL_OPENGL_GLFW_IMGUI_IMGUIMENU_H