diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-03-15 13:12:57 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-03-16 07:35:55 +0000 |
commit | a9752eb22dc64249d6c6473f954174cdf599383c (patch) | |
tree | d8de7b1f2363aaf09a679daf1bddc41f8e8ca5fa /examples/datavisualization/qmlsurfacegallery/datasource.cpp | |
parent | e590aec2cac500c1933d982735cd7c46895c5c60 (diff) |
Brush up the qmlsurfacegallery example
- Use modern string literals
- Use member initialization
- Streamline the code a bit with algorithms
Task-number: QTBUG-110700
Change-Id: Iad834c22f4dc14858b0f5da4fc2a550de9906072
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
(cherry picked from commit acdaea0c859ba7b78756011ea60ec2765b5a8f04)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'examples/datavisualization/qmlsurfacegallery/datasource.cpp')
-rw-r--r-- | examples/datavisualization/qmlsurfacegallery/datasource.cpp | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/examples/datavisualization/qmlsurfacegallery/datasource.cpp b/examples/datavisualization/qmlsurfacegallery/datasource.cpp index 93073554..7aeea178 100644 --- a/examples/datavisualization/qmlsurfacegallery/datasource.cpp +++ b/examples/datavisualization/qmlsurfacegallery/datasource.cpp @@ -5,10 +5,10 @@ #include <QtCore/qmath.h> #include <QtCore/qrandom.h> +#include <algorithm> + DataSource::DataSource(QObject *parent) : - QObject(parent), - m_index(-1), - m_resetArray(nullptr) + QObject(parent) { //! [3] qRegisterMetaType<QSurface3DSeries *>(); @@ -32,10 +32,10 @@ void DataSource::generateData(int cacheCount, int rowCount, int columnCount, // Re-create the cache array m_data.resize(cacheCount); - for (int i = 0; i < cacheCount; i++) { + for (int i = 0; i < cacheCount; ++i) { QSurfaceDataArray &array = m_data[i]; array.reserve(rowCount); - for (int j = 0; j < rowCount; j++) + for (int j = 0; j < rowCount; ++j) array.append(new QSurfaceDataRow(columnCount)); } @@ -47,11 +47,12 @@ void DataSource::generateData(int cacheCount, int rowCount, int columnCount, //! [0] // Populate caches - for (int i = 0; i < cacheCount; i++) { + auto *generator = QRandomGenerator::global(); + for (int i = 0; i < cacheCount; ++i) { QSurfaceDataArray &cache = m_data[i]; float cacheXAdjustment = cacheStep * i; float cacheIndexAdjustment = cacheIndexStep * i; - for (int j = 0; j < rowCount; j++) { + for (int j = 0; j < rowCount; ++j) { QSurfaceDataRow &row = *(cache[j]); float rowMod = (float(j)) / float(rowCount); float yRangeMod = yRange * rowMod; @@ -66,7 +67,7 @@ void DataSource::generateData(int cacheCount, int rowCount, int columnCount, float colWave = float(qSin((2.0 * M_PI * colMod) - (1.0 / 2.0 * M_PI)) + 1.0); float y = (colWave * ((float(qSin(rowColWaveAngleMul * colMod) + 1.0)))) * rowColWaveMul - + QRandomGenerator::global()->bounded(0.15f) * yRangeMod; + + generator->bounded(0.15f) * yRangeMod; int index = k + cacheIndexAdjustment; if (index >= columnCount) { @@ -83,14 +84,13 @@ void DataSource::generateData(int cacheCount, int rowCount, int columnCount, void DataSource::update(QSurface3DSeries *series) { - if (series && m_data.size()) { + if (series && !m_data.isEmpty()) { //! [1] // Each iteration uses data from a different cached array - m_index++; - if (m_index > m_data.count() - 1) + if (++m_index >= m_data.size()) m_index = 0; - QSurfaceDataArray array = m_data.at(m_index); + const QSurfaceDataArray &array = m_data.at(m_index); int newRowCount = array.size(); int newColumnCount = array.at(0)->size(); @@ -100,16 +100,15 @@ void DataSource::update(QSurface3DSeries *series) || series->dataProxy()->columnCount() != newColumnCount) { m_resetArray = new QSurfaceDataArray(); m_resetArray->reserve(newRowCount); - for (int i = 0; i < newRowCount; i++) + for (int i = 0; i < newRowCount; ++i) m_resetArray->append(new QSurfaceDataRow(newColumnCount)); } // Copy items from our cache to the reset array - for (int i = 0; i < newRowCount; i++) { + for (int i = 0; i < newRowCount; ++i) { const QSurfaceDataRow &sourceRow = *(array.at(i)); QSurfaceDataRow &row = *(*m_resetArray)[i]; - for (int j = 0; j < newColumnCount; j++) - row[j].setPosition(sourceRow.at(j).position()); + std::copy(sourceRow.cbegin(), sourceRow.cend(), row.begin()); } // Notify the proxy that data has changed @@ -120,10 +119,7 @@ void DataSource::update(QSurface3DSeries *series) void DataSource::clearData() { - for (int i = 0; i < m_data.size(); i++) { - QSurfaceDataArray &array = m_data[i]; - for (int j = 0; j < array.size(); j++) - delete array[j]; - array.clear(); - } + for (auto &array : std::as_const(m_data)) + qDeleteAll(array); + m_data.clear(); } |