aboutsummaryrefslogtreecommitdiff
path: root/main.h
diff options
context:
space:
mode:
Diffstat (limited to 'main.h')
-rw-r--r--main.h147
1 files changed, 48 insertions, 99 deletions
diff --git a/main.h b/main.h
index 69c58f0..f3bcb66 100644
--- a/main.h
+++ b/main.h
@@ -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;