From 03a3b717907c103d3d8f92ab8963234c765ec109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Poizl?= Date: Sat, 16 May 2020 22:46:57 +0200 Subject: [PATCH] Zoom refractor --- imagescrollareagl.cpp | 32 +++++++++++++++----------------- imagescrollareagl.h | 1 + 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/imagescrollareagl.cpp b/imagescrollareagl.cpp index 3aa5f7c..b7b1187 100644 --- a/imagescrollareagl.cpp +++ b/imagescrollareagl.cpp @@ -302,31 +302,29 @@ void ImageScrollAreaGL::mousePressEvent(QMouseEvent *event) void ImageScrollAreaGL::wheelEvent(QWheelEvent *event) { - if(event->angleDelta().y() > 0) - zoomIn(); - else - zoomOut(); + if(event->angleDelta().y() != 0) + zoom(event->angleDelta().y() / 1200.0f); +} + +void ImageScrollAreaGL::zoom(float delta) +{ + if((m_scale >= 8.0f && delta > 0) || (m_scale <= 0.1f && delta < 0))return; + + m_scale += delta; + m_imageWidget->blockRepaint(true); + m_imageWidget->setScale(m_scale); + updateScrollbars(true); + m_imageWidget->blockRepaint(false); } void ImageScrollAreaGL::zoomIn() { - if(m_scale >= 8.0f)return; - m_scale += 0.1f; - m_imageWidget->blockRepaint(true); - m_imageWidget->setScale(m_scale); - updateScrollbars(true); - m_imageWidget->blockRepaint(false); + zoom(0.1f); } void ImageScrollAreaGL::zoomOut() { - if(m_scale <= 0.1f)return; - m_scale -= 0.1f; - m_imageWidget->blockRepaint(true); - m_imageWidget->setScale(m_scale); - updateScrollbars(true); - m_imageWidget->blockRepaint(false); - //m_imageWidget->repaint(); + zoom(-0.1f); } void ImageScrollAreaGL::bestFit() diff --git a/imagescrollareagl.h b/imagescrollareagl.h index 9389243..cda253f 100644 --- a/imagescrollareagl.h +++ b/imagescrollareagl.h @@ -79,6 +79,7 @@ protected: void mouseMoveEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event); void wheelEvent(QWheelEvent *event); + void zoom(float delta); public slots: void zoomIn(); void zoomOut();