Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 19 additions & 21 deletions DVRTransferFunction/src/TransferFunctionPlugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ using namespace mv::util;

TransferFunctionPlugin::TransferFunctionPlugin(const PluginFactory* factory) :
ViewPlugin(factory),
_dropWidget(nullptr),
_transferFunctionWidget(new TransferFunctionWidget()),
_dropWidget(new DropWidget(_transferFunctionWidget)),
_numPoints(0),
_settingsAction(this, "Settings"),
_materialSettings(this, "Material Settings"),
_primaryToolbarAction(this, "Primary Toolbar")
_settingsAction(new SettingsAction(this, "Settings")),
_materialSettings(new MaterialSettings(this, "Material Settings")),
_primaryToolbarAction(new HorizontalToolbarAction(this, "Primary Toolbar"))
{
setObjectName("TransferFunction");

Expand All @@ -59,21 +59,19 @@ TransferFunctionPlugin::TransferFunctionPlugin(const PluginFactory* factory) :
shortcuts.add({ QKeySequence(Qt::CTRL), "Selection", "Remove from selection" });

shortcuts.add({ QKeySequence(Qt::Key_S), "Render", "Scatter mode (default)" });

_dropWidget = new DropWidget(_transferFunctionWidget);

getWidget().setFocusPolicy(Qt::ClickFocus);

_primaryToolbarAction.addAction(&_settingsAction.getDatasetsAction());
_primaryToolbarAction->addAction(&_settingsAction->getDatasetsAction());

_primaryToolbarAction.addAction(&_settingsAction.getSelectionAction());
_primaryToolbarAction.addAction(&_settingsAction.getPointsAction());
_primaryToolbarAction->addAction(&_settingsAction->getSelectionAction());
_primaryToolbarAction->addAction(&_settingsAction->getPointsAction());

connect(_transferFunctionWidget, &TransferFunctionWidget::customContextMenuRequested, this, [this](const QPoint& point) {
if (!_positionDataset.isValid())
return;

auto contextMenu = _settingsAction.getContextMenu();
auto contextMenu = _settingsAction->getContextMenu();

contextMenu->addSeparator();

Expand Down Expand Up @@ -172,7 +170,7 @@ void TransferFunctionPlugin::init()

layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
layout->addWidget(_primaryToolbarAction.createWidget(&getWidget()));
layout->addWidget(_primaryToolbarAction->createWidget(&getWidget()));
layout->addWidget(_transferFunctionWidget, 100);

auto& navigationAction = _transferFunctionWidget->getPointRendererNavigator().getNavigationAction();
Expand All @@ -181,12 +179,12 @@ void TransferFunctionPlugin::init()
layout->addWidget(navigationWidget);
layout->setAlignment(navigationWidget, Qt::AlignCenter);

navigationAction.setParent(&_settingsAction);
navigationAction.setParent(_settingsAction.get());
}

getWidget().setLayout(layout);

addDockingAction(&_materialSettings);
addDockingAction(_materialSettings.get());

// Set minimum size for the dock widget
getWidget().setMinimumSize(512, 512);
Expand All @@ -198,12 +196,12 @@ void TransferFunctionPlugin::init()
connect(&_positionDataset, &Dataset<Points>::dataChanged, this, &TransferFunctionPlugin::updateVolumeData);
connect(&_positionDataset, &Dataset<Points>::dataSelectionChanged, this, &TransferFunctionPlugin::updateSelection);

connect(&_settingsAction.getPointsAction().getSizeAction(), &DecimalAction::valueChanged, [this](float size) {
connect(&_settingsAction->getPointsAction().getSizeAction(), &DecimalAction::valueChanged, [this](float size) {
_transferFunctionWidget->setPointSize(size);
_transferFunctionWidget->update();
});

connect(&_settingsAction.getPointsAction().getOpacityAction(), &DecimalAction::valueChanged, [this](float opacity) {
connect(&_settingsAction->getPointsAction().getOpacityAction(), &DecimalAction::valueChanged, [this](float opacity) {
_transferFunctionWidget->setPointOpacity(opacity);
_transferFunctionWidget->update();
});
Expand Down Expand Up @@ -266,8 +264,8 @@ void TransferFunctionPlugin::updateVolumeData()
if (_positionDataset.isValid()) {

// ensure point size and opacity is updated
_transferFunctionWidget->setPointOpacity(_settingsAction.getPointsAction().getOpacity());
_transferFunctionWidget->setPointSize(_settingsAction.getPointsAction().getSize());
_transferFunctionWidget->setPointOpacity(_settingsAction->getPointsAction().getOpacity());
_transferFunctionWidget->setPointSize(_settingsAction->getPointsAction().getSize());

// Determine number of points depending on if it's a full dataset or a subset
_numPoints = _positionDataset->getNumPoints();
Expand Down Expand Up @@ -359,16 +357,16 @@ void TransferFunctionPlugin::fromVariantMap(const QVariantMap& variantMap)

variantMapMustContain(variantMap, "Settings");

_primaryToolbarAction.fromParentVariantMap(variantMap);
_settingsAction.fromParentVariantMap(variantMap);
_primaryToolbarAction->fromParentVariantMap(variantMap);
_settingsAction->fromParentVariantMap(variantMap);
}

QVariantMap TransferFunctionPlugin::toVariantMap() const
{
QVariantMap variantMap = ViewPlugin::toVariantMap();

_primaryToolbarAction.insertIntoVariantMap(variantMap);
_settingsAction.insertIntoVariantMap(variantMap);
_primaryToolbarAction->insertIntoVariantMap(variantMap);
_settingsAction->insertIntoVariantMap(variantMap);

return variantMap;
}
Expand Down
19 changes: 10 additions & 9 deletions DVRTransferFunction/src/TransferFunctionPlugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "SettingsAction.h"
#include "MaterialSettings.h"

#include <QPointer>
#include <QTimer>

using namespace mv::plugin;
Expand Down Expand Up @@ -62,7 +63,7 @@ class TransferFunctionPlugin : public ViewPlugin
/** Get reference to the scatter plot widget */
TransferFunctionWidget& getTransferFunctionWidget();

SettingsAction& getSettingsAction() { return _settingsAction; }
SettingsAction& getSettingsAction() { return *(_settingsAction).get(); }

private:
void updateVolumeData();
Expand All @@ -83,16 +84,16 @@ class TransferFunctionPlugin : public ViewPlugin
QVariantMap toVariantMap() const override;

private:
mv::gui::DropWidget* _dropWidget; /** Widget for dropping datasets */
TransferFunctionWidget* _transferFunctionWidget; /** THe visualization widget */
QPointer<TransferFunctionWidget> _transferFunctionWidget; /** The visualization widget */
mv::gui::DropWidget* _dropWidget; /** Widget for dropping datasets */

Dataset<Points> _positionDataset; /** Smart pointer to points dataset for point position */
std::vector<mv::Vector2f> _positions; /** Point positions */
unsigned int _numPoints; /** Number of point positions */
Dataset<Points> _positionDataset; /** Smart pointer to points dataset for point position */
std::vector<mv::Vector2f> _positions; /** Point positions */
unsigned int _numPoints; /** Number of point positions */

SettingsAction _settingsAction; /** Group action for all settings */
MaterialSettings _materialSettings; /** Material settings action */
HorizontalToolbarAction _primaryToolbarAction; /** Horizontal toolbar for primary content */
QPointer<SettingsAction> _settingsAction; /** Group action for all settings */
QPointer<MaterialSettings> _materialSettings; /** Material settings action */
QPointer<HorizontalToolbarAction> _primaryToolbarAction; /** Horizontal toolbar for primary content */

static const std::int32_t LAZY_UPDATE_INTERVAL = 2;

Expand Down
Loading