diff options
Diffstat (limited to 'main.h')
-rw-r--r-- | main.h | 147 |
1 files changed, 48 insertions, 99 deletions
@@ -4,17 +4,18 @@ #include <QObject> #include <armadillo> -#include "colorscale.h" -#include "continuouscolorscale.h" - #include "barchart.h" #include "colormap.h" +#include "colorscale.h" +#include "continuouscolorscale.h" +#include "projectionobserver.h" #include "scatterplot.h" #include "voronoisplat.h" class Main : public QObject { Q_OBJECT + Q_ENUMS(ObserverType) Q_ENUMS(ColorScaleType) public: static Main *instance() { @@ -57,6 +58,16 @@ public: arma::mat X() const { return m_dataset.cols(0, m_dataset.n_cols - 2); } arma::vec labels() const { return m_dataset.col(m_dataset.n_cols - 1); } + enum ObserverType { + ObserverCurrent = ProjectionObserver::OBSERVER_CURRENT, + ObserverDiffPrevious = ProjectionObserver::OBSERVER_DIFF_PREVIOUS, + ObserverDiffOriginal = ProjectionObserver::OBSERVER_DIFF_ORIGINAL + }; + + Q_INVOKABLE bool setObserverType(ObserverType observerType) { + return projectionObserver->setType((int) observerType); + } + enum ColorScaleType { ColorScaleCategorical, ColorScaleContinuous, @@ -64,94 +75,29 @@ public: ColorScaleRainbow }; - ColorScale *COLOR_SCALE_CATEGORICAL; - ColorScale *COLOR_SCALE_CONTINUOUS; - ColorScale *COLOR_SCALE_DIVERGENT; - ColorScale *COLOR_SCALE_RAINBOW; + ColorScale COLOR_SCALE_CATEGORICAL; + ColorScale COLOR_SCALE_CONTINUOUS; + ColorScale COLOR_SCALE_DIVERGENT; + ColorScale COLOR_SCALE_RAINBOW; Q_INVOKABLE void setCPPlotColorScale(ColorScaleType colorScaleType) { - switch (colorScaleType) { - case ColorScaleCategorical: - cpPlot->setColorScale(*COLOR_SCALE_CATEGORICAL); - break; - case ColorScaleContinuous: - cpPlot->setColorScale(*COLOR_SCALE_CONTINUOUS); - break; - case ColorScaleDivergent: - cpPlot->setColorScale(*COLOR_SCALE_DIVERGENT); - break; - case ColorScaleRainbow: - cpPlot->setColorScale(*COLOR_SCALE_RAINBOW); - break; - } + cpPlot->setColorScale(getColorScale(colorScaleType)); } Q_INVOKABLE void setRPPlotColorScale(ColorScaleType colorScaleType) { - switch (colorScaleType) { - case ColorScaleCategorical: - rpPlot->setColorScale(*COLOR_SCALE_CATEGORICAL); - break; - case ColorScaleContinuous: - rpPlot->setColorScale(*COLOR_SCALE_CONTINUOUS); - break; - case ColorScaleDivergent: - rpPlot->setColorScale(*COLOR_SCALE_DIVERGENT); - break; - case ColorScaleRainbow: - rpPlot->setColorScale(*COLOR_SCALE_RAINBOW); - break; - } + rpPlot->setColorScale(getColorScale(colorScaleType)); } Q_INVOKABLE void setColormapColorScale(ColorScaleType colorScaleType) { - switch (colorScaleType) { - case ColorScaleCategorical: - colormap->setColorScale(*COLOR_SCALE_CATEGORICAL); - break; - case ColorScaleContinuous: - colormap->setColorScale(*COLOR_SCALE_CONTINUOUS); - break; - case ColorScaleDivergent: - colormap->setColorScale(*COLOR_SCALE_DIVERGENT); - break; - case ColorScaleRainbow: - colormap->setColorScale(*COLOR_SCALE_RAINBOW); - break; - } + colormap->setColorScale(getColorScale(colorScaleType)); } Q_INVOKABLE void setBarChartColorScale(ColorScaleType colorScaleType) { - switch (colorScaleType) { - case ColorScaleCategorical: - barChart->setColorScale(*COLOR_SCALE_CATEGORICAL); - break; - case ColorScaleContinuous: - barChart->setColorScale(*COLOR_SCALE_CONTINUOUS); - break; - case ColorScaleDivergent: - barChart->setColorScale(*COLOR_SCALE_DIVERGENT); - break; - case ColorScaleRainbow: - barChart->setColorScale(*COLOR_SCALE_RAINBOW); - break; - } + barChart->setColorScale(getColorScale(colorScaleType)); } Q_INVOKABLE void setSplatColorScale(ColorScaleType colorScaleType) { - switch (colorScaleType) { - case ColorScaleCategorical: - splat->setColorScale(*COLOR_SCALE_CATEGORICAL); - break; - case ColorScaleContinuous: - splat->setColorScale(*COLOR_SCALE_CONTINUOUS); - break; - case ColorScaleDivergent: - splat->setColorScale(*COLOR_SCALE_DIVERGENT); - break; - case ColorScaleRainbow: - splat->setColorScale(*COLOR_SCALE_RAINBOW); - break; - } + splat->setColorScale(getColorScale(colorScaleType)); } BarChart *barChart; @@ -159,6 +105,8 @@ public: Scatterplot *cpPlot, *rpPlot; VoronoiSplat *splat; + ProjectionObserver *projectionObserver; + public slots: void setCPIndices(const arma::uvec &indices) { m_cpIndices = indices; } void setCP(const arma::mat &cp) { @@ -173,34 +121,35 @@ public slots: private: Main(QObject *parent = 0) : QObject(parent) + , COLOR_SCALE_CATEGORICAL{ + QColor("#1f77b4"), QColor("#ff7f0e"), QColor("#2ca02c"), + QColor("#d62728"), QColor("#9467bd"), QColor("#8c564b"), + QColor("#e377c2"), QColor("#17becf"), QColor("#7f7f7f"), + } + , COLOR_SCALE_CONTINUOUS{ContinuousColorScale::builtin(ContinuousColorScale::HEATED_OBJECTS)} + , COLOR_SCALE_DIVERGENT{ContinuousColorScale::builtin(ContinuousColorScale::RED_GRAY_BLUE)} + , COLOR_SCALE_RAINBOW{ContinuousColorScale::builtin(ContinuousColorScale::RAINBOW)} , barChart(0) , cpPlot(0) , rpPlot(0) , splat(0) { - COLOR_SCALE_CATEGORICAL = new ColorScale{ - QColor("#1f77b4"), - QColor("#ff7f0e"), - QColor("#2ca02c"), - QColor("#d62728"), - QColor("#9467bd"), - QColor("#8c564b"), - QColor("#e377c2"), - QColor("#17becf"), - QColor("#7f7f7f"), - }; - COLOR_SCALE_CONTINUOUS = - new ColorScale{ContinuousColorScale::builtin(ContinuousColorScale::HEATED_OBJECTS)}; - COLOR_SCALE_DIVERGENT = - new ColorScale{ContinuousColorScale::builtin(ContinuousColorScale::RED_GRAY_BLUE)}; - COLOR_SCALE_RAINBOW = - new ColorScale{ContinuousColorScale::builtin(ContinuousColorScale::RAINBOW)}; } - ~Main() { - delete COLOR_SCALE_CATEGORICAL; - delete COLOR_SCALE_CONTINUOUS; - delete COLOR_SCALE_DIVERGENT; - delete COLOR_SCALE_RAINBOW; + ~Main() {} + + ColorScale &getColorScale(ColorScaleType colorScaleType) { + switch (colorScaleType) { + case ColorScaleCategorical: + return COLOR_SCALE_CATEGORICAL; + case ColorScaleContinuous: + return COLOR_SCALE_CONTINUOUS; + case ColorScaleDivergent: + return COLOR_SCALE_DIVERGENT; + case ColorScaleRainbow: + // fall-through + default: + return COLOR_SCALE_RAINBOW; + } } arma::mat m_dataset, m_cp; |