changed 3D rendering

added pan/zoom gesture
This commit is contained in:
2018-02-04 17:02:14 +01:00
parent 3b62f23c0e
commit 076c0e9157
32 changed files with 446 additions and 484 deletions

View File

@@ -30,6 +30,11 @@ MapView2D::MapView2D(QWidget* parent) : QOpenGLWidget(parent) {
// defaults
s.setScale(5);
// android
setAttribute(Qt::WA_AcceptTouchEvents);
grabGesture(Qt::PanGesture);
grabGesture(Qt::PinchGesture);
}
void MapView2D::paintGL() {
@@ -92,3 +97,57 @@ void MapView2D::mouseReleaseEvent(QMouseEvent* e) {
tools.mouseReleaseEvent(this, e);
update();
}
// android
bool MapView2D::event(QEvent* event) {
if (event->type() == QEvent::Gesture) {
return gestureEvent(static_cast<QGestureEvent*>(event));
} else {
return QWidget::event(event);
}
}
bool MapView2D::gestureEvent(QGestureEvent* event) {
//qCDebug(lcExample) << "gestureEvent():" << event;
if (QGesture *swipe = event->gesture(Qt::SwipeGesture)) {
//swipeTriggered(static_cast<QSwipeGesture *>(swipe));
} else if (QGesture *pan = event->gesture(Qt::PanGesture))
panTriggered(static_cast<QPanGesture *>(pan));
if (QGesture *pinch = event->gesture(Qt::PinchGesture)) {
pinchTriggered(static_cast<QPinchGesture *>(pinch));
}
return true;
}
void MapView2D::pinchTriggered(QPinchGesture* gesture) {
tools.pinchTriggered(this, gesture);
update();
// QPinchGesture::ChangeFlags changeFlags = gesture->changeFlags();
// if (changeFlags & QPinchGesture::RotationAngleChanged) {
//// qreal rotationDelta = gesture->rotationAngle() - gesture->lastRotationAngle();
//// rotationAngle += rotationDelta;
//// qCDebug(lcExample) << "pinchTriggered(): rotate by" <<
//// rotationDelta << "->" << rotationAngle;
// }
// if (changeFlags & QPinchGesture::ScaleFactorChanged) {
//// currentStepScaleFactor = gesture->totalScaleFactor();
//// qCDebug(lcExample) << "pinchTriggered(): zoom by" <<
//// gesture->scaleFactor() << "->" << currentStepScaleFactor;
// std::cout << gesture->totalScaleFactor() << std::endl;
// }
// if (gesture->state() == Qt::GestureFinished) {
//// scaleFactor *= currentStepScaleFactor;
//// currentStepScaleFactor = 1;
// }
// update();
}
void MapView2D::panTriggered(QPanGesture* gesture) {
tools.panTriggered(this, gesture);
update();
}