MeshLib C++ Docs
Loading...
Searching...
No Matches
MR::ImGuiMenu Class Reference

#include <ImGuiMenu.h>

+ Inheritance diagram for MR::ImGuiMenu:

Classes

struct  LabelParams
 
struct  SelectionInformationStyle
 style constants used for the information panel More...
 
struct  TagEditorState
 state for the Edit Tag modal dialog More...
 
class  UiRenderManagerImpl
 

Public Types

enum class  NameTagSelectionMode { NameTagSelectionMode::selectOne , NameTagSelectionMode::toggle }
 
using NameTagClickSignal = boost::signals2::signal<bool( Object& object, NameTagSelectionMode mode ), StopOnTrueCombiner>
 
using DrawSceneUiSignal = boost::signals2::signal<void( ViewportId viewportId, UiRenderParams::UiTaskList& tasks )>
 

Public Member Functions

virtual MRVIEWER_API void init (MR::Viewer *_viewer) override
 This function is called when the viewer is initialized (no mesh will be loaded at this stage)
 
virtual MRVIEWER_API void initBackend ()
 inits glfw and glsl backend
 
virtual MRVIEWER_API void startFrame ()
 call this to validate imgui context in the begining of the frame
 
virtual MRVIEWER_API void finishFrame ()
 call this to draw valid imgui context at the end of the frame
 
virtual MRVIEWER_API void load_font (int font_size=13)
 
virtual MRVIEWER_API void reload_font (int font_size=13)
 
virtual MRVIEWER_API void shutdown () override
 This function is called before shutdown.
 
virtual MRVIEWER_API void draw_menu ()
 Draw menu.
 
MRVIEWER_API void draw_helpers ()
 
virtual MRVIEWER_API void draw_viewer_window ()
 Can be overwritten by callback_draw_viewer_window
 
virtual void draw_custom_window ()
 Can be overwritten by callback_draw_custom_window
 
void draw_labels_window ()
 
MRVIEWER_API void draw_text (const Viewport &viewport, const Vector3f &pos, const Vector3f &normal, const std::string &text, const Color &color, bool clipByViewport)
 
MRVIEWER_API float pixel_ratio ()
 
MRVIEWER_API float hidpi_scaling ()
 
MRVIEWER_API float menu_scaling () const
 
float getUserScaling () const
 returns UI scaling modifier specified by user
 
MRVIEWER_API void setUserScaling (float scaling)
 sets UI scaling modifier specified by user
 
MRVIEWER_API ImGuiContext * getCurrentContext () const
 
ImGuiWindow * getLastFocusedPlugin () const
 
virtual MRVIEWER_API void showModalMessage (const std::string &msg, NotificationType msgType)
 opens Error / Warning / Info modal window with message text
 
virtual MRVIEWER_API std::filesystem::path getMenuFontPath () const
 
MRVIEWER_API void setDrawTimeMillisecThreshold (long long maxGoodTimeMillisec)
 setup maximum good time for frame rendering (if rendering is slower it will become red in statistics window)
 
MRVIEWER_API void draw_scene_list ()
 Draw scene list window with content.
 
MRVIEWER_API void draw_scene_list_content (const std::vector< std::shared_ptr< Object > > &selected, const std::vector< std::shared_ptr< Object > > &all)
 Draw scene list content only.
 
virtual MRVIEWER_API void draw_selection_properties (const std::vector< std::shared_ptr< Object > > &selected)
 
virtual MRVIEWER_API void draw_selection_properties_content (const std::vector< std::shared_ptr< Object > > &selected)
 
virtual MRVIEWER_API bool drawCollapsingHeader_ (const char *label, ImGuiTreeNodeFlags flags=0)
 override this to have custom UI in "Selection Properties" window (under "Draw Options")
 
virtual MRVIEWER_API bool drawCollapsingHeaderTransform_ ()
 override this to customize appearance of collapsing headers for transform block
 
bool make_visualize_checkbox (std::vector< std::shared_ptr< VisualObject > > selectedVisualObjs, const char *label, AnyVisualizeMaskEnum type, MR::ViewportMask viewportid, bool invert=false)
 
template<typename ObjectT >
void make_color_selector (std::vector< std::shared_ptr< ObjectT > > selectedVisualObjs, const char *label, std::function< Vector4f(const ObjectT *)> getter, std::function< void(ObjectT *, const Vector4f &)> setter)
 
