Touch Gesture position

presentation
Andreas Butti 7 years ago
parent 1786cfa6fa
commit 43cbcd4a8b
  1. 22
      src/control/zoom/ZoomControl.cpp
  2. 5
      src/control/zoom/ZoomControl.h
  3. 4
      src/control/zoom/ZoomGesture.cpp

@ -40,20 +40,16 @@ void ZoomControl::startZoomSequence(double centerX, double centerY)
{
XOJ_CHECK_TYPE(ZoomControl);
GtkWidget* widget = view->getWidget();
Layout* layout = gtk_xournal_get_layout(widget);
// Save visible rectangle at beginning of zoom
zoomSequenceRectangle = layout->getVisibleRect();
this->zoomCenterX = centerX - zoomSequenceRectangle.x;
this->zoomCenterY = centerY - zoomSequenceRectangle.y;
zoomSequenceRectangle = getVisibleRect();
// Scale to 100% zoom
zoomSequenceRectangle.x /= this->zoom;
zoomSequenceRectangle.y /= this->zoom;
zoomSequenceStart = this->zoom;
this->zoomCenterX = centerX;
this->zoomCenterY = centerY;
}
/**
@ -83,6 +79,16 @@ void ZoomControl::endZoomSequence()
zoomCenterY = -1;
}
/**
* Get visible rect on xournal view, for Zoom Gesture
*/
Rectangle ZoomControl::getVisibleRect()
{
GtkWidget* widget = view->getWidget();
Layout* layout = gtk_xournal_get_layout(widget);
return layout->getVisibleRect();
}
/**
* Zoom to correct position on zooming
*/

@ -83,6 +83,11 @@ public:
*/
void scrollToZoomPosition(XojPageView* view);
/**
* Get visible rect on xournal view, for Zoom Gesture
*/
Rectangle getVisibleRect();
protected:
void fireZoomChanged();
void fireZoomRangeValueChanged();

@ -61,7 +61,9 @@ void ZoomGesture::zoomBegin()
// get center of bounding box
gtk_gesture_get_bounding_box_center(GTK_GESTURE(gesture), &x, &y);
zoomControl->startZoomSequence(x, y);
Rectangle zoomSequenceRectangle = zoomControl->getVisibleRect();
zoomControl->startZoomSequence(x - zoomSequenceRectangle.x, y - zoomSequenceRectangle.y);
}
void ZoomGesture::zoomChanged(double zoom)

Loading…
Cancel
Save