From aaf857d071bea2491af4da09c6f761babb86cf38 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 2 Apr 2011 00:09:23 -0400 Subject: [PATCH] fix up panning code, now backwards --- SketchWidget.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/SketchWidget.py b/SketchWidget.py index cb7c170..befc84c 100644 --- a/SketchWidget.py +++ b/SketchWidget.py @@ -70,7 +70,7 @@ class SketchWidget: if not gldrawable.gl_begin(glcontext): return x, y, width, height = glarea.get_allocation() - self.size = (width, height) + self.size = (float(width), float(height)) glViewport(0, 0, width, height) glMatrixMode(GL_PROJECTION) @@ -114,19 +114,17 @@ class SketchWidget: def ptToScreenPt(self, pt): return ((pt[0] - self.view_center[0]) / self.view_width * self.size[0] + self.size[0] / 2, - (pt[1] - self.view_center[1]) / - (self.view_width * self.size[1] / self.size[0]) - * self.size[1] + self.size[1] / 2) + (pt[1] - self.view_center[1]) / self.view_width * self.size[0] + + self.size[1] / 2) def distToScreenDist(self, dist): return dist / self.view_width * self.size[0] def screenPtToPt(self, pt): - return ((pt[0] - self.size[0]) / self.size[0] * self.view_width - + self.view_center[0] / 2, - (pt[1] - self.size[1]) / self.size[1] * - (self.view_width * self.size[1] / self.size[0]) - + self.view_center[1] / 2) + return ((pt[0] - self.size[0] / 2) / self.size[0] * self.view_width + + self.view_center[0], + (pt[1] - self.size[1] / 2) / self.size[0] * self.view_width + + self.view_center[1]) def screenDistToDist(self, dist): return dist * self.size[0] / self.view_width @@ -202,7 +200,7 @@ class SketchWidget: def button_press_event(self, widget, event, data = None): if event.button == 2: self.panning = True - self.panning_start = (event.x, event.y) + self.panning_start = (event.x, self.size[1] - event.y) def button_release_event(self, widget, event, data = None): if event.button == 2: @@ -211,10 +209,10 @@ class SketchWidget: def motion_event(self, widget, event, data = None): if self.panning: start_pt = self.screenPtToPt(self.panning_start) - this_pt = self.screenPtToPt((event.x, event.y)) + this_pt = self.screenPtToPt((event.x, self.size[1] - event.y)) self.view_center = (self.view_center[0] + this_pt[0] - start_pt[0], self.view_center[1] + this_pt[1] - start_pt[1]) - self.panning_start = (event.x, event.y) + self.panning_start = (event.x, self.size[1] - event.y) self.widget.queue_draw_area(0, 0, self.size[0], self.size[1]) def scroll_event(self, widget, event, data = None):