summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2023-03-02 12:51:25 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2023-03-03 07:36:41 +0100
commited80c940b659455e2bd98700157f5fc78a17b41c (patch)
tree15812829e16a24d050d1df845d2304735b02a309 /examples
parent1bfc0919b8ddb0f1576b6f7ad20a72dc5d23f3e4 (diff)
graphgallery example: Streamline the code a bit
- Populate the data rows using reserve()/append() instead of resize() / assign. - Use prefix increment - Use QStringView when splitting the data file lines Pick-to: 6.5 Task-number: QTBUG-110698 Change-Id: I70fed07a9850e2636e6085b9a9190f1e5a062a67 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'examples')
-rw-r--r--examples/datavisualization/graphgallery/highlightseries.cpp12
-rw-r--r--examples/datavisualization/graphgallery/rainfalldata.cpp13
-rw-r--r--examples/datavisualization/graphgallery/scatterdatamodifier.cpp39
-rw-r--r--examples/datavisualization/graphgallery/surfacegraph.cpp2
-rw-r--r--examples/datavisualization/graphgallery/surfacegraphmodifier.cpp12
-rw-r--r--examples/datavisualization/graphgallery/topographicseries.cpp13
6 files changed, 44 insertions, 47 deletions
diff --git a/examples/datavisualization/graphgallery/highlightseries.cpp b/examples/datavisualization/graphgallery/highlightseries.cpp
index c2aab2db..8ce75ac0 100644
--- a/examples/datavisualization/graphgallery/highlightseries.cpp
+++ b/examples/datavisualization/graphgallery/highlightseries.cpp
@@ -65,14 +65,16 @@ void HighlightSeries::handlePositionChange(const QPoint &position)
QSurfaceDataArray *dataArray = new QSurfaceDataArray;
dataArray->reserve(endZ - startZ);
- for (int i = startZ; i < endZ; i++) {
- QSurfaceDataRow *newRow = new QSurfaceDataRow(endX - startX);
+ for (int i = startZ; i < endZ; ++i) {
+ QSurfaceDataRow *newRow = new QSurfaceDataRow;
+ newRow->reserve(endX - startX);
QSurfaceDataRow *srcRow = srcArray.at(i);
- for (int j = startX, p = 0; j < endX; j++, p++) {
+ for (int j = startX; j < endX; ++j) {
QVector3D pos = srcRow->at(j).position();
- (*newRow)[p].setPosition(QVector3D(pos.x(), pos.y() + 0.1f, pos.z()));
+ pos.setY(pos.y() + 0.1f);
+ newRow->append(QSurfaceDataItem(pos));
}
- *dataArray << newRow;
+ dataArray->append(newRow);
}
dataProxy()->resetArray(dataArray);
diff --git a/examples/datavisualization/graphgallery/rainfalldata.cpp b/examples/datavisualization/graphgallery/rainfalldata.cpp
index 8765db2c..11b67565 100644
--- a/examples/datavisualization/graphgallery/rainfalldata.cpp
+++ b/examples/datavisualization/graphgallery/rainfalldata.cpp
@@ -14,7 +14,7 @@ using namespace Qt::StringLiterals;
RainfallData::RainfallData()
{
// In data file the months are in numeric format, so create custom list
- for (int i = 1; i <= 12; i++)
+ for (int i = 1; i <= 12; ++i)
m_numericMonths << QString::number(i);
m_columnCount = m_numericMonths.size();
@@ -65,7 +65,7 @@ void RainfallData::updateYearsList(int start, int end)
{
m_years.clear();
- for (int i = start; i <= end; i++)
+ for (int i = start; i <= end; ++i)
m_years << QString::number(i);
m_rowCount = m_years.size();
@@ -79,15 +79,14 @@ void RainfallData::addDataSet()
VariantDataItemList *itemList = new VariantDataItemList;
// Read data from a data file into the data item list
- QTextStream stream;
QFile dataFile(":/data/raindata.txt");
if (dataFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
- stream.setDevice(&dataFile);
+ QTextStream stream(&dataFile);
while (!stream.atEnd()) {
QString line = stream.readLine();
if (line.startsWith('#')) // Ignore comments
continue;
- QStringList strList = line.split(',', Qt::SkipEmptyParts);
+ const auto strList = QStringView{line}.split(',', Qt::SkipEmptyParts);
// Each line has three data items: Year, month, and rainfall value
if (strList.size() < 3) {
qWarning() << "Invalid row read from data:" << line;
@@ -96,8 +95,8 @@ void RainfallData::addDataSet()
// Store year and month as strings, and rainfall value as double
// into a variant data item and add the item to the item list.
VariantDataItem *newItem = new VariantDataItem;
- for (int i = 0; i < 2; i++)
- newItem->append(strList.at(i).trimmed());
+ for (int i = 0; i < 2; ++i)
+ newItem->append(strList.at(i).trimmed().toString());
newItem->append(strList.at(2).trimmed().toDouble());
itemList->append(newItem);
}
diff --git a/examples/datavisualization/graphgallery/scatterdatamodifier.cpp b/examples/datavisualization/graphgallery/scatterdatamodifier.cpp
index f018c81b..575515a4 100644
--- a/examples/datavisualization/graphgallery/scatterdatamodifier.cpp
+++ b/examples/datavisualization/graphgallery/scatterdatamodifier.cpp
@@ -71,24 +71,21 @@ void ScatterDataModifier::addData()
//! [4]
QScatterDataArray *dataArray = new QScatterDataArray;
- dataArray->resize(m_itemCount);
- QScatterDataItem *ptrToDataArray = &dataArray->first();
+ dataArray->reserve(m_itemCount);
//! [4]
#ifdef RANDOM_SCATTER
- for (int i = 0; i < m_itemCount; i++) {
- ptrToDataArray->setPosition(randVector());
- ptrToDataArray++;
- }
+ for (int i = 0; i < m_itemCount; ++i)
+ dataArray->append(QScatterDataItem(randVector()));
#else
//! [5]
- float limit = qSqrt(m_itemCount) / 2.0f;
- for (int i = -limit; i < limit; i++) {
- for (int j = -limit; j < limit; j++) {
- ptrToDataArray->setPosition(QVector3D(float(i) + 0.5f,
- qCos(qDegreesToRadians(float(i * j) / m_curveDivider)),
- float(j) + 0.5f));
- ptrToDataArray++;
+ const float limit = qSqrt(m_itemCount) / 2.0f;
+ for (int i = -limit; i < limit; ++i) {
+ for (int j = -limit; j < limit; ++j) {
+ const float x = float(i) + 0.5f;
+ const float y = qCos(qDegreesToRadians(float(i * j) / m_curveDivider));
+ const float z = float(j) + 0.5f;
+ dataArray->append(QScatterDataItem({x, y, z}));
}
}
//! [5]
@@ -148,12 +145,12 @@ void ScatterDataModifier::changeShadowQuality(int quality)
void ScatterDataModifier::setBackgroundEnabled(int enabled)
{
- m_graph->activeTheme()->setBackgroundEnabled((bool)enabled);
+ m_graph->activeTheme()->setBackgroundEnabled(enabled == Qt::Checked);
}
void ScatterDataModifier::setGridEnabled(int enabled)
{
- m_graph->activeTheme()->setGridEnabled((bool)enabled);
+ m_graph->activeTheme()->setGridEnabled(enabled == Qt::Checked);
}
void ScatterDataModifier::toggleItemCount()
@@ -186,11 +183,9 @@ void ScatterDataModifier::toggleRanges()
QVector3D ScatterDataModifier::randVector()
{
- return QVector3D(
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f -
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f,
- (float)(QRandomGenerator::global()->bounded(100)) / 100.0f -
- (float)(QRandomGenerator::global()->bounded(100)) / 100.0f,
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f -
- (float)(QRandomGenerator::global()->bounded(100)) / 2.0f);
+ auto *generator = QRandomGenerator::global();
+ const auto x = float(generator->bounded(100)) / 2.0f - float(generator->bounded(100)) / 2.0f;
+ const auto y = float(generator->bounded(100)) / 100.0f - float(generator->bounded(100)) / 100.0f;
+ const auto z = float(generator->bounded(100)) / 2.0f - float(generator->bounded(100)) / 2.0f;
+ return {x, y, z};
}
diff --git a/examples/datavisualization/graphgallery/surfacegraph.cpp b/examples/datavisualization/graphgallery/surfacegraph.cpp
index 6147c437..b5f5a1de 100644
--- a/examples/datavisualization/graphgallery/surfacegraph.cpp
+++ b/examples/datavisualization/graphgallery/surfacegraph.cpp
@@ -211,7 +211,7 @@ bool SurfaceGraph::initialize(const QSize &minimumGraphSize, const QSize &maximu
pmpHighlight.drawRect(border, border, 35, height - 2 * border);
pmpHighlight.setPen(Qt::black);
int step = (height - 2 * border) / 5;
- for (int i = 0; i < 6; i++) {
+ for (int i = 0; i < 6; ++i) {
int yPos = i * step + border;
pmpHighlight.drawLine(border, yPos, 55, yPos);
const int height = 550 - (i * 110);
diff --git a/examples/datavisualization/graphgallery/surfacegraphmodifier.cpp b/examples/datavisualization/graphgallery/surfacegraphmodifier.cpp
index 3ab9f7eb..3b2e2f3a 100644
--- a/examples/datavisualization/graphgallery/surfacegraphmodifier.cpp
+++ b/examples/datavisualization/graphgallery/surfacegraphmodifier.cpp
@@ -154,19 +154,19 @@ void SurfaceGraphModifier::fillSqrtSinProxy()
//! [1]
QSurfaceDataArray *dataArray = new QSurfaceDataArray;
dataArray->reserve(sampleCountZ);
- for (int i = 0 ; i < sampleCountZ ; i++) {
- QSurfaceDataRow *newRow = new QSurfaceDataRow(sampleCountX);
+ for (int i = 0 ; i < sampleCountZ ; ++i) {
+ QSurfaceDataRow *newRow = new QSurfaceDataRow;
+ newRow->reserve(sampleCountX);
// Keep values within range bounds, since just adding step can cause minor drift due
// to the rounding errors.
float z = qMin(sampleMax, (i * stepZ + sampleMin));
- int index = 0;
- for (int j = 0; j < sampleCountX; j++) {
+ for (int j = 0; j < sampleCountX; ++j) {
float x = qMin(sampleMax, (j * stepX + sampleMin));
float R = qSqrt(z * z + x * x) + 0.01f;
float y = (qSin(R) / R + 0.24f) * 1.61f;
- (*newRow)[index++].setPosition(QVector3D(x, y, z));
+ newRow->append(QSurfaceDataItem({x, y, z}));
}
- *dataArray << newRow;
+ dataArray->append(newRow);
}
m_sqrtSinProxy->resetArray(dataArray);
diff --git a/examples/datavisualization/graphgallery/topographicseries.cpp b/examples/datavisualization/graphgallery/topographicseries.cpp
index ea0be77d..ea6767e0 100644
--- a/examples/datavisualization/graphgallery/topographicseries.cpp
+++ b/examples/datavisualization/graphgallery/topographicseries.cpp
@@ -30,20 +30,21 @@ void TopographicSeries::setTopographyFile(const QString file, float width, float
QSurfaceDataArray *dataArray = new QSurfaceDataArray;
dataArray->reserve(imageHeight);
- for (int i = 0; i < imageHeight; i++) {
+ for (int i = 0; i < imageHeight; ++i) {
int p = i * widthBits;
float z = height - float(i) * stepZ;
- QSurfaceDataRow *newRow = new QSurfaceDataRow(imageWidth);
- for (int j = 0; j < imageWidth; j++) {
+ QSurfaceDataRow *newRow = new QSurfaceDataRow;
+ newRow->reserve(imageWidth);
+ for (int j = 0; j < imageWidth; ++j) {
uchar aa = bits[p + 0];
uchar rr = bits[p + 1];
uchar gg = bits[p + 2];
uint color = uint((gg << 16) + (rr << 8) + aa);
float y = float(color) / packingFactor;
- (*newRow)[j].setPosition(QVector3D(float(j) * stepX, y, z));
- p = p + 4;
+ newRow->append(QSurfaceDataItem({float(j) * stepX, y, z}));
+ p += 4;
}
- *dataArray << newRow;
+ dataArray->append(newRow);
}
dataProxy()->resetArray(dataArray);