summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/bars3dcontroller.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-12-11 10:40:02 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-12-11 11:31:36 +0200
commite688990f64855434e90029383206a0062892306e (patch)
tree7f02ae89c6f96cbca96ab2d6ae068f37b61b658b /src/datavisualization/engine/bars3dcontroller.cpp
parent8eedf6096de1eded74c40c4632ab2ad95b6c6f8d (diff)
Scatter and surface autoadjust ranges to consider all visible series
Task-number: QTRD-2605 Change-Id: I86b843bd478f92a93588394558ba9b983eb8430f Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine/bars3dcontroller.cpp')
-rw-r--r--src/datavisualization/engine/bars3dcontroller.cpp148
1 files changed, 73 insertions, 75 deletions
diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp
index 88b0730f..5232a566 100644
--- a/src/datavisualization/engine/bars3dcontroller.cpp
+++ b/src/datavisualization/engine/bars3dcontroller.cpp
@@ -385,92 +385,90 @@ void Bars3DController::setSelectedBar(const QPoint &position, QBar3DSeries *seri
void Bars3DController::adjustAxisRanges()
{
- int seriesCount = m_seriesList.size();
- if (seriesCount) {
- Q3DCategoryAxis *categoryAxisZ = static_cast<Q3DCategoryAxis *>(m_axisZ);
- Q3DCategoryAxis *categoryAxisX = static_cast<Q3DCategoryAxis *>(m_axisX);
- Q3DValueAxis *valueAxis = static_cast<Q3DValueAxis *>(m_axisY);
-
- bool adjustZ = (categoryAxisZ && categoryAxisZ->isAutoAdjustRange());
- bool adjustX = (categoryAxisX && categoryAxisX->isAutoAdjustRange());
- bool adjustY = (valueAxis && categoryAxisX && categoryAxisZ && valueAxis->isAutoAdjustRange());
-
- if (adjustZ || adjustX || adjustY) {
- int maxRowCount = 1;
- int maxColumnCount = 1;
- float minValue = 0.0f;
- float maxValue = 0.0f;
-
- // First figure out row and column counts
- if (adjustZ || adjustX) {
- for (int series = 0; series < seriesCount; series++) {
- const QBar3DSeries *barSeries = static_cast<QBar3DSeries *>(m_seriesList.at(series));
- if (barSeries->isVisible()) {
- const QBarDataProxy *proxy = barSeries->dataProxy();
-
- if (adjustZ && proxy) {
- int rowCount = proxy->rowCount();
- if (rowCount)
- rowCount--;
-
- maxRowCount = qMax(maxRowCount, rowCount);
- }
+ Q3DCategoryAxis *categoryAxisZ = static_cast<Q3DCategoryAxis *>(m_axisZ);
+ Q3DCategoryAxis *categoryAxisX = static_cast<Q3DCategoryAxis *>(m_axisX);
+ Q3DValueAxis *valueAxis = static_cast<Q3DValueAxis *>(m_axisY);
+
+ bool adjustZ = (categoryAxisZ && categoryAxisZ->isAutoAdjustRange());
+ bool adjustX = (categoryAxisX && categoryAxisX->isAutoAdjustRange());
+ bool adjustY = (valueAxis && categoryAxisX && categoryAxisZ && valueAxis->isAutoAdjustRange());
+
+ if (adjustZ || adjustX || adjustY) {
+ int maxRowCount = 1;
+ int maxColumnCount = 1;
+ float minValue = 0.0f;
+ float maxValue = 0.0f;
+
+ // First figure out row and column counts
+ int seriesCount = m_seriesList.size();
+ if (adjustZ || adjustX) {
+ for (int series = 0; series < seriesCount; series++) {
+ const QBar3DSeries *barSeries = static_cast<QBar3DSeries *>(m_seriesList.at(series));
+ if (barSeries->isVisible()) {
+ const QBarDataProxy *proxy = barSeries->dataProxy();
+
+ if (adjustZ && proxy) {
+ int rowCount = proxy->rowCount();
+ if (rowCount)
+ rowCount--;
+
+ maxRowCount = qMax(maxRowCount, rowCount);
+ }
- if (adjustX && proxy) {
- const QBarDataArray *array = proxy->array();
- int columnCount = 0;
- for (int i = 0; i < array->size(); i++) {
- if (columnCount < array->at(i)->size())
- columnCount = array->at(i)->size();
- }
- if (columnCount)
- columnCount--;
-
- maxColumnCount = qMax(maxColumnCount, columnCount);
+ if (adjustX && proxy) {
+ const QBarDataArray *array = proxy->array();
+ int columnCount = 0;
+ for (int i = 0; i < array->size(); i++) {
+ if (columnCount < array->at(i)->size())
+ columnCount = array->at(i)->size();
}
+ if (columnCount)
+ columnCount--;
+
+ maxColumnCount = qMax(maxColumnCount, columnCount);
}
}
- // Call private implementations of setRange to avoid unsetting auto adjust flag
- if (adjustZ)
- categoryAxisZ->dptr()->setRange(0.0f, float(maxRowCount));
- if (adjustX)
- categoryAxisX->dptr()->setRange(0.0f, float(maxColumnCount));
}
+ // Call private implementations of setRange to avoid unsetting auto adjust flag
+ if (adjustZ)
+ categoryAxisZ->dptr()->setRange(0.0f, float(maxRowCount));
+ if (adjustX)
+ categoryAxisX->dptr()->setRange(0.0f, float(maxColumnCount));
+ }
- // Now that we know the row and column ranges, figure out the value axis range
- if (adjustY) {
- for (int series = 0; series < seriesCount; series++) {
- const QBar3DSeries *barSeries = static_cast<QBar3DSeries *>(m_seriesList.at(series));
- if (barSeries->isVisible()) {
- const QBarDataProxy *proxy = barSeries->dataProxy();
- if (adjustY && proxy) {
- QPair<GLfloat, GLfloat> limits = proxy->dptrc()->limitValues(categoryAxisZ->min(),
- categoryAxisZ->max(),
- categoryAxisX->min(),
- categoryAxisX->max());
- if (!series) {
- // First series initializes the values
- minValue = limits.first;
- maxValue = limits.second;
- } else {
- minValue = qMin(minValue, limits.first);
- maxValue = qMax(maxValue, limits.second);
- }
+ // Now that we know the row and column ranges, figure out the value axis range
+ if (adjustY) {
+ for (int series = 0; series < seriesCount; series++) {
+ const QBar3DSeries *barSeries = static_cast<QBar3DSeries *>(m_seriesList.at(series));
+ if (barSeries->isVisible()) {
+ const QBarDataProxy *proxy = barSeries->dataProxy();
+ if (adjustY && proxy) {
+ QPair<GLfloat, GLfloat> limits = proxy->dptrc()->limitValues(categoryAxisZ->min(),
+ categoryAxisZ->max(),
+ categoryAxisX->min(),
+ categoryAxisX->max());
+ if (!series) {
+ // First series initializes the values
+ minValue = limits.first;
+ maxValue = limits.second;
+ } else {
+ minValue = qMin(minValue, limits.first);
+ maxValue = qMax(maxValue, limits.second);
}
}
}
+ }
- if (maxValue < 0.0f)
- maxValue = 0.0f;
- if (minValue > 0.0f)
- minValue = 0.0f;
- if (minValue == 0.0f && maxValue == 0.0f) {
- // Only zero value values in data set, set range to something.
- minValue = 0.0f;
- maxValue = 1.0f;
- }
- valueAxis->dptr()->setRange(minValue, maxValue);
+ if (maxValue < 0.0f)
+ maxValue = 0.0f;
+ if (minValue > 0.0f)
+ minValue = 0.0f;
+ if (minValue == 0.0f && maxValue == 0.0f) {
+ // Only zero value values in data set, set range to something.
+ minValue = 0.0f;
+ maxValue = 1.0f;
}
+ valueAxis->dptr()->setRange(minValue, maxValue);
}
}
}