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 const std::string& uiName() const override;
32
33 virtual void drawDialog( float menuScaling, ImGuiContext* ctx ) override;
34
35 virtual bool blocking() const override { return false; }
36
37 // call this function if you save/delete color theme, or change current theme outside of this plugin
38 MRVIEWER_API void updateThemes();
39
40 // basic class of external settings
42 {
43 public:
44 virtual ~ExternalSettings() {}
45 // returns the name of the setting, which is a unique value
46 virtual const std::string& getName() const = 0;
47 // the function of drawing the configuration UI
48 virtual void draw( float menuScaling ) = 0;
49 // restore the settings to their default values
50 virtual void reset() {}
51 // if not overriden this setting will be drawn in tools block
52 virtual const char* separatorName() const { return "Tools"; }
53 };
54
56 MRVIEWER_API void addComboSettings( const TabType tab, std::shared_ptr<ExternalSettings> settings );
57
59 MRVIEWER_API void delComboSettings( const TabType tab, const ExternalSettings * settings );
60
63 MRVIEWER_API static ViewerSettingsPlugin* instance();
64
66 MRVIEWER_API void setActiveTab( TabType tab );
67private:
68 virtual bool onEnable_() override;
69 virtual bool onDisable_() override;
70
71 void drawTab_( float menuWidth, float menuScaling );
72
73 void drawQuickTab_( float menuWidth, float menuScaling );
74 void drawApplicationTab_( float menuWidth, float menuScaling );
75 void drawControlTab_( float menuWidth, float menuScaling );
76 void drawViewportTab_( float menuWidth, float menuScaling );
77 void drawMeasurementUnitsTab_( float menuScaling );
78 void drawFeaturesTab_( float menuScaling );
79
80 void drawThemeSelector_( float menuScaling );
81 void drawResetDialog_( bool activated, float menuScaling );
82 void drawShadingModeCombo_( bool inGroup, float menuScaling, float toolWidth );
83 void drawProjectionModeSelector_( float menuScaling, float toolWidth );
84 void drawUpDirectionSelector_();
85 void drawBackgroundButton_( bool allViewports );
86 void drawRenderOptions_( float menuScaling );
87 void drawShadowsOptions_( float menuWidth, float menuScaling );
88 void drawMouseSceneControlsSettings_( float menuWidth, float menuScaling );
89 void drawSpaceMouseSettings_( float menuWidth, float menuScaling );
90 void drawTouchpadSettings_( float menuScaling );
91
92 void drawMruInnerFormats_( float menuWidth, float menuScaling );
93
94 void drawGlobalSettings_( float buttonWidth, float menuScaling );
95 void drawCustomSettings_( const std::string& separatorName, bool needSeparator, float menuScaling );
96 void drawSeparator_( const std::string& separatorName, float menuScaling );
97
98
99 void updateDialog_();
100 void resetSettings_();
101
102 int curSamples_{ 0 };
103 int storedSamples_{ 0 };
104 int maxSamples_{ 0 };
105 bool needReset_{ false };
106#ifndef __EMSCRIPTEN__
107 bool gpuOverridesMSAA_{ false };
108#endif
109
110 Vector4f backgroundColor_;
111
112 int selectedUserPreset_{ 0 };
113 std::vector<std::string> userThemesPresets_;
114
115 std::unique_ptr<ShadowsGL> shadowGl_;
116
117 SpaceMouseParameters spaceMouseParams_;
118#if defined(_WIN32) || defined(__APPLE__)
119 bool activeMouseScrollZoom_{ false };
120#endif
121
122 TouchpadParameters touchpadParameters_;
123
124 TabType activeTab_ = TabType::Quick;
125 TabType orderedTab_ = TabType::Count; // invalid
126
127 std::array<std::vector<std::shared_ptr<ExternalSettings>>, size_t(TabType::Count)> comboSettings_;
128
129 MruFormatParameters mruFormatParameters_;
130};
131
132}
Definition MRViewerFwd.h:60
Definition MRViewerSettingsPlugin.h:42
virtual const std::string & getName() const =0
virtual void reset()
Definition MRViewerSettingsPlugin.h:50
virtual void draw(float menuScaling)=0
virtual ~ExternalSettings()
Definition MRViewerSettingsPlugin.h:44
virtual const char * separatorName() const
Definition MRViewerSettingsPlugin.h:52
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:35
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()
virtual const std::string & uiName() const override
TabType
Definition MRViewerSettingsPlugin.h:19
Definition MRViewport.h:49