Add export format options: CSV, JSON, PPM
[gencolormap.git] / colormapwidgets.hpp
index a9f95fe..84e0cf4 100644 (file)
@@ -1,5 +1,6 @@
 /*
- * Copyright (C) 2015, 2016 Computer Graphics Group, University of Siegen
+ * Copyright (C) 2015, 2016, 2017, 2018, 2019
+ * Computer Graphics Group, University of Siegen
  * Written by Martin Lambers <martin.lambers@uni-siegen.de>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -72,12 +73,12 @@ public:
 
     /* Get the color map corresponding to the current values as a vector of colors.
      * Also return the number of clipped colors unless 'clipped' is NULL. */
-    virtual QVector<QColor> colorMap(int* clipped = NULL) const = 0;
+    virtual QVector<unsigned char> colorMap(int* clipped = NULL) const = 0;
 
-    /* Get a color map as an image of the specified size. If width or height is zero,
-     * then it will be set to the number of colors in the color map.
-     * Also return the number of clipped colors unless 'clipped' is NULL. */
-    QImage colorMapImage(int width, int height, int* clipped = NULL);
+    /* Transform a color map to an image of the specified size. If width or
+     * height is zero, then it will be set to the number of colors in the
+     * color map. */
+    static QImage colorMapImage(const QVector<unsigned char>& colormap, int width, int height);
 
     /* Get a rich text string containing the relevant literature reference for this method */
     virtual QString reference() const = 0;
@@ -105,7 +106,7 @@ public:
     ~ColorMapBrewerSequentialWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
     void parameters(int& n, float& hue,
             float& contrast, float& saturation, float& brightness, float& warmth) const;
@@ -131,7 +132,7 @@ public:
     ~ColorMapBrewerDivergingWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
     void parameters(int& n, float& hue, float& divergence,
             float& contrast, float& saturation, float& brightness, float& warmth) const;
@@ -156,7 +157,7 @@ public:
     ~ColorMapBrewerQualitativeWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
     void parameters(int& n, float& hue, float& divergence,
             float& contrast, float& saturation, float& brightness) const;
@@ -178,7 +179,7 @@ public:
     ~ColorMapPLSequentialLightnessWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
     void parameters(int& n, float& saturation, float& hue) const;
 };
@@ -200,7 +201,7 @@ public:
     ~ColorMapPLSequentialSaturationWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
     void parameters(int& n, float& lightness, float& saturation, float& hue) const;
 };
@@ -222,7 +223,7 @@ public:
     ~ColorMapPLSequentialRainbowWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
     void parameters(int& n, float& hue, float& rotations, float& saturation) const;
 };
@@ -244,7 +245,7 @@ public:
     ~ColorMapPLSequentialBlackBodyWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
     void parameters(int& n, float& temperature, float& range, float& saturation) const;
 };
@@ -267,7 +268,7 @@ public:
     ~ColorMapPLDivergingLightnessWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
     void parameters(int& n, float& lightness, float& saturation, float& hue, float& divergence) const;
 };
@@ -290,7 +291,7 @@ public:
     ~ColorMapPLDivergingSaturationWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
     void parameters(int& n, float& lightness, float& saturation, float& hue, float& divergence) const;
 };
@@ -301,9 +302,10 @@ Q_OBJECT
 private:
     bool _update_lock;
     QSpinBox* _n_spinbox;
+    ColorMapCombinedSliderSpinBox* _hue_changer;
+    ColorMapCombinedSliderSpinBox* _divergence_changer;
     ColorMapCombinedSliderSpinBox* _lightness_changer;
     ColorMapCombinedSliderSpinBox* _saturation_changer;
-    ColorMapCombinedSliderSpinBox* _hue_changer;
 private slots:
     void update();
 
@@ -312,9 +314,9 @@ public:
     ~ColorMapPLQualitativeHueWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
-    void parameters(int& n, float& lightness, float& saturation, float& hue) const;
+    void parameters(int& n, float& hue, float& divergence, float& lightness, float& saturation) const;
 };
 
 class ColorMapCubeHelixWidget : public ColorMapWidget
@@ -335,7 +337,7 @@ public:
     ~ColorMapCubeHelixWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
     void parameters(int& n, float& hue, float& rotations,
             float& saturation, float& gamma) const;
@@ -359,7 +361,7 @@ public:
     ~ColorMapMorelandWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
     void parameters(int& n,
             unsigned char& r0, unsigned char& g0, unsigned char& b0,
@@ -381,7 +383,7 @@ public:
     ~ColorMapMcNamesWidget();
 
     void reset() override;
-    QVector<QColor> colorMap(int* clipped = NULL) const override;
+    QVector<unsigned char> colorMap(int* clipped = NULL) const override;
     QString reference() const override;
     void parameters(int& n, float& p) const;
 };