mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
apply patch #782 from perrygeo that moves code for determination of color into its own function
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@7300 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
parent
c74003e8fe
commit
b6242c1dec
@ -275,32 +275,19 @@ void QgsGraduatedSymbolDialog::adjustClassification()
|
||||
QPen pen;
|
||||
QBrush brush;
|
||||
|
||||
//apply a nice color range from red to green as default
|
||||
//todo: make other color ranges available
|
||||
if (i == 0)
|
||||
{
|
||||
if (m_type == QGis::Line)
|
||||
{
|
||||
pen.setColor(QColor(255, 0, 0));
|
||||
}
|
||||
else //point or polygon
|
||||
{
|
||||
brush.setColor(QColor(255, 0, 0));
|
||||
pen.setColor(Qt::black);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_type == QGis::Line)
|
||||
{
|
||||
pen.setColor(QColor(255 - (255 / numberofclassesspinbox->value() * (i+1)), 255 / numberofclassesspinbox->value() * (i+1), 0));
|
||||
}
|
||||
else //point or polygon
|
||||
{
|
||||
brush.setColor(QColor(255 - (255 / numberofclassesspinbox->value() * (i+1)), 255 / numberofclassesspinbox->value() * (i+1), 0));
|
||||
pen.setColor(Qt::black);
|
||||
}
|
||||
}
|
||||
// todo: These color ramps should come from a dropdown list
|
||||
QString ramp;
|
||||
ramp = "red_to_green";
|
||||
if (m_type == QGis::Line)
|
||||
{
|
||||
pen.setColor(getColorFromRamp(ramp,i, numberofclassesspinbox->value()));
|
||||
}
|
||||
else //point or polygon
|
||||
{
|
||||
brush.setColor(getColorFromRamp(ramp,i, numberofclassesspinbox->value()));
|
||||
pen.setColor(Qt::black);
|
||||
}
|
||||
|
||||
pen.setWidth(1);
|
||||
brush.setStyle(Qt::SolidPattern);
|
||||
symbol->setPen(pen);
|
||||
@ -520,4 +507,26 @@ int QgsGraduatedSymbolDialog::calculateQuantiles(std::list<double>& result, cons
|
||||
}
|
||||
|
||||
|
||||
|
||||
QColor QgsGraduatedSymbolDialog::getColorFromRamp(QString ramp, int step, int totalSteps)
|
||||
{
|
||||
QColor color;
|
||||
/* To do:
|
||||
Grab the ramp by name from a file or ramp registry
|
||||
and apply determine the color for the given step.
|
||||
Ideally there would be two types of ramps:
|
||||
- discrete colors: the number of steps would have to match totalSteps
|
||||
- continuous colors: (eg grass or gmt ramps) would need to code a method
|
||||
for determining an RGB color for any point along the continuum
|
||||
Color ramps should be plugin-able; should be defined in a simple text file format
|
||||
and read from a directory where users can add their own ramps.
|
||||
*/
|
||||
if (step == 0)
|
||||
{
|
||||
color = QColor(0,255,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
color = QColor(0,255-((255/totalSteps)*step+1),((255/totalSteps)*step+1));
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
@ -67,6 +67,8 @@ class QgsGraduatedSymbolDialog: public QDialog, private Ui::QgsGraduatedSymbolDi
|
||||
@param numQuantiles the number of quantiles, e.g. 4 calculates the quantiles for 25%, 50%, 75%, 100%
|
||||
@return 0 in case of success*/
|
||||
int calculateQuantiles(std::list<double>& result, const std::vector<double>& values, int numQuantiles) const;
|
||||
/**Gets the color value along a specified ramp**/
|
||||
QColor getColorFromRamp(QString ramp, int step, int totalSteps);
|
||||
|
||||
protected slots:
|
||||
/**Removes a class from the classification*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user