qDebug() << __PRETTY_FUNCTION__ << "m_scenePosition:" << m_scenePosition;
- m_dragViewSpeed = m_mouseLastViewPosition - event->pos() ;
+ if (m_index >= VALUES)
+ m_index = 0;
+
+ m_dragMovement[m_index] = m_mouseLastViewPosition - event->pos();
+ m_dragTime[m_index] = time.elapsed();
+ time.start();
+
+ qWarning() << __PRETTY_FUNCTION__ << m_index << m_dragMovement[m_index].x() << m_dragMovement[m_index].y() << m_dragTime[m_index];
+
+ m_index++;
+
// qWarning() << __PRETTY_FUNCTION__ << m_dragViewSpeed.x() << m_dragViewSpeed.y();
+// qWarning() << __PRETTY_FUNCTION__ << "elapsed:" << time.elapsed() << "ms";
emit viewScrolled(m_scenePosition);
{
qDebug() << __PRETTY_FUNCTION__;
+ time.start();
+
m_scroller->stop();
QGraphicsView::mousePressEvent(event);
m_mouseLastViewPosition = event->pos();
m_scenePosition = mapToScene(width() / 2 - 1, height() / 2 - 1).toPoint();
- m_dragViewSpeed = QPoint();
+ for (int i = 0; i < VALUES; i++) {
+ m_dragMovement[i] = QPoint();
+ m_dragTime[i] = 0;
+ }
+ m_index = 0;
}
void MapView::mouseReleaseEvent(QMouseEvent *event)
QGraphicsView::mouseReleaseEvent(event);
- QPoint dragSceneSpeed = m_dragViewSpeed * (1 << (MAX_MAP_ZOOM_LEVEL - m_zoomLevel));
+ QPointF dragViewSpeed;
+ for (int i = 0; i < VALUES; i++) {
+ dragViewSpeed += m_dragMovement[i] / (m_dragTime[i] / 1000.0);
+ qWarning() << __PRETTY_FUNCTION__ << m_dragMovement[i].x() << m_dragMovement[i].y() << m_dragTime[i];
+ }
+ dragViewSpeed /= VALUES;
+ dragViewSpeed /= 5;
+
+ qWarning() << __PRETTY_FUNCTION__ << dragViewSpeed.x() << dragViewSpeed.y();
+
+ QPointF dragSceneSpeed = dragViewSpeed * (1 << (MAX_MAP_ZOOM_LEVEL - m_zoomLevel));
- m_scroller->setStartValue(m_scenePosition);
- m_scroller->setEndValue(m_scenePosition + dragSceneSpeed * 5);
m_scroller->setDuration(1000);
+ m_scroller->setStartValue(m_scenePosition);
+ m_scroller->setEndValue(m_scenePosition + dragSceneSpeed.toPoint());
m_scroller->start();
}