Actions
Feature #6193
openDisable lightening non-selected curve color
Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
12/21/2017
Due date:
% Done:
0%
Estimated time:
Description
I wish there is a way to disable lightening non-selected curve color.
Reasons
- The color of non-selected curves is half hard-codded. If the background is dark, the non-selected curves are instead standout.
- Lighten color only is only activated when setSeriesSelectedEnable(true) and selectedSeries() != nullptr. In some use cases, we wish to keep the selected curve state and disable selecting other series setSeriesSelectedEnable(false)
- We can specify the selected curve pen by subscribing seriesSelected(). This conflict lightening color feature.
I add a patch here.
diff --git a/src/Wt/Chart/WCartesianChart b/src/Wt/Chart/WCartesianChart
index 947a77d9..ab9ac9b8 100644
--- a/src/Wt/Chart/WCartesianChart
+++ b/src/Wt/Chart/WCartesianChart
@@ -1184,6 +1184,8 @@ public:
* will be shown in a lighter color.
*/
void setSeriesSelectionEnabled(bool enabled = true);
+
+ void setLightenNonSelectedSeriesEnabled(bool enabled = true);
/*! \brief Returns whether series selection is enabled.
*
@@ -1287,6 +1289,7 @@ private:
const WDataSeries *followCurve_;
bool curveManipulationEnabled_;
bool cObjCreated_;
+ bool shouldLightenNonSelectedSeries_;
JSignal<> xTransformChanged_;
JSignal<> yTransformChanged_;
diff --git a/src/Wt/Chart/WCartesianChart.C b/src/Wt/Chart/WCartesianChart.C
index 6a958293..95ac4e2e 100644
--- a/src/Wt/Chart/WCartesianChart.C
+++ b/src/Wt/Chart/WCartesianChart.C
@@ -438,7 +438,8 @@ public:
WBrush brush = series_.brush();
if (chart_.seriesSelectionEnabled() &&
chart_.selectedSeries() != 0 &&
- chart_.selectedSeries() != &series_) {
+ chart_.selectedSeries() != &series_ &&
+ chart_.shouldLightenNonSelectedSeries_) {
brush.setColor(WCartesianChart::lightenColor(brush.color()));
}
painter_.fillPath(transform.map(fill_), brush); // FIXME: support curve transforms
@@ -474,7 +475,8 @@ public:
WPen pen = series_.pen();
if (chart_.seriesSelectionEnabled() &&
chart_.selectedSeries() != 0 &&
- chart_.selectedSeries() != &series_) {
+ chart_.selectedSeries() != &series_ &&
+ chart_.shouldLightenNonSelectedSeries_) {
pen.setColor(WCartesianChart::lightenColor(pen.color()));
}
painter_.strokePath((transform * ct).map(*curve), pen);
@@ -979,7 +981,8 @@ public:
SeriesIterator::setPenColor(pen, series, xRow, xColumn, yRow, yColumn, MarkerPenColorRole);
if (chart_.seriesSelectionEnabled() &&
chart_.selectedSeries() != 0 &&
- chart_.selectedSeries() != &series) {
+ chart_.selectedSeries() != &series &&
+ chart_.shouldLightenNonSelectedSeries_) {
pen.setColor(WCartesianChart::lightenColor(pen.color()));
}
@@ -988,7 +991,8 @@ public:
double scale = calculateMarkerScale(series, xRow, xColumn, yRow, yColumn, series.markerSize());
if (chart_.seriesSelectionEnabled() &&
chart_.selectedSeries() != 0 &&
- chart_.selectedSeries() != &series) {
+ chart_.selectedSeries() != &series &&
+ chart_.shouldLightenNonSelectedSeries_) {
brush.setColor(WCartesianChart::lightenColor(brush.color()));
}
@@ -4170,5 +4174,11 @@ void WCartesianChart::loadTooltip(double x, double y)
}
}
+void WCartesianChart::setLightenNonSelectedSeriesEnabled(bool enabled)
+{
+ shouldLightenNonSelectedSeries_ = enabled;
+}
+
+
}
}
No data to display
Actions