|
1 | 1 | #include "CanvasWidget.h" |
2 | 2 |
|
3 | 3 | #include <QLabel> |
4 | | -#include <QResizeEvent> |
5 | 4 | #include <QSignalBlocker> |
6 | 5 | #include <QToolButton> |
7 | 6 | #include <QVBoxLayout> |
| 7 | +#include <QHBoxLayout> |
8 | 8 |
|
9 | 9 | #include "GLCanvasWidget.h" |
10 | 10 |
|
11 | 11 | CanvasWidget::CanvasWidget(const QString& title, QWidget* parent) |
12 | 12 | : QWidget(parent) |
13 | 13 | , m_canvas(new GLCanvasWidget(this)) |
14 | 14 | , m_label(new QLabel(title, this)) |
15 | | - , m_fitButton(new QToolButton(m_canvas)) |
16 | | - , m_backButton(new QToolButton(m_canvas)) |
17 | | - , m_forwardButton(new QToolButton(m_canvas)) |
18 | | - , m_gridButton(new QToolButton(m_canvas)) |
19 | | - , m_originalButton(new QToolButton(m_canvas)) |
20 | | - , m_backgroundButton(new QToolButton(m_canvas)) |
21 | | - , m_maskButton(new QToolButton(m_canvas)) |
22 | | - , m_dynamicButton(new QToolButton(m_canvas)) |
23 | | - , m_backgroundMaskButton(new QToolButton(m_canvas)) |
24 | | - , m_zoneButton(new QToolButton(m_canvas)) |
25 | | - , m_hdButton(new QToolButton(m_canvas)) |
26 | | - , m_rotateButton(new QToolButton(m_canvas)) |
| 15 | + , m_viewLabel(new QLabel(this)) |
| 16 | + , m_fitButton(new QToolButton(this)) |
| 17 | + , m_backButton(new QToolButton(this)) |
| 18 | + , m_forwardButton(new QToolButton(this)) |
| 19 | + , m_gridButton(new QToolButton(this)) |
| 20 | + , m_originalButton(new QToolButton(this)) |
| 21 | + , m_backgroundButton(new QToolButton(this)) |
| 22 | + , m_maskButton(new QToolButton(this)) |
| 23 | + , m_dynamicButton(new QToolButton(this)) |
| 24 | + , m_backgroundMaskButton(new QToolButton(this)) |
| 25 | + , m_zoneButton(new QToolButton(this)) |
| 26 | + , m_hdButton(new QToolButton(this)) |
| 27 | + , m_rotateButton(new QToolButton(this)) |
27 | 28 | { |
28 | 29 | auto* layout = new QVBoxLayout(this); |
| 30 | + auto* toolbar = new QHBoxLayout(); |
| 31 | + toolbar->setContentsMargins(0, 0, 0, 0); |
| 32 | + toolbar->setSpacing(6); |
29 | 33 | m_canvas->setOverlayText(title); |
30 | 34 | m_label->setAlignment(Qt::AlignCenter); |
| 35 | + m_viewLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); |
| 36 | + m_viewLabel->setText("Zoom 1.00x Pan 0,0"); |
| 37 | + toolbar->addWidget(m_backButton); |
| 38 | + toolbar->addWidget(m_forwardButton); |
| 39 | + toolbar->addWidget(m_fitButton); |
| 40 | + toolbar->addWidget(m_gridButton); |
| 41 | + toolbar->addWidget(m_originalButton); |
| 42 | + toolbar->addWidget(m_backgroundButton); |
| 43 | + toolbar->addWidget(m_maskButton); |
| 44 | + toolbar->addWidget(m_dynamicButton); |
| 45 | + toolbar->addWidget(m_backgroundMaskButton); |
| 46 | + toolbar->addWidget(m_zoneButton); |
| 47 | + toolbar->addWidget(m_hdButton); |
| 48 | + toolbar->addWidget(m_rotateButton); |
| 49 | + toolbar->addStretch(1); |
| 50 | + toolbar->addWidget(m_viewLabel); |
| 51 | + layout->addLayout(toolbar); |
31 | 52 | layout->addWidget(m_canvas, 1); |
32 | 53 | layout->addWidget(m_label, 0); |
33 | 54 | setLayout(layout); |
@@ -117,6 +138,13 @@ CanvasWidget::CanvasWidget(const QString& title, QWidget* parent) |
117 | 138 | m_rotateButton->setToolTip("Preview color rotations"); |
118 | 139 | m_rotateButton->setCursor(Qt::PointingHandCursor); |
119 | 140 | connect(m_rotateButton, &QToolButton::toggled, this, &CanvasWidget::rotateToggled); |
| 141 | + |
| 142 | + connect(m_canvas, &GLCanvasWidget::zoomPanChanged, this, [this](double zoom, const QPointF& pan) { |
| 143 | + m_viewLabel->setText(QString("Zoom %1x Pan %2,%3") |
| 144 | + .arg(QString::number(zoom, 'f', 2)) |
| 145 | + .arg(QString::number(pan.x(), 'f', 1)) |
| 146 | + .arg(QString::number(pan.y(), 'f', 1))); |
| 147 | + }); |
120 | 148 | } |
121 | 149 |
|
122 | 150 | void CanvasWidget::setTitle(const QString& title) |
@@ -334,74 +362,3 @@ void CanvasWidget::setHdButtonEnabled(bool enabled) |
334 | 362 | } |
335 | 363 | m_hdButton->setEnabled(enabled); |
336 | 364 | } |
337 | | - |
338 | | -void CanvasWidget::resizeEvent(QResizeEvent* event) |
339 | | -{ |
340 | | - QWidget::resizeEvent(event); |
341 | | - if (!m_fitButton || !m_backButton || !m_forwardButton || !m_gridButton || !m_originalButton || !m_backgroundButton || |
342 | | - !m_maskButton || !m_dynamicButton || !m_backgroundMaskButton || !m_zoneButton || !m_hdButton || |
343 | | - !m_rotateButton) { |
344 | | - return; |
345 | | - } |
346 | | - const int margin = 8; |
347 | | - const QSize forwardSize = m_forwardButton->sizeHint(); |
348 | | - const int x = m_canvas->width() - forwardSize.width() - margin; |
349 | | - const int y = margin; |
350 | | - m_forwardButton->move(x, y); |
351 | | - m_forwardButton->raise(); |
352 | | - |
353 | | - const QSize backSize = m_backButton->sizeHint(); |
354 | | - const int backX = x - backSize.width() - 6; |
355 | | - m_backButton->move(backX, y); |
356 | | - m_backButton->raise(); |
357 | | - |
358 | | - const QSize fitSize = m_fitButton->sizeHint(); |
359 | | - const int fitX = backX - fitSize.width() - 6; |
360 | | - m_fitButton->move(fitX, y); |
361 | | - m_fitButton->raise(); |
362 | | - |
363 | | - const QSize gridSize = m_gridButton->sizeHint(); |
364 | | - const int gridX = fitX - gridSize.width() - 6; |
365 | | - m_gridButton->move(gridX, y); |
366 | | - m_gridButton->raise(); |
367 | | - |
368 | | - const QSize originalSize = m_originalButton->sizeHint(); |
369 | | - const int originalX = gridX - originalSize.width() - 6; |
370 | | - m_originalButton->move(originalX, y); |
371 | | - m_originalButton->raise(); |
372 | | - |
373 | | - const QSize backgroundSize = m_backgroundButton->sizeHint(); |
374 | | - const int backgroundX = originalX - backgroundSize.width() - 6; |
375 | | - m_backgroundButton->move(backgroundX, y); |
376 | | - m_backgroundButton->raise(); |
377 | | - |
378 | | - const QSize dynamicSize = m_dynamicButton->sizeHint(); |
379 | | - const int dynamicX = backgroundX - dynamicSize.width() - 6; |
380 | | - m_dynamicButton->move(dynamicX, y); |
381 | | - m_dynamicButton->raise(); |
382 | | - |
383 | | - const QSize maskSize = m_maskButton->sizeHint(); |
384 | | - const int maskX = dynamicX - maskSize.width() - 6; |
385 | | - m_maskButton->move(maskX, y); |
386 | | - m_maskButton->raise(); |
387 | | - |
388 | | - const QSize zoneSize = m_zoneButton->sizeHint(); |
389 | | - const int zoneX = maskX - zoneSize.width() - 6; |
390 | | - m_zoneButton->move(zoneX, y); |
391 | | - m_zoneButton->raise(); |
392 | | - |
393 | | - const QSize bgSize = m_backgroundMaskButton->sizeHint(); |
394 | | - const int bgX = zoneX - bgSize.width() - 6; |
395 | | - m_backgroundMaskButton->move(bgX, y); |
396 | | - m_backgroundMaskButton->raise(); |
397 | | - |
398 | | - const QSize hdSize = m_hdButton->sizeHint(); |
399 | | - const int hdX = bgX - hdSize.width() - 6; |
400 | | - m_hdButton->move(hdX, y); |
401 | | - m_hdButton->raise(); |
402 | | - |
403 | | - const QSize rotateSize = m_rotateButton->sizeHint(); |
404 | | - const int rotateX = hdX - rotateSize.width() - 6; |
405 | | - m_rotateButton->move(rotateX, y); |
406 | | - m_rotateButton->raise(); |
407 | | -} |
0 commit comments