Skip to content
Snippets Groups Projects
Commit 6aad7a7c authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

ColorMapHelper for better isolation in ColorMapPlot

parent 38f5db2e
No related branches found
No related tags found
No related merge requests found
......@@ -20,6 +20,7 @@
#include "SessionItemWidget.h"
class IntensityDataItem;
class ColorMapPlot;
//! The FitComparisonWidget class plots realdata, simulated data and relative difference map
//! during the course of the fit.
......@@ -43,9 +44,9 @@ private:
class IntensityDataItem *createRelativeDifferenceItem();
void calculateRelativeDifference();
class ColorMapPlot *m_realDataPlot;
class ColorMapPlot *m_simulatedDataPlot;
class ColorMapPlot *m_relativeDiffPlot;
ColorMapPlot *m_realDataPlot;
ColorMapPlot *m_simulatedDataPlot;
ColorMapPlot *m_relativeDiffPlot;
IntensityDataItem *m_realDataItem;
IntensityDataItem *m_simulatedDataItem;
......
......@@ -20,7 +20,9 @@
#include "WinDllMacros.h"
#include <QWidget>
//! The RealDataEditorWidget class provides editing/presenation of RealDataItem
class ColorMapPlot;
//! The RealDataEditorWidget class provides editing/presenation of RealDataItem in ImportDataView.
class BA_CORE_API_ RealDataEditorWidget : public QWidget
{
......@@ -35,9 +37,7 @@ public:
void setItem(class SessionItem *item);
private:
class ColorMapPlot *m_colorMap;
ColorMapPlot *m_colorMap;
};
#endif
// ************************************************************************** //
//
// BornAgain: simulate and fit scattering at grazing incidence
//
//! @file GUI/coregui/Views/IntensityDataWidgets/ColorMapHelper.cpp
//! @brief Implements class ColorMapHelper
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2016
//! @authors Scientific Computing Group at MLZ Garching
//! @authors Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
//! @authors Walter Van Herck, Joachim Wuttke
//
// ************************************************************************** //
#include "ColorMapHelper.h"
#include "item_constants.h"
#include "GUIHelpers.h"
#include "IntensityDataItem.h"
namespace {
ColorMapHelper::gradient_map_t createGradientMap() {
ColorMapHelper::gradient_map_t result;
result[Constants::GRADIENT_GRAYSCALE] = QCPColorGradient::gpGrayscale;
result[Constants::GRADIENT_HOT] = QCPColorGradient::gpHot;
result[Constants::GRADIENT_COLD] = QCPColorGradient::gpCold;
result[Constants::GRADIENT_NIGHT] = QCPColorGradient::gpNight;
result[Constants::GRADIENT_CANDY] = QCPColorGradient::gpCandy;
result[Constants::GRADIENT_GEOGRAPHY] = QCPColorGradient::gpGeography;
result[Constants::GRADIENT_ION] = QCPColorGradient::gpIon;
result[Constants::GRADIENT_THERMAL] = QCPColorGradient::gpThermal;
result[Constants::GRADIENT_POLAR] = QCPColorGradient::gpPolar;
result[Constants::GRADIENT_SPECTRUM] = QCPColorGradient::gpSpectrum;
result[Constants::GRADIENT_JET] = QCPColorGradient::gpJet;
result[Constants::GRADIENT_HUES] = QCPColorGradient::gpHues;
return result;
}
}
ColorMapHelper::gradient_map_t ColorMapHelper::m_gradient_map = createGradientMap();
QCPColorGradient ColorMapHelper::getGradient(const QString &gradientName)
{
auto it = m_gradient_map.find(gradientName);
if(it == m_gradient_map.end()) {
throw GUIHelpers::Error("ColorMapHelper::getGradient() -> Error. No such gradient" +
gradientName);
}
return QCPColorGradient(it.value());
}
QCPColorGradient ColorMapHelper::itemGradient(const IntensityDataItem *item)
{
return getGradient(item->getGradient());
}
// ************************************************************************** //
//
// BornAgain: simulate and fit scattering at grazing incidence
//
//! @file GUI/coregui/Views/IntensityDataWidgets/ColorMapHelper.h
//! @brief Declares class ColorMapHelper
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2016
//! @authors Scientific Computing Group at MLZ Garching
//! @authors Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
//! @authors Walter Van Herck, Joachim Wuttke
//
// ************************************************************************** //
#ifndef COLORMAPHELPER_H
#define COLORMAPHELPER_H
#include "WinDllMacros.h"
#include "qcustomplot.h"
#include <QString>
#include <QMap>
class IntensityDataItem;
//! The ColorMapHelper class provides few helper functions for ColorMapPlot.
class BA_CORE_API_ ColorMapHelper
{
public:
typedef QMap<QString, QCPColorGradient::GradientPreset> gradient_map_t;
static QCPColorGradient getGradient(const QString &gradientName);
static QCPColorGradient itemGradient(const IntensityDataItem *item);
private:
//!< GUI name of the gradient to QCPColorGradient::GradientPreset;
static gradient_map_t m_gradient_map;
};
#endif
......@@ -15,6 +15,7 @@
// ************************************************************************** //
#include "ColorMapPlot.h"
#include "ColorMapHelper.h"
#include "IntensityDataItem.h"
#include "AxesItems.h"
#include "GUIHelpers.h"
......@@ -312,7 +313,7 @@ void ColorMapPlot::onPropertyChanged(const QString &property_name)
return;
if (property_name == IntensityDataItem::P_GRADIENT) {
m_colorMap->setGradient(m_gradient_map[m_item->getGradient()]);
m_colorMap->setGradient(ColorMapHelper::itemGradient(m_item));
m_customPlot->replot();
} else if (property_name == IntensityDataItem::P_IS_INTERPOLATED) {
m_colorMap->setInterpolate(m_item->isInterpolated());
......@@ -445,18 +446,6 @@ void ColorMapPlot::initColorMap()
// right (actually atRight is already the default)
m_colorMap->setColorScale(m_colorScale); // associate the color map with the color scale
m_gradient_map[Constants::GRADIENT_GRAYSCALE] = QCPColorGradient::gpGrayscale;
m_gradient_map[Constants::GRADIENT_HOT] = QCPColorGradient::gpHot;
m_gradient_map[Constants::GRADIENT_COLD] = QCPColorGradient::gpCold;
m_gradient_map[Constants::GRADIENT_NIGHT] = QCPColorGradient::gpNight;
m_gradient_map[Constants::GRADIENT_CANDY] = QCPColorGradient::gpCandy;
m_gradient_map[Constants::GRADIENT_GEOGRAPHY] = QCPColorGradient::gpGeography;
m_gradient_map[Constants::GRADIENT_ION] = QCPColorGradient::gpIon;
m_gradient_map[Constants::GRADIENT_THERMAL] = QCPColorGradient::gpThermal;
m_gradient_map[Constants::GRADIENT_POLAR] = QCPColorGradient::gpPolar;
m_gradient_map[Constants::GRADIENT_SPECTRUM] = QCPColorGradient::gpSpectrum;
m_gradient_map[Constants::GRADIENT_JET] = QCPColorGradient::gpJet;
m_gradient_map[Constants::GRADIENT_HUES] = QCPColorGradient::gpHues;
QPen pen;
pen.setWidth(1);
......@@ -527,7 +516,7 @@ void ColorMapPlot::plotItem(IntensityDataItem *intensityItem)
setColorScaleVisible(intensityItem->getItem(IntensityDataItem::P_ZAXIS)
->getItemValue(BasicAxisItem::P_IS_VISIBLE).toBool());
m_colorMap->setGradient(m_gradient_map[intensityItem->getGradient()]);
m_colorMap->setGradient(ColorMapHelper::itemGradient(m_item));
QCPRange newDataRange(intensityItem->getLowerZ(), intensityItem->getUpperZ());
if (!intensityItem->isZAxisLocked() || (intensityItem->getLowerZ() > intensityItem->getUpperZ())) {
......
......@@ -115,7 +115,6 @@ private:
IntensityDataItem *m_item;
QMap<QString, QCPColorGradient > m_gradient_map;
bool m_block_update;
PositionData m_posData;
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment