Refactoring.

Code style.
This commit is contained in:
Roman Telezhynskyi 2023-08-18 16:22:16 +03:00
parent a7b0ed1171
commit 46241e8e85
2 changed files with 51 additions and 69 deletions

View File

@ -73,7 +73,7 @@ auto ScrollingSteps(QWheelEvent *wheel_event) -> qreal
const QPoint numPixels = wheel_event->pixelDelta(); const QPoint numPixels = wheel_event->pixelDelta();
const QPoint numDegrees = wheel_event->angleDelta() / 8; const QPoint numDegrees = wheel_event->angleDelta() / 8;
qreal numSteps = 0; qreal numSteps = 0;
VCommonSettings *settings = qobject_cast<VCommonSettings *>(VAbstractApplication::VApp()->Settings()); VCommonSettings *settings = VAbstractApplication::VApp()->Settings();
if (not numPixels.isNull()) if (not numPixels.isNull())
{ {
@ -108,8 +108,7 @@ auto PrepareScrolling(qreal scheduledScrollings, QWheelEvent *wheel_event) -> qr
scheduledScrollings += numSteps; scheduledScrollings += numSteps;
} }
scheduledScrollings *= scheduledScrollings *= VAbstractApplication::VApp()->Settings()->GetScrollingAcceleration();
qobject_cast<VCommonSettings *>(VAbstractApplication::VApp()->Settings())->GetScrollingAcceleration();
return scheduledScrollings; return scheduledScrollings;
} }
@ -138,15 +137,7 @@ auto PrioritizeItems(const QList<QGraphicsItem *> &list) -> QList<QGraphicsItem
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
GraphicsViewZoom::GraphicsViewZoom(QGraphicsView *view) GraphicsViewZoom::GraphicsViewZoom(QGraphicsView *view)
: QObject(view), : QObject(view),
_view(view), _view(view)
_modifiers(Qt::ControlModifier),
_zoom_factor_base(1.0015),
target_scene_pos(),
target_viewport_pos(),
verticalScrollAnim(),
_numScheduledVerticalScrollings(0),
horizontalScrollAnim(),
_numScheduledHorizontalScrollings(0)
{ {
_view->viewport()->installEventFilter(this); _view->viewport()->installEventFilter(this);
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
@ -205,13 +196,13 @@ void GraphicsViewZoom::set_zoom_factor_base(double value)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void GraphicsViewZoom::InitScrollingAnimation() void GraphicsViewZoom::InitScrollingAnimation()
{ {
VCommonSettings *settings = qobject_cast<VCommonSettings *>(VAbstractApplication::VApp()->Settings());
if (not verticalScrollAnim.isNull()) if (not verticalScrollAnim.isNull())
{ {
delete verticalScrollAnim; delete verticalScrollAnim;
} }
VCommonSettings *settings = VAbstractApplication::VApp()->Settings();
verticalScrollAnim = new QTimeLine(settings->GetScrollingDuration(), this); verticalScrollAnim = new QTimeLine(settings->GetScrollingDuration(), this);
verticalScrollAnim->setUpdateInterval(settings->GetScrollingUpdateInterval()); verticalScrollAnim->setUpdateInterval(settings->GetScrollingUpdateInterval());
@ -277,7 +268,8 @@ auto GraphicsViewZoom::eventFilter(QObject *object, QEvent *event) -> bool
* This data need for gentle_zoom(). * This data need for gentle_zoom().
* Almoust the same we do in method GraphicsViewZoom::animFinished. * Almoust the same we do in method GraphicsViewZoom::animFinished.
*/ */
QMouseEvent *mouse_event = static_cast<QMouseEvent *>(event); // NOLINTNEXTLINE(cppcoreguidelines-pro-type-static-cast-downcast)
auto *mouse_event = static_cast<QMouseEvent *>(event);
QPointF delta = target_viewport_pos - mouse_event->pos(); QPointF delta = target_viewport_pos - mouse_event->pos();
if (qAbs(delta.x()) > 5 || qAbs(delta.y()) > 5) if (qAbs(delta.x()) > 5 || qAbs(delta.y()) > 5)
{ {
@ -286,9 +278,11 @@ auto GraphicsViewZoom::eventFilter(QObject *object, QEvent *event) -> bool
} }
return false; return false;
} }
if (event->type() == QEvent::Wheel) if (event->type() == QEvent::Wheel)
{ {
if (QWheelEvent *wheel_event = static_cast<QWheelEvent *>(event)) // NOLINTNEXTLINE(cppcoreguidelines-pro-type-static-cast-downcast)
if (auto *wheel_event = static_cast<QWheelEvent *>(event))
{ {
const QPoint numDegrees = wheel_event->angleDelta(); const QPoint numDegrees = wheel_event->angleDelta();
if (numDegrees.x() == 0) if (numDegrees.x() == 0)
@ -298,31 +292,29 @@ auto GraphicsViewZoom::eventFilter(QObject *object, QEvent *event) -> bool
gentle_zoom(qPow(_zoom_factor_base, numDegrees.y())); gentle_zoom(qPow(_zoom_factor_base, numDegrees.y()));
return true; return true;
} }
else if (QGuiApplication::keyboardModifiers() == Qt::ShiftModifier)
if (QGuiApplication::keyboardModifiers() == Qt::ShiftModifier)
{ {
StartHorizontalScrollings(wheel_event); StartHorizontalScrollings(wheel_event);
return true; return true;
} }
else
{
StartVerticalScrollings(wheel_event);
return true;
}
}
else
{
if (QGuiApplication::keyboardModifiers() == _modifiers)
{
return true; // ignore
}
StartHorizontalScrollings(wheel_event); StartVerticalScrollings(wheel_event);
return true; return true;
} }
if (QGuiApplication::keyboardModifiers() == _modifiers)
{
return true; // ignore
}
StartHorizontalScrollings(wheel_event);
return true;
} }
} }
else if (event->type() == QEvent::Gesture) else if (event->type() == QEvent::Gesture)
{ {
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-static-cast-downcast)
return GestureEvent(static_cast<QGestureEvent *>(event)); return GestureEvent(static_cast<QGestureEvent *>(event));
} }
@ -403,7 +395,7 @@ auto GraphicsViewZoom::GestureEvent(QGestureEvent *event) -> bool
{ {
if (QGesture *pinch = event->gesture(Qt::PinchGesture)) if (QGesture *pinch = event->gesture(Qt::PinchGesture))
{ {
PinchTriggered(static_cast<QPinchGesture *>(pinch)); PinchTriggered(static_cast<QPinchGesture *>(pinch)); // NOLINT(cppcoreguidelines-pro-type-static-cast-downcast)
return true; return true;
} }
return false; return false;
@ -428,20 +420,14 @@ const unsigned long VMainGraphicsView::scrollDelay = 160;
* @param parent parent object. * @param parent parent object.
*/ */
VMainGraphicsView::VMainGraphicsView(QWidget *parent) VMainGraphicsView::VMainGraphicsView(QWidget *parent)
: QGraphicsView(parent), : QGraphicsView(parent)
zoom(nullptr),
showToolOptions(true),
isAllowRubberBand(true),
m_ptStartPos(),
m_oldCursor(),
m_currentCursor(Qt::ArrowCursor)
{ {
setAcceptDrops(true); setAcceptDrops(true);
VCommonSettings *settings = qobject_cast<VCommonSettings *>(VAbstractApplication::VApp()->Settings()); VCommonSettings *settings = VAbstractApplication::VApp()->Settings();
if (settings && settings->IsOpenGLRender()) if (settings && settings->IsOpenGLRender())
{ {
QOpenGLWidget *viewport = new QOpenGLWidget(); auto *viewport = new QOpenGLWidget();
QSurfaceFormat fmt; QSurfaceFormat fmt;
fmt.setSamples(settings->GetGraphicalOutput() ? 10 : 0); fmt.setSamples(settings->GetGraphicalOutput() ? 10 : 0);
fmt.setStencilBufferSize(8); fmt.setStencilBufferSize(8);
@ -512,7 +498,7 @@ void VMainGraphicsView::ZoomOriginal()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VMainGraphicsView::ZoomFitBest() void VMainGraphicsView::ZoomFitBest()
{ {
VMainGraphicsScene *currentScene = qobject_cast<VMainGraphicsScene *>(scene()); auto *currentScene = qobject_cast<VMainGraphicsScene *>(scene());
SCASSERT(currentScene) SCASSERT(currentScene)
currentScene->SetOriginsVisible(false); currentScene->SetOriginsVisible(false);
const QRectF rect = currentScene->VisibleItemsBoundingRect(); const QRectF rect = currentScene->VisibleItemsBoundingRect();
@ -758,7 +744,7 @@ void VMainGraphicsView::EnsureItemVisibleWithDelay(const QGraphicsItem *item, un
else else
{ {
// Ensure visible only small rect around a cursor // Ensure visible only small rect around a cursor
VMainGraphicsScene *currentScene = qobject_cast<VMainGraphicsScene *>(item->scene()); auto *currentScene = qobject_cast<VMainGraphicsScene *>(item->scene());
SCASSERT(currentScene); SCASSERT(currentScene);
const QPointF cursorPosition = currentScene->getScenePos(); const QPointF cursorPosition = currentScene->getScenePos();
EnsureVisibleWithDelay( EnsureVisibleWithDelay(
@ -810,15 +796,8 @@ void VMainGraphicsView::SetAntialiasing(bool value)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
auto VMainGraphicsView::IsOpenGLRender() const -> bool auto VMainGraphicsView::IsOpenGLRender() const -> bool
{ {
QOpenGLWidget *viewport = qobject_cast<QOpenGLWidget *>(this->viewport()); auto *viewport = qobject_cast<QOpenGLWidget *>(this->viewport());
if (viewport) return viewport != nullptr;
{
return true;
}
else
{
return false;
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -850,7 +829,7 @@ void VMainGraphicsView::NewSceneRect(QGraphicsScene *sc, QGraphicsView *view, QG
const QRectF viewRect = SceneVisibleArea(view); const QRectF viewRect = SceneVisibleArea(view);
// Calculate scene rect // Calculate scene rect
VMainGraphicsScene *currentScene = qobject_cast<VMainGraphicsScene *>(sc); auto *currentScene = qobject_cast<VMainGraphicsScene *>(sc);
SCASSERT(currentScene) SCASSERT(currentScene)
const QRectF itemsRect = currentScene->VisibleItemsBoundingRect(); const QRectF itemsRect = currentScene->VisibleItemsBoundingRect();
@ -881,5 +860,5 @@ auto VMainGraphicsView::SceneVisibleArea(QGraphicsView *view) -> QRectF
{ {
SCASSERT(view != nullptr) SCASSERT(view != nullptr)
// to receive the currently visible area, map the widgets bounds to the scene // to receive the currently visible area, map the widgets bounds to the scene
return QRectF(view->mapToScene(0, 0), view->mapToScene(view->width(), view->height())); return {view->mapToScene(0, 0), view->mapToScene(view->width(), view->height())};
} }

View File

@ -82,32 +82,34 @@ public:
void set_modifiers(Qt::KeyboardModifiers modifiers); void set_modifiers(Qt::KeyboardModifiers modifiers);
void set_zoom_factor_base(double value); void set_zoom_factor_base(double value);
void InitScrollingAnimation(); void InitScrollingAnimation();
signals: signals:
void zoomed(); void zoomed();
public slots: public slots:
void VerticalScrollingTime(qreal x); void VerticalScrollingTime(qreal x);
void HorizontalScrollingTime(qreal x); void HorizontalScrollingTime(qreal x);
void animFinished(); void animFinished();
protected: protected:
virtual auto eventFilter(QObject *object, QEvent *event) -> bool override; auto eventFilter(QObject *object, QEvent *event) -> bool override;
private: private:
// cppcheck-suppress unknownMacro // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(GraphicsViewZoom) // NOLINT Q_DISABLE_COPY_MOVE(GraphicsViewZoom) // NOLINT
QGraphicsView *_view; QGraphicsView *_view;
Qt::KeyboardModifiers _modifiers; Qt::KeyboardModifiers _modifiers{Qt::ControlModifier};
double _zoom_factor_base; double _zoom_factor_base{1.0015};
QPointF target_scene_pos; QPointF target_scene_pos{};
QPointF target_viewport_pos; QPointF target_viewport_pos{};
QPointer<QTimeLine> verticalScrollAnim; QPointer<QTimeLine> verticalScrollAnim{};
/** @brief _numScheduledVerticalScrollings keep number scheduled vertical scrollings. */ /** @brief _numScheduledVerticalScrollings keep number scheduled vertical scrollings. */
qreal _numScheduledVerticalScrollings; qreal _numScheduledVerticalScrollings{0};
QPointer<QTimeLine> horizontalScrollAnim; QPointer<QTimeLine> horizontalScrollAnim{};
/** @brief _numScheduledHorizontalScrollings keep number scheduled horizontal scrollings. */ /** @brief _numScheduledHorizontalScrollings keep number scheduled horizontal scrollings. */
qreal _numScheduledHorizontalScrollings; qreal _numScheduledHorizontalScrollings{0};
void FictiveSceneRect(QGraphicsScene *sc, QGraphicsView *view); static void FictiveSceneRect(QGraphicsScene *sc, QGraphicsView *view);
void StartVerticalScrollings(QWheelEvent *wheel_event); void StartVerticalScrollings(QWheelEvent *wheel_event);
void StartHorizontalScrollings(QWheelEvent *wheel_event); void StartHorizontalScrollings(QWheelEvent *wheel_event);
@ -157,6 +159,7 @@ signals:
void itemClicked(QGraphicsItem *item); void itemClicked(QGraphicsItem *item);
void ScaleChanged(qreal scale); void ScaleChanged(qreal scale);
void ZoomFitBestCurrent(); void ZoomFitBestCurrent();
public slots: public slots:
void Zoom(qreal scale); void Zoom(qreal scale);
void ZoomIn(); void ZoomIn();
@ -176,12 +179,12 @@ protected:
private: private:
Q_DISABLE_COPY_MOVE(VMainGraphicsView) // NOLINT Q_DISABLE_COPY_MOVE(VMainGraphicsView) // NOLINT
GraphicsViewZoom *zoom; GraphicsViewZoom *zoom{nullptr};
bool showToolOptions; bool showToolOptions{true};
bool isAllowRubberBand; bool isAllowRubberBand{true};
QPoint m_ptStartPos; QPoint m_ptStartPos{};
QCursor m_oldCursor; QCursor m_oldCursor{};
Qt::CursorShape m_currentCursor; Qt::CursorShape m_currentCursor{Qt::ArrowCursor};
}; };
#endif // VMAINGRAPHICSVIEW_H #endif // VMAINGRAPHICSVIEW_H