/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Tools/Libs/GuiFoundation/Widgets/Implementation/ImageWidget.cpp
85 строк
2 KB
Ingrater
More clang-tidy static analysis fixes (#984)
19 июн 2023, 21:37
Не верифицирован
19 июн 2023, 21:37
ca42db7
Код
Авторство
О чём код?
#include <GuiFoundation/GuiFoundationPCH.h> #include <Foundation/Math/Math.h> #include <GuiFoundation/Widgets/ImageWidget.moc.h> #include <QGraphicsPixmapItem> #include <QScrollArea> #include <QScrollBar> ezQtImageScene::ezQtImageScene(QObject* pParent) : QGraphicsScene(pParent) { m_pImageItem = nullptr; setItemIndexMethod(QGraphicsScene::NoIndex); } void ezQtImageScene::SetImage(QPixmap pixmap) { if (m_pImageItem) delete m_pImageItem; m_Pixmap = pixmap; m_pImageItem = addPixmap(m_Pixmap); setSceneRect(0, 0, m_Pixmap.width(), m_Pixmap.height()); } ezQtImageWidget::ezQtImageWidget(QWidget* pParent, bool bShowButtons) : QWidget(pParent) { setupUi(this); m_pScene = new ezQtImageScene(GraphicsView); GraphicsView->setScene(m_pScene); m_fCurrentScale = 1.0f; if (!bShowButtons) ButtonBar->setVisible(false); } ezQtImageWidget::~ezQtImageWidget() = default; void ezQtImageWidget::SetImageSize(float fScale) { if (m_fCurrentScale == fScale) return; m_fCurrentScale = fScale; ImageApplyScale(); } void ezQtImageWidget::ScaleImage(float fFactor) { float fPrevScale = m_fCurrentScale; m_fCurrentScale = ezMath::Clamp(m_fCurrentScale * fFactor, 0.2f, 5.0f); ImageApplyScale(); } void ezQtImageWidget::ImageApplyScale() { QTransform scale = QTransform::fromScale(m_fCurrentScale, m_fCurrentScale); GraphicsView->setTransform(scale); } void ezQtImageWidget::SetImage(QPixmap pixmap) { m_pScene->SetImage(pixmap); ImageApplyScale(); } void ezQtImageWidget::on_ButtonZoomIn_clicked() { ScaleImage(1.25f); } void ezQtImageWidget::on_ButtonZoomOut_clicked() { ScaleImage(0.75f); } void ezQtImageWidget::on_ButtonResetZoom_clicked() { SetImageSize(1.0f); }