MeshLib C++ Docs
Loading...
Searching...
No Matches
MRViewerSettingsPlugin.h
Go to the documentation of this file.
1#pragma once
2
7#include "MRMesh/MRVector4.h"
8#include "MRCommonPlugins/exports.h"
10
11namespace MR
12{
13
14class MRVIEWER_CLASS ViewerSettingsPlugin : public StatePlugin
15{
16public:
17
18 enum class TabType
19 {
20 Quick,
21 Application,
22 Control,
24 MeasurementUnits,
25 Features,
26 Count
27 };
28
30
31 virtual void drawDialog( float menuScaling, ImGuiContext* ctx ) override;
32
33 virtual bool blocking() const override { return false; }
34
35 // call this function if you save/delete color theme, or change current theme outside of this plugin
36 MRVIEWER_API void updateThemes();
37
38 // basic class of external settings
40 {
41 public:
42 virtual ~ExternalSettings() {}
43 // returns the name of the setting, which is a unique value
44 virtual const std::string& getName() const = 0;
45 // the function of drawing the configuration UI
46 virtual void draw( float menuScaling ) = 0;
47 // restore the settings to their default values
48 virtual void reset() {}
49 // if not overriden this setting will be drawn in tools block
50 virtual const char* separatorName() const { return "Tools"; }
51 };
52
54 MRVIEWER_API void addComboSettings( const TabType tab, std::shared_ptr<ExternalSettings> settings );
55
57 MRVIEWER_API void delComboSettings( const TabType tab, const ExternalSettings * settings );
58
61 MRVIEWER_API static ViewerSettingsPlugin* instance();
62
64 MRVIEWER_API void setActiveTab( TabType tab );
65private:
66 virtual bool onEnable_() override;
67 virtual bool onDisable_() override;
68
69 void drawTab_( float menuWidth, float menuScaling );
70
71 void drawQuickTab_( float menuWidth, float menuScaling );
72 void drawApplicationTab_( float menuWidth, float menuScaling );
73 void drawControlTab_( float menuWidth, float menuScaling );
74 void drawViewportTab_( float menuWidth, float menuScaling );
75 void drawMeasurementUnitsTab_( float menuScaling );
76 void drawFeaturesTab_( float menuScaling );
77
78 void drawThemeSelector_( float menuScaling );
79 void drawResetDialog_( bool activated, float menuScaling );
80 void drawShadingModeCombo_( bool inGroup, float menuScaling, float toolWidth );
81 void drawProjectionModeSelector_( float menuScaling, float toolWidth );
82 void drawUpDirectionSelector_();
83 void drawBackgroundButton_( bool allViewports );
84 void drawRenderOptions_( float menuScaling );
85 void drawShadowsOptions_( float menuWidth, float menuScaling );
86 void drawMouseSceneControlsSettings_( float menuWidth, float menuScaling );
87 void drawSpaceMouseSettings_( float menuWidth, float menuScaling );
88 void drawTouchpadSettings_( float menuScaling );
89
90 void drawMruInnerFormats_( float menuWidth, float menuScaling );
91
92 void drawGlobalSettings_( float buttonWidth, float menuScaling );
93 void drawCustomSettings_( const std::string& separatorName, bool needSeparator, float menuScaling );
94 void drawSeparator_( const std::string& separatorName, float menuScaling );
95
96
97 void updateDialog_();
98 void resetSettings_();
99
100 int curSamples_{ 0 };
101 int storedSamples_{ 0 };
102 int maxSamples_{ 0 };
103 bool needReset_{ false };
104#ifndef __EMSCRIPTEN__
105 bool gpuOverridesMSAA_{ false };
106#endif
107
108 Vector4f backgroundColor_;
109
110 int selectedUserPreset_{ 0 };
111 std::vector<std::string> userThemesPresets_;
112
113 std::unique_ptr<ShadowsGL> shadowGl_;
114
115 SpaceMouseParameters spaceMouseParams_;
116#if defined(_WIN32) || defined(__APPLE__)
117 bool activeMouseScrollZoom_{ false };
118#endif
119
120 TouchpadParameters touchpadParameters_;
121
122 TabType activeTab_ = TabType::Quick;
123 TabType orderedTab_ = TabType::Count; // invalid
124
125 std::array<std::vector<std::shared_ptr<ExternalSettings>>, size_t(TabType::Count)> comboSettings_;
126
127 MruFormatParameters mruFormatParameters_;
128};
129
130}
Definition MRViewerFwd.h:60
Definition MRViewerSettingsPlugin.h:40
virtual const std::string & getName() const =0
virtual void reset()
Definition MRViewerSettingsPlugin.h:48
virtual void draw(float menuScaling)=0
virtual ~ExternalSettings()
Definition MRViewerSettingsPlugin.h:42
virtual const char * separatorName() const
Definition MRViewerSettingsPlugin.h:50
Definition MRViewerSettingsPlugin.h:15
MRVIEWER_API void delComboSettings(const TabType tab, const ExternalSettings *settings)
delete external settings with UI combo box
MRVIEWER_API void setActiveTab(TabType tab)
changes active tab
virtual void drawDialog(float menuScaling, ImGuiContext *ctx) override
virtual bool blocking() const override
Definition MRViewerSettingsPlugin.h:33
MRVIEWER_API void addComboSettings(const TabType tab, std::shared_ptr< ExternalSettings > settings)
add external settings with UI combo box
MRVIEWER_API void updateThemes()
static MRVIEWER_API ViewerSettingsPlugin * instance()
TabType
Definition MRViewerSettingsPlugin.h:19
Definition MRViewport.h:46