template<typename ObjType , typename ValueT >
void make_width (std::vector< std::shared_ptr< VisualObject > > selectedVisualObjs, const char *label, std::function< ValueT(const ObjType *)> getter, std::function< void(ObjType *, const ValueT &)> setter)
 
void make_light_strength (std::vector< std::shared_ptr< VisualObject > > selectedVisualObjs, const char *label, std::function< float(const VisualObject *)> getter, std::function< void(VisualObject *, const float &)> setter)
 
template<typename T , typename ObjectType >
void make_slider (std::vector< std::shared_ptr< ObjectType > > selectedVisualObjs, const char *label, std::function< T(const ObjectType *)> getter, std::function< void(ObjectType *, T)> setter, T min, T max)
 
void make_points_discretization (std::vector< std::shared_ptr< VisualObject > > selectedVisualObjs, const char *label, std::function< int(const ObjectPointsHolder *)> getter, std::function< void(ObjectPointsHolder *, const int &)> setter)
 
std::shared_ptr< ShortcutManagergetShortcutManager ()
 
MRVIEWER_API void add_modifier (std::shared_ptr< MR::MeshModifier > modifier)
 
MRVIEWER_API void allowSceneReorder (bool allow)
 
bool checkPossibilityObjectRemoval ()
 
MRVIEWER_API void allowObjectsRemoval (bool allow)
 
MRVIEWER_API void tryRenameSelectedObject ()
 
MRVIEWER_API void setObjectTreeState (const Object *obj, bool open)
 
MRVIEWER_API void expandObjectTreeAndScroll (const Object *obj)
 expands all objs parents in tree and scroll scene tree window so selection becomes visible
 
MRVIEWER_API void setShowShortcuts (bool val)
 set show shortcuts state (enable / disable)
 
MRVIEWER_API bool getShowShortcuts () const
 return show shortcuts state (enable / disable)
 
void enableSavedDialogPositions (bool on)
 enables using of saved positions of plugin windows in the config file
 
bool isSavedDialogPositionsEnabled () const
 returns true if enabled using of saved positions of plugin windows in the config file, false otherwise
 
virtual MRVIEWER_API UiRenderManagergetUiRenderManager ()
 This class helps the viewer to renderUi() from IRenderObjects.
 
MRVIEWER_API const std::shared_ptr< SceneObjectsListDrawer > & getSceneObjectsList ()
 
MRVIEWER_API bool simulateNameTagClick (Object &object, NameTagSelectionMode mode)
 Behaves as if the user clicked the object name tag, by invoking nameTagClickSignal.
 
MRVIEWER_API bool simulateNameTagClickWithKeyboardModifiers (Object &object)
 This version uses the currently held keyboard modifiers instead of a custom mode.
 
MRVIEWER_API bool anyImGuiWindowIsHovered () const
 Scene pick should be disabled because an ImGui window is in the way.
 
MRVIEWER_API bool anyUiObjectIsHovered () const
 Scene pick should be disabled because a renderUi() UI of some object is in the way.
 
MRVIEWER_API SelectedTypesMask calcSelectedTypesMask (const std::vector< std::shared_ptr< Object > > &selectedObjs)
 
MRVIEWER_API bool drawGeneralOptions (const std::vector< std::shared_ptr< Object > > &selectedObjs)
 
MRVIEWER_API bool drawAdvancedOptions (const std::vector< std::shared_ptr< VisualObject > > &selectedObjs, SelectedTypesMask selectedMask)
 
MRVIEWER_API bool drawRemoveButton (const std::vector< std::shared_ptr< Object > > &selectedObjs)
 
MRVIEWER_API bool drawDrawOptionsCheckboxes (const std::vector< std::shared_ptr< VisualObject > > &selectedObjs, SelectedTypesMask selectedMask)
 
MRVIEWER_API bool drawDrawOptionsColors (const std::vector< std::shared_ptr< VisualObject > > &selectedObjs)
 
- Public Member Functions inherited from MR::ViewerPlugin
virtual ~ViewerPlugin ()
 
