Improve ColorMapWidget interface.
authorMartin Lambers <marlam@marlam.de>
Mon, 15 Feb 2016 11:53:49 +0000 (12:53 +0100)
committerMartin Lambers <marlam@marlam.de>
Mon, 15 Feb 2016 11:53:49 +0000 (12:53 +0100)
colormapwidgets.cpp
colormapwidgets.hpp
gui.cpp

index f29c3e3..5c73ff9 100644 (file)
@@ -153,9 +153,8 @@ ColorMapWidget::~ColorMapWidget()
 {
 }
 
-QImage ColorMapWidget::colorMapImage(int width, int height, int* clipped)
+QImage ColorMapWidget::colorMapImage(const QVector<QColor>& colormap, int width, int height)
 {
-    QVector<QColor> colormap = colorMap(clipped);
     if (width <= 0)
         width = colormap.size();
     if (height <= 0)
index a9f95fe..28068b6 100644 (file)
@@ -74,10 +74,10 @@ public:
      * Also return the number of clipped colors unless 'clipped' is NULL. */
     virtual QVector<QColor> 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<QColor>& colormap, int width, int height);
 
     /* Get a rich text string containing the relevant literature reference for this method */
     virtual QString reference() const = 0;
diff --git a/gui.cpp b/gui.cpp
index d0caeee..a227eca 100644 (file)
--- a/gui.cpp
+++ b/gui.cpp
@@ -162,8 +162,9 @@ void GUI::update()
 {
     _reference_label->setText(currentWidget()->reference());
     int clipped;
-    _colormap_label->setPixmap(QPixmap::fromImage(currentWidget()->colorMapImage(32, _colormap_label->height(), &clipped)));
+    QVector<QColor> colormap = currentWidget()->colorMap(&clipped);
     _clipped_label->setText(QString("Colors clipped: %1").arg(clipped));
+    _colormap_label->setPixmap(QPixmap::fromImage(currentWidget()->colorMapImage(colormap, 32, _colormap_label->height())));
 }
 
 void GUI::file_export_png()
@@ -171,7 +172,7 @@ void GUI::file_export_png()
     QString name = QFileDialog::getSaveFileName();
     if (!name.isEmpty()) {
         QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-        currentWidget()->colorMapImage(0, 1).save(name, "png");
+        currentWidget()->colorMapImage(currentWidget()->colorMap(), 0, 1).save(name, "png");
         QApplication::restoreOverrideCursor();
     }
 }
@@ -202,7 +203,7 @@ void GUI::edit_reset()
 
 void GUI::edit_copy_as_img()
 {
-    QApplication::clipboard()->setImage(currentWidget()->colorMapImage(0, 1));
+    QApplication::clipboard()->setImage(currentWidget()->colorMapImage(currentWidget()->colorMap(), 0, 1));
 }
 
 void GUI::edit_copy_as_txt()