Skip to content

Commit 2de83a7

Browse files
committed
Add toggleAction to control idle rotation
1 parent 94896f9 commit 2de83a7

6 files changed

Lines changed: 42 additions & 12 deletions

File tree

src/Renderer/OpenGL/OpenGLRendererWidget.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ void OpenGLRendererWidget::setColors(std::vector<float>& colors)
2727
{
2828
makeCurrent();
2929
_volumeRenderer.setColors(colors);
30+
update();
3031
}
3132

3233
void OpenGLRendererWidget::setColormap(const QImage& colormap)
@@ -40,6 +41,16 @@ void OpenGLRendererWidget::setCursorPoint(mv::Vector3f cursorPoint)
4041
update();
4142
}
4243

44+
void OpenGLRendererWidget::setRotating(bool rotating)
45+
{
46+
if (_rotating != rotating) {
47+
_rotating = rotating;
48+
if (_rotating) {
49+
update();
50+
}
51+
}
52+
}
53+
4354
void OpenGLRendererWidget::initializeGL()
4455
{
4556
initializeOpenGLFunctions();
@@ -133,7 +144,6 @@ bool OpenGLRendererWidget::eventFilter(QObject* target, QEvent* event)
133144
_previousMousePos = mousePos;
134145

135146
_mousePressed = true;
136-
_rotating = false; // FIXME: improve interaction with roation
137147
break;
138148
}
139149
case QEvent::MouseMove:

src/Renderer/OpenGL/OpenGLRendererWidget.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class OpenGLRendererWidget : public QOpenGLWidget, QOpenGLFunctions_4_2_Core
2828
void setColors(std::vector<float>& colors);
2929
void setColormap(const QImage& colormap);
3030
void setCursorPoint(mv::Vector3f cursorPoint);
31-
31+
void setRotating(bool rotating);
3232

3333
public:
3434
bool eventFilter(QObject* target, QEvent* event);
@@ -51,6 +51,5 @@ class OpenGLRendererWidget : public QOpenGLWidget, QOpenGLFunctions_4_2_Core
5151

5252
bool _isInitialized = false;
5353

54-
// for rotation
55-
bool _rotating = true;
54+
bool _rotating = false;
5655
};

src/SettingsAction.cpp

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ SettingsAction::SettingsAction(QObject* parent, const QString& title) :
1616
_focusSelectionAction(this, "Focus Selection"),
1717
_focusFloodfillAction(this, "Focus Floodfill"),
1818
_focusSelectionNormAction(this, "SNorm"),
19-
_focusFloodfillNormAction(this, "FNorm")
19+
_focusFloodfillNormAction(this, "FNorm"),
20+
_idleRotationAction(this, "Idle Rotation")
2021
{
2122
GroupsAction::GroupActions groupActions;
2223

@@ -43,20 +44,25 @@ SettingsAction::SettingsAction(QObject* parent, const QString& title) :
4344
});
4445

4546
connect(&_focusSelectionAction, &ToggleAction::toggled, this, [this](const bool& toggled) {
46-
_plugin->setFocusSelection(toggled);
47+
_plugin->setFocusSelection(toggled);
4748
});
4849

4950
connect(&_focusFloodfillAction, &ToggleAction::toggled, this, [this](const bool& toggled) {
50-
_plugin->setFocusFloodfill(toggled);
51+
_plugin->setFocusFloodfill(toggled);
5152
});
5253

5354
connect(&_focusSelectionNormAction, &ToggleAction::toggled, this, [this](const bool& toggled) {
54-
_plugin->setFocusSelectionNorm(toggled);
55+
_plugin->setFocusSelectionNorm(toggled);
5556
});
5657

5758
connect(&_focusFloodfillNormAction, &ToggleAction::toggled, this, [this](const bool& toggled) {
58-
_plugin->setFocusFloodfillNorm(toggled);
59+
_plugin->setFocusFloodfillNorm(toggled);
5960
});
61+
62+
connect(&_idleRotationAction, &ToggleAction::toggled, this, [this](const bool& toggled) {
63+
_plugin->setIdleRotation(toggled);
64+
});
65+
6066
}
6167

6268
QMenu* SettingsAction::getContextMenu(QWidget* parent /*= nullptr*/)
@@ -75,6 +81,8 @@ void SettingsAction::fromVariantMap(const QVariantMap& variantMap)
7581
_positionDatasetPickerAction.fromParentVariantMap(variantMap);
7682
_colorDatasetPickerAction.fromParentVariantMap(variantMap);
7783