- Public Member Functions inherited from MR::MultiListener< MouseDownListener, MouseMoveListener, MouseUpListener, MouseScrollListener, CursorEntranceListener, CharPressedListener, KeyDownListener, KeyUpListener, KeyRepeatListener, SpaceMouseMoveListener, SpaceMouseDownListener, TouchpadRotateGestureBeginListener, TouchpadRotateGestureUpdateListener, TouchpadRotateGestureEndListener, TouchpadSwipeGestureBeginListener, TouchpadSwipeGestureUpdateListener, TouchpadSwipeGestureEndListener, TouchpadZoomGestureBeginListener, TouchpadZoomGestureUpdateListener, TouchpadZoomGestureEndListener, PostResizeListener, PostRescaleListener, PostFocusListener >
virtual ~MultiListener ()=default
 
virtual void connect (Viewer *viewer, int group=0, boost::signals2::connect_position pos=boost::signals2::connect_position::at_back)
 
virtual void disconnect ()
 

Static Public Member Functions

static MRVIEWER_API const std::shared_ptr< ImGuiMenu > & instance ()
 

Public Attributes

std::function< void(void)> callback_draw_viewer_window
 Easy-to-customize callbacks.
 
std::function< void(void)> callback_draw_viewer_menu
 
std::function< void(void)> callback_draw_custom_window
 
NameTagClickSignal nameTagClickSignal
 This is triggered whenever a name tag of an object is clicked.
 
DrawSceneUiSignal drawSceneUiSignal
 This is called every frame for every viewport. Use this to draw UI bits on top of the scene.
 

Protected Types

enum class  CoordType : int { CoordType::Local , CoordType::World }
 
enum  ViewportConfigurations { Single , Horizontal , Vertical , Quad }
 

Protected Member Functions

virtual MRVIEWER_API void setupShortcuts_ ()
 
Vector4f getStoredColor_ (const std::string &str, const Color &defaultColor) const
 
virtual MRVIEWER_API void drawModalMessage_ ()
 
virtual MRVIEWER_API bool onMouseDown_ (MouseButton button, int modifier) override
 Mouse IO.
 
virtual MRVIEWER_API bool onMouseUp_ (MouseButton button, int modifier) override
 
virtual MRVIEWER_API bool onMouseMove_ (int mouse_x, int mouse_y) override
 
virtual MRVIEWER_API bool onMouseScroll_ (float delta_y) override
 
virtual MRVIEWER_API void cursorEntrance_ (bool entered) override
 
virtual MRVIEWER_API bool onCharPressed_ (unsigned key, int modifiers) override
 Keyboard IO.
 
virtual MRVIEWER_API bool onKeyDown_ (int key, int modifiers) override
 
virtual MRVIEWER_API bool onKeyUp_ (int key, int modifiers) override
 
virtual MRVIEWER_API bool onKeyRepeat_ (int key, int modifiers) override
 
virtual MRVIEWER_API void postResize_ (int width, int height) override
 Scene events.
 
virtual MRVIEWER_API void postRescale_ (float x, float y) override
 
virtual MRVIEWER_API bool spaceMouseMove_ (const Vector3f &translate, const Vector3f &rotate) override
 Spacemouse events.
 
virtual MRVIEWER_API bool spaceMouseDown_ (int key) override
 
virtual MRVIEWER_API bool touchpadRotateGestureBegin_ () override
 Touchpad gesture events.
 
virtual MRVIEWER_API bool touchpadRotateGestureUpdate_ (float angle) override
 
virtual MRVIEWER_API bool touchpadRotateGestureEnd_ () override
 
virtual MRVIEWER_API bool touchpadSwipeGestureBegin_ () override
 
virtual MRVIEWER_API bool touchpadSwipeGestureUpdate_ (float deltaX, float deltaY, bool kinetic) override
 
virtual MRVIEWER_API bool touchpadSwipeGestureEnd_ () override
 
virtual MRVIEWER_API bool touchpadZoomGestureBegin_ () override
 
virtual MRVIEWER_API bool touchpadZoomGestureUpdate_ (float scale, bool kinetic) override
 
virtual MRVIEWER_API bool touchpadZoomGestureEnd_ () override
 
virtual MRVIEWER_API void postFocus_ (bool focused) override
 Other events.
 
virtual MRVIEWER_API void rescaleStyle_ ()
 
