diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-03-03 10:56:05 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-03-09 09:23:26 +0100 |
commit | 67a66050312c4f5f423b58e4a0535c14e44450a5 (patch) | |
tree | 1c701d80d40324d4ea77f81ef66a0d2ec922e014 | |
parent | a0477768054a750e9e771014cc9331125b82e459 (diff) |
graphgallery example: Factor out pixmap drawing functions from SurfaceGraph::initialize()
The function is already quite big.
Task-number: QTBUG-110698
Change-Id: I7e31b64064595a700365d3b1654705924a36052e
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
(cherry picked from commit ef20d4baa2abaa010f2e07577fb586fdb1126834)
-rw-r--r-- | examples/datavisualization/graphgallery/surfacegraph.cpp | 114 |
1 files changed, 66 insertions, 48 deletions
diff --git a/examples/datavisualization/graphgallery/surfacegraph.cpp b/examples/datavisualization/graphgallery/surfacegraph.cpp index b5f5a1de..025fd360 100644 --- a/examples/datavisualization/graphgallery/surfacegraph.cpp +++ b/examples/datavisualization/graphgallery/surfacegraph.cpp @@ -15,6 +15,65 @@ using namespace Qt::StringLiterals; +static QPixmap gradientBtoYPB_Pixmap() +{ + QLinearGradient grBtoY(0, 0, 1, 100); + grBtoY.setColorAt(1.f, Qt::black); + grBtoY.setColorAt(0.67f, Qt::blue); + grBtoY.setColorAt(0.33f, Qt::red); + grBtoY.setColorAt(0.f, Qt::yellow); + QPixmap pm(24, 100); + QPainter pmp(&pm); + pmp.setBrush(QBrush(grBtoY)); + pmp.setPen(Qt::NoPen); + pmp.drawRect(0, 0, 24, 100); + return pm; +} + +static QPixmap gradientGtoRPB_Pixmap() +{ + QLinearGradient grGtoR(0, 0, 1, 100); + grGtoR.setColorAt(1.f, Qt::darkGreen); + grGtoR.setColorAt(0.5f, Qt::yellow); + grGtoR.setColorAt(0.2f, Qt::red); + grGtoR.setColorAt(0.f, Qt::darkRed); + QPixmap pm(24, 100); + QPainter pmp(&pm); + pmp.setBrush(QBrush(grGtoR)); + pmp.drawRect(0, 0, 24, 100); + return pm; +} + +static QPixmap highlightPixmap() +{ + constexpr int height = 400; + constexpr int width = 110; + constexpr int border = 10; + QLinearGradient gr(0, 0, 1, height - 2 * border); + gr.setColorAt(1.f, Qt::black); + gr.setColorAt(0.8f, Qt::darkGreen); + gr.setColorAt(0.6f, Qt::green); + gr.setColorAt(0.4f, Qt::yellow); + gr.setColorAt(0.2f, Qt::red); + gr.setColorAt(0.f, Qt::darkRed); + + QPixmap pmHighlight(width, height); + pmHighlight.fill(Qt::transparent); + QPainter pmpHighlight(&pmHighlight); + pmpHighlight.setBrush(QBrush(gr)); + pmpHighlight.setPen(Qt::NoPen); + 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) { + int yPos = i * step + border; + pmpHighlight.drawLine(border, yPos, 55, yPos); + const int height = 550 - (i * 110); + pmpHighlight.drawText(60, yPos + 2, QString::number(height) + u" m"_s); + } + return pmHighlight; +} + SurfaceGraph::SurfaceGraph() { m_surfaceGraph = new Q3DSurface(); @@ -118,30 +177,15 @@ bool SurfaceGraph::initialize(const QSize &minimumGraphSize, const QSize &maximu // sqrt-sin QGroupBox *colorGroupBox = new QGroupBox(u"Custom gradient"_s); - QLinearGradient grBtoY(0, 0, 1, 100); - grBtoY.setColorAt(1.f, Qt::black); - grBtoY.setColorAt(0.67f, Qt::blue); - grBtoY.setColorAt(0.33f, Qt::red); - grBtoY.setColorAt(0.f, Qt::yellow); - QPixmap pm(24, 100); - QPainter pmp(&pm); - pmp.setBrush(QBrush(grBtoY)); - pmp.setPen(Qt::NoPen); - pmp.drawRect(0, 0, 24, 100); + QPixmap pixmap = gradientBtoYPB_Pixmap(); QPushButton *gradientBtoYPB = new QPushButton(m_surfaceWidget); - gradientBtoYPB->setIcon(QIcon(pm)); - gradientBtoYPB->setIconSize(QSize(24, 100)); + gradientBtoYPB->setIcon(QIcon(pixmap)); + gradientBtoYPB->setIconSize(pixmap.size()); - QLinearGradient grGtoR(0, 0, 1, 100); - grGtoR.setColorAt(1.f, Qt::darkGreen); - grGtoR.setColorAt(0.5f, Qt::yellow); - grGtoR.setColorAt(0.2f, Qt::red); - grGtoR.setColorAt(0.f, Qt::darkRed); - pmp.setBrush(QBrush(grGtoR)); - pmp.drawRect(0, 0, 24, 100); + pixmap = gradientGtoRPB_Pixmap(); QPushButton *gradientGtoRPB = new QPushButton(m_surfaceWidget); - gradientGtoRPB->setIcon(QIcon(pm)); - gradientGtoRPB->setIconSize(QSize(24, 100)); + gradientGtoRPB->setIcon(QIcon(pixmap)); + gradientGtoRPB->setIconSize(pixmap.size()); QHBoxLayout *colorHBox = new QHBoxLayout; colorHBox->addWidget(gradientBtoYPB); @@ -192,34 +236,8 @@ bool SurfaceGraph::initialize(const QSize &minimumGraphSize, const QSize &maximu QCheckBox *enableTexture = new QCheckBox(u"Surface texture"_s); enableTexture->setVisible(false); - int height = 400; - int width = 110; - int border = 10; - QLinearGradient gr(0, 0, 1, height - 2 * border); - gr.setColorAt(1.f, Qt::black); - gr.setColorAt(0.8f, Qt::darkGreen); - gr.setColorAt(0.6f, Qt::green); - gr.setColorAt(0.4f, Qt::yellow); - gr.setColorAt(0.2f, Qt::red); - gr.setColorAt(0.f, Qt::darkRed); - - QPixmap pmHighlight(width, height); - pmHighlight.fill(Qt::transparent); - QPainter pmpHighlight(&pmHighlight); - pmpHighlight.setBrush(QBrush(gr)); - pmpHighlight.setPen(Qt::NoPen); - 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) { - int yPos = i * step + border; - pmpHighlight.drawLine(border, yPos, 55, yPos); - const int height = 550 - (i * 110); - pmpHighlight.drawText(60, yPos + 2, QString::number(height) + u" m"_s); - } - QLabel *label = new QLabel(m_surfaceWidget); - label->setPixmap(pmHighlight); + label->setPixmap(highlightPixmap()); QGroupBox *heightMapGroupBox = new QGroupBox(u"Highlight color map"_s); QVBoxLayout *colorMapVBox = new QVBoxLayout; |