84+
_idleRotationAction.fromParentVariantMap(variantMap);
85+
7886
auto positionDataset = _positionDatasetPickerAction.getCurrentDataset();
7987
if (positionDataset.isValid())
8088
{
@@ -99,5 +107,7 @@ QVariantMap SettingsAction::toVariantMap() const
99107
_positionDatasetPickerAction.insertIntoVariantMap(variantMap);
100108
_colorDatasetPickerAction.insertIntoVariantMap(variantMap);
101109

110+
_idleRotationAction.insertIntoVariantMap(variantMap);
111+
102112
return variantMap;
103113
}

src/SettingsAction.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class SettingsAction : public GroupAction
5757
ToggleAction& getFocusFloodfillAction() { return _focusFloodfillAction; }
5858
ToggleAction& getFocusSelectionNormAction() { return _focusSelectionNormAction; }
5959
ToggleAction& getFocusFloodfillNormAction() { return _focusFloodfillNormAction; }
60+
ToggleAction& getIdleRotationAction() { return _idleRotationAction; }
6061

6162
protected:
6263
VolumeViewerPlugin* _plugin; /** Pointer to volume viewer plugin */
@@ -68,4 +69,5 @@ class SettingsAction : public GroupAction
6869
ToggleAction _focusFloodfillAction;
6970
ToggleAction _focusSelectionNormAction;
7071
ToggleAction _focusFloodfillNormAction;
72+
ToggleAction _idleRotationAction;
7173
};

src/VolumeViewerPlugin.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,12 @@ VolumeViewerPlugin::VolumeViewerPlugin(const PluginFactory* factory) :
102102

103103
_primaryToolbarAction.addAction(&_settingsAction->getPickRendererAction(), 4, GroupAction::Horizontal);
104104

105+
105106
_secondaryToolbarAction.addAction(&_settingsAction->getFocusSelectionAction());
106107
_secondaryToolbarAction.addAction(&_settingsAction->getFocusSelectionNormAction());
107108
_secondaryToolbarAction.addAction(&_settingsAction->getFocusFloodfillAction());
108109
_secondaryToolbarAction.addAction(&_settingsAction->getFocusFloodfillNormAction());
110+
_secondaryToolbarAction.addAction(&_settingsAction->getIdleRotationAction());
109111

110112
}
111113

@@ -360,7 +362,6 @@ void VolumeViewerPlugin::init()
360362
}
361363

362364
_volumeViewerWidget->getOpenGLWidget()->setColors(localUV);
363-
_volumeViewerWidget->getOpenGLWidget()->update();
364365
});
365366

366367
// Respond when the name of the dataset in the dataset reference changes
@@ -486,6 +487,10 @@ void VolumeViewerPlugin::init()
486487

487488
}
488489

490+
void VolumeViewerPlugin::setIdleRotation(bool idleRotation){
491+
_volumeViewerWidget->getOpenGLWidget()->setRotating(idleRotation);
492+
}
493+
489494
void VolumeViewerPlugin::setFocusSelection(bool focusSelection) {
490495
_focusSelection = focusSelection;
491496
qDebug() << "Focus selection: " << _focusSelection;

src/VolumeViewerPlugin.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,16 @@ class VolumeViewerPlugin : public ViewPlugin
126126
return _pointsColorPoints;
127127
}
128128

129-
public: // Focus selection
129+
public:
130+
// Focus selection
130131
void setFocusSelection(bool focusSelection);
131132
void setFocusFloodfill(bool focusFloodfill);
132133
void setFocusSelectionNorm(bool focusSelectionNorm);
133134
void setFocusFloodfillNorm(bool focusFloodfillNorm);
134135

136+
// Idle rotation
137+
void setIdleRotation(bool idleRotation);
138+
135139
public: // Serialization
136140
/**
137141
* Load plugin from variant map
@@ -169,7 +173,7 @@ class VolumeViewerPlugin : public ViewPlugin
169173
Dataset<Points> _floodFillDataset; /** For focusing on floodfill */
170174

171175
QStringList _pointsDatasets; /** Point datasets loaded in mv */
172-
mv::gui::DropWidget* _dropWidget; /** Widget for dropping data */
176+
mv::gui::DropWidget* _dropWidget; /** Widget for dropping data */
173177
QString _currentDatasetName; /** Name of the current dataset */
174178
std::vector<int> _planeArray; /** Array indicating the index+1 of the x,y and z clipping planes in the plane collection*/
175179
std::vector<double> _shadingParameters; /** Shading parameter save vector index 0 = ambient, index 1 = diffuse and index 2 = specular*/

0 commit comments

Comments
 (0)