Commit 60edc5e4 authored by CABEL Tristan's avatar CABEL Tristan

Merge branch 'feature/decorators_settings' into 'develop'

Feature/decorators settings

See merge request !33
parents a70b150f f30f7202
......@@ -36,5 +36,29 @@ void dtkVisualizationDecorator::draw(void)
}
}
void dtkVisualizationDecorator::saveSettings(const QString & name, const QVariant& value)
{
QSettings settings;
settings.beginGroup("canvas");
settings.setValue(this->objectName()+"_" + name, value);
settings.endGroup();
}
void dtkVisualizationDecorator::show(void)
{
this->setVisibility(true);
}
void dtkVisualizationDecorator::hide(void)
{
this->setVisibility(false);
}
void dtkVisualizationDecorator::setObjectName(const QString & name)
{
QObject::setObjectName(name);
this->restoreSettings();
}
//
// dtkVisualizationDecorator.cpp ends here
......@@ -37,11 +37,22 @@ public:
public:
virtual void touch(void) = 0;
void setObjectName(const QString &);
public:
void show(void);
void hide(void);
protected:
void draw(void);
void saveSettings(const QString &, const QVariant&);
protected:
virtual void restoreSettings(void) {};
public:
virtual void setVisibility(bool visible) = 0;
virtual bool isDecorating(void) = 0;
virtual void setData(const QVariant&) = 0;
......
......@@ -54,6 +54,9 @@ public:
public:
QList<QWidget *> inspectors;
public:
bool default_visibility;
public:
QCheckBox *show_actor_cb = nullptr;
QPushButton *color_button = nullptr;
......@@ -86,7 +89,7 @@ dtkVisualizationDecoratorDelaunay2D::dtkVisualizationDecoratorDelaunay2D(void):
d->actor = vtkSmartPointer<vtkActor>::New();
d->actor->SetMapper(d->mapper);
d->actor->SetVisibility(false);
d->actor->SetVisibility(d->default_visibility);
d->actor->GetProperty()->SetPointSize(30);
d->actor->GetProperty()->SetColor(0.5,0.5,0.5);
......@@ -104,7 +107,7 @@ dtkVisualizationDecoratorDelaunay2D::dtkVisualizationDecoratorDelaunay2D(void):
d->opacity_spinbox->setValue(1.);
d->show_actor_cb->setObjectName("Display");
d->show_actor_cb->setChecked(false);
d->show_actor_cb->setChecked(d->default_visibility);
//////////
// Inspectors connections
......@@ -119,11 +122,9 @@ dtkVisualizationDecoratorDelaunay2D::dtkVisualizationDecoratorDelaunay2D(void):
connect(d->opacity_spinbox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &dtkVisualizationDecoratorDelaunay2D::setOpacity);
connect(d->show_actor_cb, &QCheckBox::stateChanged, [=] (int state) {
if (state == Qt::Checked) {
this->show();
} else {
this->hide();
}
this->saveSettings("visibility",state == Qt::Checked);
this->setVisibility(state == Qt::Checked);
this->draw();
});
d->inspectors << d->color_button << d->opacity_spinbox << d->show_actor_cb;
......@@ -137,6 +138,18 @@ dtkVisualizationDecoratorDelaunay2D::~dtkVisualizationDecoratorDelaunay2D(void)
d = nullptr;
}
void dtkVisualizationDecoratorDelaunay2D::restoreSettings(void)
{
QString name = this->objectName();
if (name.isEmpty())
return;
QSettings settings;
settings.beginGroup("canvas");
d->default_visibility = settings.value(name+"_visibility", true).toBool();
settings.endGroup();
}
void dtkVisualizationDecoratorDelaunay2D::touch(void)
{
if(!this->canvas()) {
......@@ -202,26 +215,13 @@ void dtkVisualizationDecoratorDelaunay2D::unsetCanvas(void)
d->view = nullptr;
}
void dtkVisualizationDecoratorDelaunay2D::show(void)
{
d->actor->SetVisibility(true);
d->show_actor_cb->blockSignals(true);
d->show_actor_cb->setCheckState(Qt::Checked);
d->show_actor_cb->blockSignals(false);
this->draw();
}
void dtkVisualizationDecoratorDelaunay2D::hide(void)
void dtkVisualizationDecoratorDelaunay2D::setVisibility(bool visible)
{
d->actor->SetVisibility(false);
d->actor->SetVisibility(visible);
d->show_actor_cb->blockSignals(true);
d->show_actor_cb->setCheckState(Qt::Unchecked);
d->show_actor_cb->setCheckState(visible ? Qt::Checked : Qt::Unchecked);
d->show_actor_cb->blockSignals(false);
this->draw();
}
void dtkVisualizationDecoratorDelaunay2D::setColor(const QColor& color)
......@@ -234,7 +234,7 @@ void dtkVisualizationDecoratorDelaunay2D::setColor(const QColor& color)
void dtkVisualizationDecoratorDelaunay2D::setOpacity(const double& alpha)
{
d->actor->GetProperty()->SetOpacity(alpha);
d->opacity_spinbox->blockSignals(true);
d->opacity_spinbox->setValue(alpha);
d->opacity_spinbox->blockSignals(false);
......
......@@ -23,7 +23,7 @@ class DTKVISUALIZATION_EXPORT dtkVisualizationDecoratorDelaunay2D : public dtkVi
Q_OBJECT
public:
dtkVisualizationDecoratorDelaunay2D(void);
dtkVisualizationDecoratorDelaunay2D(void);
~dtkVisualizationDecoratorDelaunay2D(void);
public:
......@@ -39,8 +39,7 @@ public:
QList<QWidget *> inspectors(void) const override;
public:
void show(void);
void hide(void);
void setVisibility(bool);
public:
virtual void setColor(const QColor&);
......@@ -53,6 +52,9 @@ public:
signals:
void updated(void);
protected:
void restoreSettings(void) override;
protected:
class dtkVisualizationDecoratorDelaunay2DPrivate *d;
};
......
......@@ -164,6 +164,13 @@ bool dtkVisualizationDecoratorInfo::isDecorating(void)
return d->dataset;
}
void dtkVisualizationDecoratorInfo::setVisibility(bool visible)
{
for (QWidget * w: d->inspectors) {
w->setVisible(visible);
}
}
void dtkVisualizationDecoratorInfo::setData(const QVariant& data)
{
d->dataset = data.value<vtkDataSet *>();
......
......@@ -31,6 +31,9 @@ public:
void setInformation(const QString& key, const QString& value, const QString& tooltip = QString());
void setInformation(const QString& key, QWidget *value);
public:
void setVisibility(bool) override;
public:
bool isDecorating(void) override;
......
......@@ -71,8 +71,6 @@ public:
dtkVisualizationDecoratorPoints::dtkVisualizationDecoratorPoints(void): d(new dtkVisualizationDecoratorPointsPrivate())
{
this->setObjectName("Points");
d->data = vtkSmartPointer<vtkPolyData>::New();
d->filter = vtkSmartPointer<vtkVertexGlyphFilter>::New();
......@@ -109,6 +107,8 @@ dtkVisualizationDecoratorPoints::dtkVisualizationDecoratorPoints(void): d(new dt
d->size_spinbox->setSingleStep(0.01);
d->size_spinbox->setValue(1.);
this->setObjectName("Points");
d->show_actor_cb->setObjectName("Display");
d->show_actor_cb->setChecked(false);
......@@ -127,11 +127,8 @@ dtkVisualizationDecoratorPoints::dtkVisualizationDecoratorPoints(void): d(new dt
connect(d->size_spinbox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &dtkVisualizationDecoratorPoints::setSize);
connect(d->show_actor_cb, &QCheckBox::stateChanged, [=] (int state) {
if (state == Qt::Checked) {
this->show();
} else {
this->hide();
}
this->setVisibility(state == Qt::Checked);
this->draw();
});
d->inspectors << d->color_button << d->opacity_spinbox << d->size_spinbox << d->show_actor_cb;
......@@ -186,12 +183,7 @@ void dtkVisualizationDecoratorPoints::setData(const QVariant& data)
d->filter->Modified();
d->mapper->Modified();
if(this->canvas()) {
this->canvas()->renderer()->AddActor(d->actor);
if (this->canvas()->interactor()) {
this->canvas()->interactor()->Render();
}
}
this->draw();
}
void dtkVisualizationDecoratorPoints::setCanvas(dtkVisualizationCanvas *canvas)
......@@ -221,42 +213,21 @@ void dtkVisualizationDecoratorPoints::unsetCanvas(void)
d->view = nullptr;
}
void dtkVisualizationDecoratorPoints::show(void)
{
d->actor->SetVisibility(true);
d->show_actor_cb->blockSignals(true);
d->show_actor_cb->setCheckState(Qt::Checked);
d->show_actor_cb->blockSignals(false);
if (this->canvas() && this->canvas()->interactor()) {
this->canvas()->interactor()->Render();
this->canvas()->renderer()->GetRenderWindow()->Render();
}
}
void dtkVisualizationDecoratorPoints::hide(void)
void dtkVisualizationDecoratorPoints::setVisibility(bool visible)
{
d->actor->SetVisibility(false);
d->actor->SetVisibility(visible);
d->show_actor_cb->blockSignals(true);
d->show_actor_cb->setCheckState(Qt::Unchecked);
d->show_actor_cb->setCheckState(visible ? Qt::Checked : Qt::Unchecked);
d->show_actor_cb->blockSignals(false);
if (this->canvas() && this->canvas()->interactor()) {
this->canvas()->interactor()->Render();
this->canvas()->renderer()->GetRenderWindow()->Render();
}
}
void dtkVisualizationDecoratorPoints::setColor(const QColor& color)
{
d->actor->GetProperty()->SetColor(color.red(), color.green(), color.blue());
if (this->canvas() && this->canvas()->interactor()) {
this->canvas()->interactor()->Render();
this->canvas()->renderer()->GetRenderWindow()->Render();
}
this->draw();
}
void dtkVisualizationDecoratorPoints::setOpacity(const double& alpha)
......@@ -267,10 +238,7 @@ void dtkVisualizationDecoratorPoints::setOpacity(const double& alpha)
d->opacity_spinbox->setValue(alpha);
d->opacity_spinbox->blockSignals(false);
if (this->canvas() && this->canvas()->interactor()) {
this->canvas()->interactor()->Render();
this->canvas()->renderer()->GetRenderWindow()->Render();
}
this->draw();
}
void dtkVisualizationDecoratorPoints::setSize(const double& size)
......@@ -281,10 +249,7 @@ void dtkVisualizationDecoratorPoints::setSize(const double& size)
d->size_spinbox->setValue(size);
d->size_spinbox->blockSignals(false);
if (this->canvas() && this->canvas()->interactor()) {
this->canvas()->interactor()->Render();
this->canvas()->renderer()->GetRenderWindow()->Render();
}
this->draw();
}
QVariant dtkVisualizationDecoratorPoints::data(void) const
......
......@@ -41,8 +41,7 @@ public:
void touch(void) override;
public:
void show(void);
void hide(void);
void setVisibility(bool) override;
public:
virtual void setColor(const QColor&);
......
......@@ -59,37 +59,32 @@ public slots:
dtkVisualizationDecoratorScalarColorMap::dtkVisualizationDecoratorScalarColorMap(void): dtkVisualizationDecoratorWithClut(), d(new dtkVisualizationDecoratorScalarColorMapPrivate())
{
this->setObjectName("Scalar ColorMap");
d->mapper = vtkSmartPointer<vtkDataSetMapper>::New();
d->mapper->SetColorModeToMapScalars();
d->mapper->SetScalarVisibility(true);
d->actor = vtkSmartPointer<vtkActor>::New();
d->actor->SetMapper(d->mapper);
d->actor->SetVisibility(true);
//////////
// Inspectors creation
d->show_actor_cb = new QCheckBox;
//////////
// Inspectors setup
d->show_actor_cb->setChecked(true);
//////////
// Inspectors connections
connect(d->show_actor_cb, &QCheckBox::stateChanged, [=] (int state) {
this->saveSettings("visibility", state == Qt::Checked);
this->setVisibility(state == Qt::Checked);
this->draw();
});
this->setObjectName("Scalar ColorMap");
d->show_actor_cb->setObjectName("Display");
d_func()->inspectors << d->show_actor_cb;
}
dtkVisualizationDecoratorScalarColorMap::~dtkVisualizationDecoratorScalarColorMap(void)
......@@ -118,6 +113,7 @@ void dtkVisualizationDecoratorScalarColorMap::setData(const QVariant& data)
return;
}
d_func()->dataset = dataset;
this->restoreSettings();
d->mapper->SetInputData(d_func()->dataset);
d_func()->sortEligibleFields();
......@@ -163,6 +159,17 @@ void dtkVisualizationDecoratorScalarColorMap::setVisibility(bool visible)
dtkVisualizationDecoratorWithClut::setVisibility(visible);
}
void dtkVisualizationDecoratorScalarColorMap::restoreSettings(void)
{
dtkVisualizationDecoratorWithClut::restoreSettings();
d->actor->SetVisibility(d_func()->default_visibility);
d->show_actor_cb->blockSignals(true);
d->show_actor_cb->setChecked(d_func()->default_visibility);
d->show_actor_cb->blockSignals(false);
}
bool dtkVisualizationDecoratorScalarColorMap::setCurrentFieldName(const QString& field_name)
{
if (!dtkVisualizationDecoratorWithClut::setCurrentFieldName(field_name)) {
......
......@@ -34,6 +34,7 @@ public:
protected:
bool setCurrentFieldName(const QString&) override;
void setColorMap(const QMap<double, QColor>&) override;
void restoreSettings(void);
public:
void setVisibility(bool) override;
......
......@@ -71,6 +71,8 @@ public:
QComboBox *glyphs_source_cb = nullptr;
public:
double default_glyph_size;
QString default_glyph_shape ;
double size_multiplier = 1.;
QHash<QString, double> glyphs_sizes;
QHash<QString, QString> glyphs_sources;
......@@ -82,8 +84,6 @@ public:
dtkVisualizationDecoratorScalarGlyphs::dtkVisualizationDecoratorScalarGlyphs(void): dtkVisualizationDecoratorWithClut(), d(new dtkVisualizationDecoratorScalarGlyphsPrivate())
{
this->setObjectName("Scalar Glyphs");
d->source_arrow = vtkSmartPointer<vtkArrowSource>::New();
d->source_cube = vtkSmartPointer<vtkCubeSource>::New();
d->source_cylinder = vtkSmartPointer<vtkCylinderSource>::New();
......@@ -93,15 +93,14 @@ dtkVisualizationDecoratorScalarGlyphs::dtkVisualizationDecoratorScalarGlyphs(voi
d->source_sphere->SetThetaResolution(12.);
d->source_sphere->SetPhiResolution(12.);
double default_size = 1.;
d->source_arrow->SetShaftRadius(default_size);
d->source_arrow->SetTipRadius(default_size);
d->source_cube->SetXLength(default_size);
d->source_cube->SetYLength(default_size);
d->source_cube->SetZLength(default_size);
d->source_cylinder->SetRadius(default_size);
d->source_polygon->SetRadius(default_size);
d->source_sphere->SetRadius(default_size);
d->source_arrow->SetShaftRadius(d->default_glyph_size);
d->source_arrow->SetTipRadius(d->default_glyph_size);
d->source_cube->SetXLength(d->default_glyph_size);
d->source_cube->SetYLength(d->default_glyph_size);
d->source_cube->SetZLength(d->default_glyph_size);
d->source_cylinder->SetRadius(d->default_glyph_size);
d->source_polygon->SetRadius(d->default_glyph_size);
d->source_sphere->SetRadius(d->default_glyph_size);
d->cell_centers = vtkSmartPointer<vtkCellCenters>::New();
......@@ -115,11 +114,9 @@ dtkVisualizationDecoratorScalarGlyphs::dtkVisualizationDecoratorScalarGlyphs(voi
d->mapper->SetColorModeToMapScalars();
d->mapper->SetInterpolateScalarsBeforeMapping(true);
d->mapper->SetScalarModeToUsePointFieldData();
// d->mapper->SetScalarVisibility(true);
d->actor = vtkSmartPointer<vtkActor>::New();
d->actor->SetMapper(d->mapper);
d->actor->SetVisibility(false);
//////////
// Inspectors creation
......@@ -131,8 +128,6 @@ dtkVisualizationDecoratorScalarGlyphs::dtkVisualizationDecoratorScalarGlyphs(voi
//////////
// Inspectors setup
d->show_actor_cb->setChecked(false);
d->glyphs_size_sb->setMaximum(1000);
d->glyphs_size_sb->setKeyboardTracking(false);
......@@ -146,12 +141,14 @@ dtkVisualizationDecoratorScalarGlyphs::dtkVisualizationDecoratorScalarGlyphs(voi
// Inspectors connections
connect(d->show_actor_cb, &QCheckBox::stateChanged, [=] (int state) {
this->saveSettings("visibility",state == Qt::Checked);
this->setVisibility(state == Qt::Checked);
this->draw();
});
connect(d->glyphs_size_sb, QOverload<double>::of(&QDoubleSpinBox::valueChanged), [=] (double value) {
this->blockSignals(true);
this->saveSettings("glyph_size", value);
this->setCurrentGlyphsSize(value);
this->blockSignals(false);
this->draw();
......@@ -166,6 +163,7 @@ dtkVisualizationDecoratorScalarGlyphs::dtkVisualizationDecoratorScalarGlyphs(voi
connect(d->glyphs_source_cb, &QComboBox::currentTextChanged, [=] (const QString& source) {
this->blockSignals(true);
this->saveSettings("glyph_shape", source);
this->setCurrentGlyphsSource(source);
this->blockSignals(false);
this->draw();
......@@ -181,6 +179,7 @@ dtkVisualizationDecoratorScalarGlyphs::dtkVisualizationDecoratorScalarGlyphs(voi
this->draw();
});
this->setObjectName("Scalar Glyphs");
d->show_actor_cb->setObjectName("Display");
d->glyphs_size_sb->setObjectName("Glyphs Size");
d->glyphs_source_cb->setObjectName("Source Shape");
......@@ -196,6 +195,26 @@ dtkVisualizationDecoratorScalarGlyphs::~dtkVisualizationDecoratorScalarGlyphs(vo
d = nullptr;
}
void dtkVisualizationDecoratorScalarGlyphs::restoreSettings(void)
{
QString name = this->objectName();
if (name.isEmpty())
return;
dtkVisualizationDecoratorWithClut::restoreSettings();
QSettings settings;
settings.beginGroup("canvas");
d->default_glyph_size = settings.value(name+"_glyph_size", 1.0).toDouble();
d->default_glyph_shape = settings.value(name+"_glyph_shape", "Sphere").toString();
settings.endGroup();
d->actor->SetVisibility(d_func()->default_visibility);
d->show_actor_cb->blockSignals(true);
d->show_actor_cb->setChecked(d_func()->default_visibility);
d->show_actor_cb->blockSignals(false);
}
void dtkVisualizationDecoratorScalarGlyphs::setData(const QVariant& data)
{
vtkDataSet *dataset = data.value<vtkDataSet *>();
......@@ -226,17 +245,18 @@ void dtkVisualizationDecoratorScalarGlyphs::setData(const QVariant& data)
}
d_func()->dataset = dataset;
this->restoreSettings();
d->cell_centers->SetInputData(dataset);
d->glyphs_sizes.clear();
d->glyphs_sources.clear();
for(auto field_name : d_func()->eligible_field_names) {
d->glyphs_sizes[field_name] = 1.;
d->glyphs_sources[field_name] = "Sphere";
d->glyphs_sizes[field_name] = d->default_glyph_size;
d->glyphs_sources[field_name] = d->default_glyph_shape;
}
emit this->currentGlyphsSizeChanged(1.);
emit this->currentGlyphsSourceChanged("Sphere");
emit this->currentGlyphsSizeChanged(d->default_glyph_size);
emit this->currentGlyphsSourceChanged(d->default_glyph_shape);
d_func()->sortEligibleFields();
......
......@@ -37,6 +37,7 @@ protected:
public:
void setVisibility(bool) override;
void restoreSettings(void) override;
public:
void setCurrentGlyphsSize(double);
......
......@@ -54,6 +54,9 @@ public:
vtkSmartPointer<vtkContourFilter> isolines;
vtkSmartPointer<vtkCellDataToPointData> c2p_filter;
public:
int default_isolines_count = 10;
public:
QCheckBox *show_actor_cb = nullptr;
QSpinBox *isolines_counts_sb = nullptr;
......@@ -68,8 +71,6 @@ public:
dtkVisualizationDecoratorScalarIsolines::dtkVisualizationDecoratorScalarIsolines(void): dtkVisualizationDecoratorWithClut(), d(new dtkVisualizationDecoratorScalarIsolinesPrivate())
{
this->setObjectName("Scalar Isolines");
d->isolines = vtkSmartPointer<vtkContourFilter>::New();
d->c2p_filter = vtkSmartPointer<vtkCellDataToPointData>::New();
......@@ -88,8 +89,6 @@ dtkVisualizationDecoratorScalarIsolines::dtkVisualizationDecoratorScalarIsolines
d->show_actor_cb = new QCheckBox;
d->isolines_counts_sb = new QSpinBox;
d->show_actor_cb->setChecked(false);
d->isolines_counts_sb->setValue(10);
d->isolines_counts_sb->setMaximum(10000);
......@@ -97,21 +96,22 @@ dtkVisualizationDecoratorScalarIsolines::dtkVisualizationDecoratorScalarIsolines
// Inspectors connections
connect(d->show_actor_cb, &QCheckBox::stateChanged, [=] (int state) {
this->saveSettings("visibility",state == Qt::Checked);
this->setVisibility(state == Qt::Checked);
this->draw();
});
connect(d->isolines_counts_sb, QOverload<int>::of(&QSpinBox::valueChanged), [=] (int value) {
this->saveSettings("isolines_count", value);
this->setCurrentIsolinesCount(value);
this->draw();
});
this->setObjectName("Scalar Isolines");
d->show_actor_cb->setObjectName("Display");
d->isolines_counts_sb->setObjectName("Count");
d_func()->inspectors << d->show_actor_cb << d->isolines_counts_sb;
this->setVisibility(false);
}
dtkVisualizationDecoratorScalarIsolines::~dtkVisualizationDecoratorScalarIsolines(void)
......@@ -122,6 +122,29 @@ dtkVisualizationDecoratorScalarIsolines::~dtkVisualizationDecoratorScalarIsoline
d = nullptr;
}
void dtkVisualizationDecoratorScalarIsolines::restoreSettings(void)
{
QString name = this->objectName();
if (name.isEmpty())
return;
dtkVisualizationDecoratorWithClut::restoreSettings();
d->actor->SetVisibility(d_func()->default_visibility);
d->show_actor_cb->blockSignals(true);
d->show_actor_cb->setCheckState(d_func()->default_visibility ? Qt::Checked : Qt::Unchecked);
d->show_actor_cb->blockSignals(false);
QSettings settings;
settings.beginGroup("canvas");
d->default_isolines_count = settings.value(name+"_isolines_count", 10).toInt();
settings.endGroup();
this->setCurrentIsolinesCount(d->default_isolines_count);
this->touch();
this->draw();
}
void dtkVisualizationDecoratorScalarIsolines::touch(void)
{
dtkVisualizationDecoratorWithClut::touch();
......@@ -166,12 +189,13 @@ void dtkVisualizationDecoratorScalarIsolines::setData(const QVariant& data)
}
d_func()->dataset = dataset;
this->restoreSettings();
d->c2p_filter->SetInputData(dataset);
d->isolines_counts.clear();
for (auto field_name : d_func()->eligible_field_names) {
d->isolines_counts[field_name] = 10;
d->isolines_counts[field_name] = d->default_isolines_count;
}
d->isolines->Modified();
......@@ -220,9 +244,6 @@ void dtkVisualizationDecoratorScalarIsolines::setVisibility(bool b)
dtkVisualizationDecoratorWithClut::setVisibility(b);
d->actor->SetVisibility(b);
d->show_actor_cb->blockSignals(true);
d->show_actor_cb->setCheckState(b ? Qt::Checked : Qt::Unchecked);
d->show_actor_cb->blockSignals(false);
}
void dtkVisualizationDecoratorScalarIsolines::setCurrentRange(double min, double max)
......@@ -243,7 +264,9 @@ void dtkVisualizationDecoratorScalarIsolines::setCurrentIsolinesCount(std::size_
{
QString& field_name = d_func()->current_field_name;
if (field_name.isEmpty()) {
return;
if (d_func()->default_field_name.isEmpty())
return;
field_name = d_func()->default_field_name;
}
d->isolines_counts[field_name] = count;
......
......@@ -34,6 +34,7 @@ public:
void unsetCanvas(void) override;
protected:
void restoreSettings(void) override;
void setCurrentRange(double, double) override;
bool setCurrentFieldName(const QString&) override;
void setColorMap(const QMap<double, QColor>&) override;
......
......@@ -128,6 +128,10 @@ QVariant dtkVisualizationDecoratorSnapshot::data(void) const
return QVariant();
}
void dtkVisualizationDecoratorSnapshot::setVisibility(bool)
{
}
dtkVisualizationCanvas *dtkVisualizationDecoratorSnapshot::canvas(void) const
{