MRVIEWER_API float drawSelectionInformation_ ()
 
MRVIEWER_API void drawFeaturePropertiesEditor_ (const std::shared_ptr< Object > &object)
 
MRVIEWER_API void drawComparablePropertiesEditor_ (ObjectComparableWithReference &object)
 
virtual MRVIEWER_API void drawCustomSelectionInformation_ (const std::vector< std::shared_ptr< Object > > &selected, const SelectionInformationStyle &style)
 draw additional selection information (e.g. for custom objects)
 
virtual MRVIEWER_API void draw_custom_selection_properties (const std::vector< std::shared_ptr< Object > > &selected)
 
MRVIEWER_API void drawTagInformation_ (const std::vector< std::shared_ptr< Object > > &selected)
 
MRVIEWER_API float drawTransform_ ()
 
virtual MRVIEWER_API bool drawTransformContextMenu_ (const std::shared_ptr< Object > &)
 
virtual MRVIEWER_API void drawShortcutsWindow_ ()
 A virtual function for drawing of the dialog with shortcuts. It can be overriden in the inherited classes.
 
MRVIEWER_API float getSceneInfoItemWidth_ (int itemCount=1)
 returns width of items in Scene Info window
 

Protected Attributes

float hidpi_scaling_
 Hidpi scaling to be used for text rendering.
 
float pixel_ratio_
 
float userScaling_ = 1.0f
 user defined additional scaling modifier
 
ImGuiContext * context_ = nullptr
 ImGui Context.
 
ImGuiWindow * prevFrameFocusPlugin_ = nullptr
 last focused plugin window
 
bool pollEventsInPreDraw = false
 if true, then pre_draw will start from polling glfw events
 
bool showShortcuts_ { false }
 be careful here with true, this can cause infinite recurse
 
bool showStatistics_ { false }
 
long long frameTimeMillisecThreshold_ { 25 }
 
bool showRenameModal_ { false }
 
std::string renameBuffer_
 
std::string popUpRenameBuffer_
 
bool needModalBgChange_ { false }
 
bool showInfoModal_ { false }
 
std::string storedModalMessage_
 
NotificationType modalMessageType_ { NotificationType::Error }
 
std::shared_ptr< ShortcutManagershortcutManager_
 
ImVec2 sceneWindowPos_
 
ImVec2 sceneWindowSize_
 
ImVec2 mainWindowPos_
 
ImVec2 mainWindowSize_
 
bool savedDialogPositionEnabled_ { false }
 
std::weak_ptr< ObjectlastRenameObj_
 
Box3f selectionLocalBox_
 
Box3f selectionWorldBox_
 updated in drawSelectionInformation_
 
enum MR::ImGuiMenu::CoordType Local
 
struct MR::ImGuiMenu::LabelParams oldLabelParams_
 
bool allowRemoval_ { true }
 
bool uniformScale_ { true }
 
bool xfHistUpdated_ { false }
 
bool invertedRotation_ { false }
 
std::optional< std::pair< std::string, Vector4f > > storedColor_
 
std::string searchPluginsString_
 
std::vector< std::shared_ptr< MR::MeshModifier > > modifiers_
 
enum MR::ImGuiMenu::ViewportConfigurations Single
 
bool selectionChangedToSingleObj_ { false }
 flag to correctly update scroll on transform window appearing
 
ViewportId selectedViewport_ = {}
 menu will change objects' colors in this viewport
 
std::weak_ptr< ObjecteditedFeatureObject_
 When editing feature properties, this is the target object.
 
AffineXf3f editedFeatureObjectOldXf_
 When editing feature properties, this is the original xf of the target object, for history purposes.
 
TagEditorState tagEditorState_
 
bool showEditTag_ = false
 whether to open the Edit Tag modal dialog
 
std::string tagNewName_
 buffer string for the tag name input widget
 
bool capturedMouse_ { false }
 
std::unique_ptr< UiRenderManagerImpluiRenderManager_
 This class helps the viewer to renderUi() from IRenderObjects.
 
std::shared_ptr< SceneObjectsListDrawersceneObjectsList_
 
- Protected Attributes inherited from MR::ViewerPlugin
Viewerviewer = &getViewerInstance()
 Pointer to the main Viewer class.
 

The documentation for this class was generated from the following file: