aboutsummaryrefslogtreecommitdiff
path: root/barchart.cpp
diff options
context:
space:
mode:
authorSamuel Fadel <samuelfadel@gmail.com>2016-01-18 15:46:05 +0100
committerSamuel Fadel <samuelfadel@gmail.com>2016-01-18 15:46:05 +0100
commit8cc4c24249600392871cc802f3ac4dd27368d335 (patch)
tree9bfde6414953828b379ee3728f5d92bbb772558d /barchart.cpp
parentd0ba4bbd9eb7b550cf71bb421e2a6f8b83018b48 (diff)
Added observer to update values displayed based on some metric.
* Modified main() function to connect signals/slots to display calculated values * Color scales are no longer shared; they are also normalized to each component's own data * Stub mouse handling in BarChart (changes cursor shape)
Diffstat (limited to 'barchart.cpp')
-rw-r--r--barchart.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/barchart.cpp b/barchart.cpp
index 941d9e8..f21f874 100644
--- a/barchart.cpp
+++ b/barchart.cpp
@@ -2,6 +2,7 @@
#include <algorithm>
+#include "continuouscolorscale.h"
#include "geometry.h"
static const QColor OUTLINE_COLOR(0, 0, 0);
@@ -11,12 +12,12 @@ static const float DEFAULT_OPACITY = 0.8f;
BarChart::BarChart(QQuickItem *parent)
: QQuickItem(parent)
, m_shouldUpdateBars(false)
- , m_colorScale(0)
+ , m_colorScale(ContinuousColorScale::builtin(ContinuousColorScale::HEATED_OBJECTS))
, m_scale(0, 1, 0, 1)
{
setClip(true);
setFlag(QQuickItem::ItemHasContents);
- // setAcceptedMouseButtons(Qt::LeftButton);
+ //setAcceptedMouseButtons(Qt::LeftButton);
// setAcceptHoverEvents(true);
}
@@ -31,6 +32,7 @@ void BarChart::setValues(const arma::vec &values)
m_originalIndices.resize(m_values.n_elem);
if (m_values.n_elem > 0) {
m_scale.setDomain(m_values.min(), m_values.max());
+ m_colorScale.setExtents(m_values.min(), m_values.max());
for (int i = 0; i < m_originalIndices.size(); i++) {
m_originalIndices[i] = i;
@@ -44,9 +46,12 @@ void BarChart::setValues(const arma::vec &values)
m_shouldUpdateBars = true;
}
-void BarChart::setColorScale(const ColorScale *scale)
+void BarChart::setColorScale(const ColorScale &scale)
{
m_colorScale = scale;
+ if (m_values.n_elem > 0) {
+ m_colorScale.setExtents(m_values.min(), m_values.max());
+ }
emit colorScaleChanged(m_colorScale);
m_shouldUpdateBars = true;
@@ -136,7 +141,7 @@ void BarChart::updateBars(QSGNode *root)
float x = 0;
for (auto it = m_originalIndices.cbegin(); it != m_originalIndices.cend(); it++) {
updateBarNodeGeom(node, x, barWidth, m_scale(m_values[*it]));
- updateBarNodeColor(node, m_colorScale->color(m_values[*it]));
+ updateBarNodeColor(node, m_colorScale.color(m_values[*it]));
x += barWidth;
node = node->nextSibling();
}
@@ -175,5 +180,11 @@ void BarChart::hoverMoveEvent(QHoverEvent *event)
void BarChart::mousePressEvent(QMouseEvent *event)
{
- // TODO
+ QCursor dragCursor(Qt::SizeHorCursor);
+ setCursor(dragCursor);
+}
+
+void BarChart::mouseReleaseEvent(QMouseEvent *event)
+{
+ unsetCursor();
}