1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
/**
*
* This file is part of Tulip (www.tulip-software.org)
*
* Authors: David Auber and the Tulip development Team
* from LaBRI, University of Bordeaux
*
* Tulip is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* Tulip is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
*/
#include "ColorScalePreview.h"
#include <tulip/ColorScaleConfigDialog.h>
using namespace tlp;
ColorScalePreview::ColorScalePreview(ColorScale* colorScale) :
currentColorScale(colorScale) {
setAutoFillBackground(true);
fillLabel();
}
ColorScalePreview::~ColorScalePreview() {
// TODO Auto-generated destructor stub
}
void ColorScalePreview::fillLabel() {
if (currentColorScale != NULL && width() != 0 && height() != 0) {
std::map<float, tlp::Color> colorMap = currentColorScale->getColorMap();
QPalette p = this->palette();
QLinearGradient grad(0, height() * 0.5, width(), height() * 0.5);
for (std::map<float, tlp::Color>::iterator it = colorMap.begin(); it
!= colorMap.end(); ++it) {
tlp::Color col = it->second;
QColor c(col.getR(), col.getG(), col.getB(), col.getA());
grad.setColorAt(it->first, c);
}
p.setBrush(QPalette::Window, QBrush(grad));
this->setPalette(p);
}
}
void ColorScalePreview::setColorScale(ColorScale* colorScale) {
currentColorScale = colorScale;
fillLabel();
}
void ColorScalePreview::resizeEvent(QResizeEvent * event) {
QLabel::resizeEvent(event);
fillLabel();
}
void ColorScalePreview::mousePressEvent(QMouseEvent *) {
tlp::ColorScaleConfigDialog dialog(currentColorScale, this);
dialog.exec();
fillLabel();
}
|